suport dataset_ids
This commit is contained in:
parent
29a3a17d28
commit
432fb214d4
@ -419,23 +419,25 @@ async def chat_completions(request: ChatRequest, authorization: Optional[str] =
|
|||||||
Chat completions API similar to OpenAI, supports both streaming and non-streaming
|
Chat completions API similar to OpenAI, supports both streaming and non-streaming
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
request: ChatRequest containing messages, model, dataset_ids (required list), required bot_id, system_prompt, mcp_settings, and files
|
request: ChatRequest containing messages, model, dataset_ids (optional list), required bot_id, system_prompt, mcp_settings, and files
|
||||||
authorization: Authorization header containing API key (Bearer <API_KEY>)
|
authorization: Authorization header containing API key (Bearer <API_KEY>)
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Union[ChatResponse, StreamingResponse]: Chat completion response or stream
|
Union[ChatResponse, StreamingResponse]: Chat completion response or stream
|
||||||
|
|
||||||
Notes:
|
Notes:
|
||||||
- dataset_ids: 必需参数,必须是项目ID列表(单个项目也使用数组格式)
|
- dataset_ids: 可选参数,当提供时必须是项目ID列表(单个项目也使用数组格式)
|
||||||
- bot_id: 必需参数,机器人ID,用于创建项目目录
|
- bot_id: 必需参数,机器人ID,用于创建项目目录
|
||||||
- 所有请求都会创建机器人项目目录:projects/robot/{bot_id}/
|
- 只有当提供 dataset_ids 时才会创建机器人项目目录:projects/robot/{bot_id}/
|
||||||
- 支持多知识库合并,自动处理文件夹重名冲突
|
- 支持多知识库合并,自动处理文件夹重名冲突
|
||||||
|
|
||||||
Required Parameters:
|
Required Parameters:
|
||||||
- dataset_ids: List[str] - 源知识库项目ID列表(单个项目也使用数组格式)
|
|
||||||
- bot_id: str - 目标机器人项目ID
|
- bot_id: str - 目标机器人项目ID
|
||||||
|
Optional Parameters:
|
||||||
|
- dataset_ids: List[str] - 源知识库项目ID列表(单个项目也使用数组格式)
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
{"bot_id": "my-bot-001"}
|
||||||
{"dataset_ids": ["project-123"], "bot_id": "my-bot-001"}
|
{"dataset_ids": ["project-123"], "bot_id": "my-bot-001"}
|
||||||
{"dataset_ids": ["project-123", "project-456"], "bot_id": "my-bot-002"}
|
{"dataset_ids": ["project-123", "project-456"], "bot_id": "my-bot-002"}
|
||||||
"""
|
"""
|
||||||
@ -449,17 +451,17 @@ async def chat_completions(request: ChatRequest, authorization: Optional[str] =
|
|||||||
else:
|
else:
|
||||||
api_key = authorization
|
api_key = authorization
|
||||||
|
|
||||||
# 获取dataset_ids(必需参数,必须是数组)
|
|
||||||
dataset_ids_list = request.dataset_ids
|
|
||||||
if not dataset_ids_list:
|
|
||||||
raise HTTPException(status_code=400, detail="dataset_ids is required and must be a non-empty list")
|
|
||||||
|
|
||||||
# 获取bot_id(必需参数)
|
# 获取bot_id(必需参数)
|
||||||
bot_id = request.bot_id
|
bot_id = request.bot_id
|
||||||
if not bot_id:
|
if not bot_id:
|
||||||
raise HTTPException(status_code=400, detail="bot_id is required")
|
raise HTTPException(status_code=400, detail="bot_id is required")
|
||||||
|
|
||||||
# 创建机器人目录并合并数据
|
# 获取dataset_ids(可选参数,当提供时必须是数组)
|
||||||
|
dataset_ids_list = request.dataset_ids
|
||||||
|
project_dir = None
|
||||||
|
|
||||||
|
# 只有当提供了 dataset_ids 时才创建机器人目录并合并数据
|
||||||
|
if dataset_ids_list and len(dataset_ids_list) > 0:
|
||||||
from utils.multi_project_manager import create_robot_project
|
from utils.multi_project_manager import create_robot_project
|
||||||
project_dir = create_robot_project(dataset_ids_list, bot_id)
|
project_dir = create_robot_project(dataset_ids_list, bot_id)
|
||||||
|
|
||||||
|
|||||||
@ -92,7 +92,7 @@ class FileLoadedAgentManager:
|
|||||||
|
|
||||||
async def get_or_create_agent(self,
|
async def get_or_create_agent(self,
|
||||||
bot_id: str,
|
bot_id: str,
|
||||||
project_dir: str,
|
project_dir: Optional[str],
|
||||||
model_name: str = "qwen3-next",
|
model_name: str = "qwen3-next",
|
||||||
api_key: Optional[str] = None,
|
api_key: Optional[str] = None,
|
||||||
model_server: Optional[str] = None,
|
model_server: Optional[str] = None,
|
||||||
@ -105,7 +105,7 @@ class FileLoadedAgentManager:
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
bot_id: 项目的唯一标识符
|
bot_id: 项目的唯一标识符
|
||||||
project_dir: 项目目录路径,用于读取system_prompt.md和mcp_settings.json
|
project_dir: 项目目录路径,用于读取system_prompt.md和mcp_settings.json,可以为None
|
||||||
model_name: 模型名称
|
model_name: 模型名称
|
||||||
api_key: API 密钥
|
api_key: API 密钥
|
||||||
model_server: 模型服务器地址
|
model_server: 模型服务器地址
|
||||||
|
|||||||
@ -25,7 +25,7 @@ def load_system_prompt(project_dir: str, language: str = None, system_prompt: st
|
|||||||
优先使用项目目录的system_prompt_catalog_agent.md,没有才使用默认的system_prompt_default.md
|
优先使用项目目录的system_prompt_catalog_agent.md,没有才使用默认的system_prompt_default.md
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
project_dir: 项目目录路径
|
project_dir: 项目目录路径,可以为None
|
||||||
language: 语言代码,如 'zh', 'en', 'jp' 等(此参数将被忽略)
|
language: 语言代码,如 'zh', 'en', 'jp' 等(此参数将被忽略)
|
||||||
system_prompt: 可选的系统提示词,优先级高于项目配置
|
system_prompt: 可选的系统提示词,优先级高于项目配置
|
||||||
robot_type: 机器人类型,取值 AGENT/CATALOG_AGENT
|
robot_type: 机器人类型,取值 AGENT/CATALOG_AGENT
|
||||||
@ -45,6 +45,8 @@ def load_system_prompt(project_dir: str, language: str = None, system_prompt: st
|
|||||||
system_prompt_default = None
|
system_prompt_default = None
|
||||||
|
|
||||||
readme = ""
|
readme = ""
|
||||||
|
# 只有当 project_dir 不为 None 时才尝试读取 README.md
|
||||||
|
if project_dir is not None:
|
||||||
readme_path = os.path.join(project_dir, "README.md")
|
readme_path = os.path.join(project_dir, "README.md")
|
||||||
if os.path.exists(readme_path):
|
if os.path.exists(readme_path):
|
||||||
with open(readme_path, "r", encoding="utf-8") as f:
|
with open(readme_path, "r", encoding="utf-8") as f:
|
||||||
@ -154,8 +156,10 @@ def load_mcp_settings(project_dir: str, mcp_settings: list=None, bot_id: str="",
|
|||||||
merged_settings = [merged_settings] if merged_settings else []
|
merged_settings = [merged_settings] if merged_settings else []
|
||||||
|
|
||||||
# 计算 dataset_dir 用于替换 MCP 配置中的占位符
|
# 计算 dataset_dir 用于替换 MCP 配置中的占位符
|
||||||
dataset_dir = os.path.join(project_dir, "dataset")
|
# 只有当 project_dir 不为 None 时才计算 dataset_dir
|
||||||
|
dataset_dir = os.path.join(project_dir, "dataset") if project_dir is not None else None
|
||||||
# 替换 MCP 配置中的 {dataset_dir} 占位符
|
# 替换 MCP 配置中的 {dataset_dir} 占位符
|
||||||
|
if dataset_dir is not None:
|
||||||
merged_settings = replace_mcp_placeholders(merged_settings, dataset_dir, bot_id)
|
merged_settings = replace_mcp_placeholders(merged_settings, dataset_dir, bot_id)
|
||||||
return merged_settings
|
return merged_settings
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user