feat: support per-request skills override in v3 chat API
Allow the frontend to inject extra skills (merged with the bot's default skills) for a single request. Used by the home/chat pages to enable ragflow-loader when the user selects a knowledge base.
This commit is contained in:
parent
72a5a0f63a
commit
6f2af8ecbf
@ -938,10 +938,18 @@ async def chat_completions_v3(request: ChatRequestV3, authorization: Optional[st
|
||||
# 从数据库获取机器人配置
|
||||
bot_config = await fetch_bot_config_from_db(bot_id, request.user_identifier)
|
||||
|
||||
# 允许前端通过请求体覆盖 model_id / dataset_ids(仅本次请求生效,不写库;
|
||||
# 允许前端通过请求体覆盖 model_id / dataset_ids / skills(仅本次请求生效,不写库;
|
||||
# 用于只读配置的 bot,如 general-agent 静态 json 配置)。
|
||||
if request.dataset_ids is not None:
|
||||
bot_config["dataset_ids"] = request.dataset_ids
|
||||
if request.skills is not None:
|
||||
# 合并去重:保留 bot 原有 skills,把前端传入的追加到末尾
|
||||
# (避免覆盖丢失 bot 默认的工具类 skill,例如 docx/pdf/baidu-search)
|
||||
existing_skills = list(bot_config.get("skills", []) or [])
|
||||
for skill in request.skills:
|
||||
if skill not in existing_skills:
|
||||
existing_skills.append(skill)
|
||||
bot_config["skills"] = existing_skills
|
||||
|
||||
# 构造类 v2 的请求格式
|
||||
# 从数据库配置中提取参数
|
||||
|
||||
@ -89,6 +89,7 @@ class ChatRequestV3(BaseModel):
|
||||
可选覆盖项(仅本次请求生效,不写库;用于只读配置的 bot,如 general-agent):
|
||||
- model_id: 模型 ID,覆盖数据库配置
|
||||
- dataset_ids: 数据集 ID 列表,覆盖数据库配置
|
||||
- skills: 技能列表,覆盖数据库配置(例如前端选了知识库时注入 ragflow-loader)
|
||||
"""
|
||||
messages: List[Message]
|
||||
bot_id: str
|
||||
@ -97,6 +98,7 @@ class ChatRequestV3(BaseModel):
|
||||
user_identifier: Optional[str] = None
|
||||
model_id: Optional[str] = None
|
||||
dataset_ids: Optional[List[str]] = None
|
||||
skills: Optional[List[str]] = None
|
||||
|
||||
|
||||
class VisionMessage(BaseModel):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user