ling-playground / config.py
cafe3310's picture
feat: Initial clean commit
a9fb7e9
raw
history blame
11.2 kB
"""
Configuration file for the Ling & Ring Playground application.
This file centralizes all the configuration variables, such as API endpoints,
API keys, and system prompts for different functionalities.
"""
import os
# --- API Configuration ---
# This follows a layered configuration strategy.
# 1. It first tries to import configurations from a local `local.py` file.
# This file is intended for local development and is ignored by Git.
# 2. If `local.py` is not found, it falls back to environment variables,
# which is ideal for production environments like Hugging Face Spaces.
try:
# For local development: create a local.py file with your credentials.
# Example local.py:
# ANTCHAT_BASE_URL = "http://your-local-endpoint/v1"
# ANTCHAT_API_KEY = "your-local-api-key"
from local import ANTCHAT_BASE_URL, ANTCHAT_API_KEY
print("✅ Loaded configuration from local.py")
except ImportError:
# For production/HF Spaces: set these as environment variables.
print("🤔 `local.py` not found. Attempting to load configuration from environment variables.")
ANTCHAT_BASE_URL = os.getenv("ANTCHAT_BASE_URL")
ANTCHAT_API_KEY = os.getenv("ANTCHAT_API_KEY")
# A check to ensure that the credentials are not None.
if not ANTCHAT_BASE_URL or not ANTCHAT_API_KEY:
print("⚠️ Warning: ANTCHAT_BASE_URL or ANTCHAT_API_KEY is not set. The application may not function correctly.")
# --- System Prompts ---
# For the Chat tab
CHAT_SYSTEM_PROMPT_PLACEHOLDER = "e.g., You are a helpful assistant."
# For the Code Generation tab
CODE_SYSTEM_PROMPT = "You are an expert code generation assistant. Generate clean, efficient code based on the user's request. Only output the code itself inside a markdown block. Do not add any other explanation."
# Code generation options with different system prompts
CODE_SYSTEM_PROMPTS = {
"html": "You are an expert HTML/CSS/JavaScript developer. Generate clean, semantic HTML code with inline CSS and JavaScript. Only output the complete HTML code inside a markdown block. Do not add any other explanation.",
"python": "You are an expert Python developer. Generate clean, efficient Python code. Only output the code inside a markdown block with python syntax. Do not add any other explanation.",
"javascript": "You are an expert JavaScript developer. Generate clean, efficient JavaScript code. Only output the code inside a markdown block with javascript syntax. Do not add any other explanation.",
"sql": "You are an expert SQL developer. Generate clean, efficient SQL queries. Only output the SQL code inside a markdown block. Do not add any other explanation.",
"general": CODE_SYSTEM_PROMPT
}
# For the Web Search tab
SEARCH_SYSTEM_PROMPT = "You are an expert web search assistant. You will be provided with a user query. Perform a web search and provide a concise summary of the findings, including key points and source links."
# For the Workflow Generation
WORKFLOW_GENERATE_SYSTEM_PROMPT = "You are a workflow analysis agent. Analyze the user's description and break it down into a numbered list of executable steps. Be precise and clear."
# For the Workflow Execution
WORKFLOW_EXECUTE_SYSTEM_PROMPT = "You are a workflow execution assistant. Your goal is to guide the user step-by-step through the predefined workflow. At each step, clearly state the task and ask for confirmation or necessary input to proceed."
# --- Model Specifications ---
CHAT_MODEL_SPECS = {
"inclusionai/ling-1t": {
"model_id": "inclusionai/ling-1t",
"display_name": "🧠 Ling-1T (1T)",
"description": "一款万亿级参数的大语言模型,为追求极致性能和高流畅度的复杂自然语言理解与生成任务而设计。",
"prompt_scenarios": [
{
"title": "深度分析报告撰写",
"system_prompt": "你是一位资深的行业分析师,能够撰写逻辑清晰、数据充分、观点独到的深度分析报告。",
"message_examples": [
"撰写一篇关于人工智能在医疗领域应用的深度分析报告,至少800字。",
"分析当前宏观经济形势,并预测未来一年的发展趋势。",
"为一家新成立的科技公司制定一份详细的品牌推广策略。"
]
},
{
"title": "莎士比亚风格文案",
"system_prompt": "你是一位模仿大师,能够以威廉·莎士比亚的风格和口吻进行文学创作。",
"message_examples": [
"以莎士比亚的风格,写一段关于“代码”的独白。",
"假如哈姆雷特是一个程序员,他会如何抱怨一个难缠的 bug?",
"把“用户体验”这个词用十四行诗的形式表达出来。"
]
}
]
},
"inclusionai/ling-flash-2.0": {
"model_id": "inclusionai/ling-flash-2.0",
"display_name": "🧠 Ling-flash-2.0 (103B)",
"description": "一款性能卓越的十亿级参数模型,专为需要高速响应和复杂指令遵循的场景优化。",
"prompt_scenarios": [
{
"title": "技术文档撰写",
"system_prompt": "你是一位专业的技术作家,能够清晰、准确地解释复杂的技术概念。",
"message_examples": [
"为一段新的 API 端点编写清晰的文档。",
"解释一下什么是 'Transformer' 架构。",
"如何为开源项目编写一份贡献指南?"
]
},
{
"title": "创意头脑风暴",
"system_prompt": "你是一位充满创意的伙伴,可以进行头脑风暴并提供新颖的想法。",
"message_examples": [
"为一个新的播客想 5 个吸引人的名字。",
"我应该为我的博客写些什么内容?",
"想一个关于时间旅行的短篇故事点子。"
]
}
]
},
"inclusionai/ring-flash-2.0": {
"model_id": "inclusionai/ring-flash-2.0",
"display_name": "💍 Ring-flash-2.0 (103B)",
"description": "一款十亿级参数的推理模型,在性能和成本之间取得了很好的平衡,适合需要逐步思考或生成代码的通用任务。",
"prompt_scenarios": [
{
"title": "旅行规划专家",
"system_prompt": "你是一位经验丰富的旅行规划师,精通全球各地的旅行路线、交通和预算规划。",
"message_examples": [
"规划一个为期五天的日本东京自由行,包含详细的每日行程、交通和预算。",
"我应该如何选择我的第一把电吉他?请给出步骤和建议。",
"为我的周末家庭聚餐推荐三个菜谱。"
]
},
{
"title": "Python 脚本生成器",
"system_prompt": "你是一位 Python 编程专家,能够根据需求生成高质量、可执行的 Python 脚本。",
"message_examples": [
"生成一个 Python 脚本,监控网站价格变化并在降价时发邮件提醒。",
"写一个 Python 函数,用于计算两个日期之间相差了多少天。",
"用 Python 实现一个简单的命令行计算器。"
]
}
]
},
"inclusionai/ling-mini-2.0": {
"model_id": "inclusionai/ling-mini-2.0",
"display_name": "🧠 Ling-mini-2.0 (16B)",
"description": "一款轻量级对话模型,经过优化,可在消费级硬件上高效运行,非常适合移动端或本地化部署场景。",
"prompt_scenarios": [
{
"title": "高效邮件助手",
"system_prompt": "你是一位专业的行政助理,擅长撰写清晰、简洁、专业的电子邮件。",
"message_examples": [
"给我写一封简短的邮件,提醒团队成员明天上午10点开会。",
"草拟一封邮件,向客户询问项目进展。",
"帮我写一封得体的拒绝信,回复一个不合适的合作邀请。"
]
},
{
"title": "文本摘要与翻译",
"system_prompt": "你是一位语言专家,能够快速准确地进行文本摘要和多语言翻译。",
"message_examples": [
"总结这篇新闻的主要内容,不超过三句话。",
"将这段英文翻译成中文:'Gradio is an open-source Python library...'",
"推荐三部适合周末看的科幻电影。"
]
}
]
},
"inclusionai/ring-mini-2.0": {
"model_id": "inclusionai/ring-mini-2.0",
"display_name": "💍 Ring-mini-2.0 (3B)",
"description": "一款经过量化、极致高效的推理模型,为速度和效率要求严苛的资源受限环境(如边缘计算)而设计。",
"prompt_scenarios": [
{
"title": "生活日常助手",
"system_prompt": "你是一位乐于助人的生活助手,可以处理各种日常请求。",
"message_examples": [
"帮我设置一个25分钟的番茄钟。",
"在我的购物清单里加入牛奶和面包。",
"查询今天北京的天气。"
]
},
{
"title": "简单代码片段",
"system_prompt": "你是一位代码片段生成器,为常见的编程问题提供简洁、正确的代码示例。",
"message_examples": [
"提供一个用 JavaScript 实现的 GET 请求示例。",
"如何用 CSS 让一个 div 水平居中?",
"从1数到10。"
]
}
]
}
}
# --- Local Model ID Mapping Override ---
# Attempt to import a mapping from online model IDs to local model IDs
# from local.py. This allows developers to use different model names for
# local testing without changing the core application code.
try:
from local import get_local_model_id_map
local_model_id_map = get_local_model_id_map()
for model_id, spec in CHAT_MODEL_SPECS.items():
if model_id in local_model_id_map:
spec['model_id'] = local_model_id_map[model_id]
print(f"🔄 Overrode model ID for '{model_id}': '{model_id}' -> '{spec['model_id']}'")
except ImportError:
# local.py does not exist or does not contain the mapping function.
# This is expected in a production environment.
pass
except Exception as e:
print(f"⚠️ Warning: Failed to apply local model ID mapping. Error: {e}")