1. 精细化统计:cost_records 新增 calls/cached_tokens/latency_ms/first_token_ms;
用量明细报表(项目×智能体矩阵) + 成本报表细化(输入/输出/缓存命中/调用次数)
2. 从参考项目中新建:内置3个测试项目(文案/Python/调研),一键复制目标+任务
3. 大模型接口库(llm_endpoints):专门配置接口(地址/密钥/模型/定价),
计费支持按token(逐模型)与按调用次数;创建AI Worker直接选用;
AI Worker团队(worker_teams):打包Worker,对话/建项目可直接选团队
4. 对话导航融合仪表盘:可选大模型/AI Worker/团队,默认主力AI Worker(⭐可设),SSE流式
5. 系统工作目录:默认data/workspace可改绝对路径;项目与多Agent协作均在其下
建唯一工作目录;手动输入目录已存在则列出信息并需手动确认
6. 任务执行超时改为流式单token返回超时+首字延迟超时,设置页可配;
所有模型输出SSE按token接收
112 lines
4.6 KiB
Python
112 lines
4.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
AI Worker 项目管理平台 - 配置文件
|
|
"""
|
|
import os
|
|
|
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
DATA_DIR = os.path.join(BASE_DIR, 'data')
|
|
LOG_DIR = os.path.join(BASE_DIR, 'logs')
|
|
STATIC_DIR = os.path.join(BASE_DIR, 'static')
|
|
|
|
for d in (DATA_DIR, LOG_DIR):
|
|
os.makedirs(d, exist_ok=True)
|
|
|
|
DB_PATH = os.path.join(DATA_DIR, 'aiworker.db')
|
|
HOST = '0.0.0.0'
|
|
PORT = 16071
|
|
|
|
# 登录口令(留空则关闭登录校验)
|
|
AUTH_PASSWORD = 'admin123'
|
|
SECRET_KEY = 'ai-worker-platform-mvp-secret-key-20260812'
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# 模型供应商网关(OpenAI 兼容协议)
|
|
# api_key 留空则使用 os.environ.get('<NAME>_API_KEY')
|
|
# ---------------------------------------------------------------------------
|
|
PROVIDERS = {
|
|
'doubao': {
|
|
'name': '火山方舟 Doubao',
|
|
'base_url': 'https://ark.cn-beijing.volces.com/api/plan/v3',
|
|
'api_key': os.environ.get('DOUBAO_API_KEY', 'ark-2b06dc9d-8878-4c6e-b201-f422376e79cb-246d9'),
|
|
'timeout': 600,
|
|
},
|
|
'deepseek': {
|
|
'name': 'DeepSeek',
|
|
'base_url': 'https://api.deepseek.com',
|
|
'api_key': os.environ.get('DEEPSEEK_API_KEY', 'sk-edb9df58ff574f8c98df1cd6a425e97c'),
|
|
'timeout': 600,
|
|
},
|
|
'autodl': {
|
|
'name': 'AutoDL 多模态(视觉)',
|
|
'base_url': 'https://www.autodl.art/api/v1',
|
|
'api_key': os.environ.get('AUTODL_API_KEY', 'F9MBfolzuapqTsD4KmUf9qen720rXvUZ3Sp3IrWiCTukqonx'),
|
|
'timeout': 600,
|
|
},
|
|
'openai': {
|
|
'name': 'OpenAI',
|
|
'base_url': 'https://api.openai.com/v1',
|
|
'api_key': os.environ.get('OPENAI_API_KEY', ''),
|
|
'timeout': 600,
|
|
},
|
|
'qwen': {
|
|
'name': '阿里云通义千问',
|
|
'base_url': 'https://dashscope.aliyuncs.com/compatible-mode/v1',
|
|
'api_key': os.environ.get('QWEN_API_KEY', ''),
|
|
'timeout': 600,
|
|
},
|
|
'vllm': {
|
|
'name': '本地 vLLM(自定义地址)',
|
|
'base_url': os.environ.get('VLLM_BASE_URL', 'http://127.0.0.1:8000/v1'),
|
|
'api_key': os.environ.get('VLLM_API_KEY', 'EMPTY'),
|
|
'timeout': 600,
|
|
},
|
|
}
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# 模型定价(元 / 1M tokens),用于成本记账;未登记模型走默认价
|
|
# ---------------------------------------------------------------------------
|
|
MODEL_PRICING = {
|
|
'doubao-seed-evolving': {'input': 2.0, 'output': 8.0},
|
|
'doubao-seed-1-6-250615': {'input': 2.0, 'output': 8.0},
|
|
'doubao-pro-32k': {'input': 2.0, 'output': 8.0},
|
|
'deepseek-chat': {'input': 2.0, 'output': 8.0},
|
|
'deepseek-reasoner': {'input': 4.0, 'output': 16.0},
|
|
'deepseek-v4-flash': {'input': 0.2, 'output': 0.6},
|
|
'gpt-4o': {'input': 17.5, 'output': 70.0},
|
|
'gpt-4o-mini': {'input': 1.1, 'output': 4.4},
|
|
'qwen-plus': {'input': 0.8, 'output': 2.0},
|
|
'qwen-max': {'input': 4.0, 'output': 12.0},
|
|
'qwen3.6-plus': {'input': 2.0, 'output': 8.0},
|
|
}
|
|
DEFAULT_PRICE = {'input': 2.0, 'output': 8.0}
|
|
|
|
# 引擎参数
|
|
MAX_RETRY = 1 # 失败重试次数(429/5xx/网络错误)
|
|
TASK_TIMEOUT = 600 # 单任务整体超时兜底(秒)
|
|
# V3.5 流式输出超时(可在 设置 页面修改,运行时读 settings 表)
|
|
TOKEN_TIMEOUT = 60 # 单 token 返回超时:相邻两个 token 数据块的最大间隔(秒)
|
|
FIRST_TOKEN_TIMEOUT = 120 # 首字延迟超时:请求发出后首个数据块的最长等待(秒)
|
|
|
|
# 预算告警阈值(项目预算使用率 >= 该值触发告警)
|
|
BUDGET_ALERT_RATIO = 0.8
|
|
|
|
# 邮件通知配置(可选,留空 host 则禁用)
|
|
EMAIL = {
|
|
'host': os.environ.get('SMTP_HOST', 'mail.tphai.com'),
|
|
'port': int(os.environ.get('SMTP_PORT', 587)),
|
|
'starttls': os.environ.get('SMTP_STARTTLS', '0') == '1',
|
|
'user': os.environ.get('SMTP_USER', 'hz4th_coder@tphai.com'),
|
|
'password': os.environ.get('SMTP_PASSWORD', 'hz4th_coder@!'),
|
|
'from_name': 'AI Worker 平台',
|
|
}
|
|
|
|
# 公网访问地址(Demo 链接/邮件中的回链基准;留空则用请求 host)
|
|
PUBLIC_BASE_URL = os.environ.get('PUBLIC_BASE_URL', 'http://121.40.164.32:16071')
|
|
|
|
# 默认系统工作目录(绝对路径;可在 设置 页面修改,项目与多 Agent 协作均在此下建独立子目录)
|
|
DEFAULT_WORKSPACE_ROOT = os.path.join(DATA_DIR, 'workspace')
|
|
|
|
# 自动路由:按模型单价升序挑选可用 Worker
|
|
AUTO_ROUTE_POOL = 'enabled' # enabled | all
|