From 6365d65715880f4b0c73b535eb3b58e5064262f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=BD=AE?= Date: Fri, 27 Feb 2026 00:21:06 +0800 Subject: [PATCH] user_identifier --- routes/chat.py | 2 +- utils/api_models.py | 2 ++ utils/fastapi_utils.py | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/routes/chat.py b/routes/chat.py index 5faba27..1fb6e0e 100644 --- a/routes/chat.py +++ b/routes/chat.py @@ -751,7 +751,7 @@ async def chat_completions_v3(request: ChatRequestV3, authorization: Optional[st logger.warning(f"Invalid auth token provided for v3 API, but continuing anyway") # 从数据库获取机器人配置 - bot_config = await fetch_bot_config_from_db(bot_id) + bot_config = await fetch_bot_config_from_db(bot_id, request.user_identifier) # 构造类 v2 的请求格式 # 从数据库配置中提取参数 diff --git a/utils/api_models.py b/utils/api_models.py index e7154e8..e66e12e 100644 --- a/utils/api_models.py +++ b/utils/api_models.py @@ -75,11 +75,13 @@ class ChatRequestV3(BaseModel): - bot_id: Bot 的用户ID(用于从数据库查找配置) - messages: 对话消息列表 - session_id: 可选的会话ID + - user_identifier: 当前登录用户的用户名,用于标识用户身份 """ messages: List[Message] bot_id: str stream: Optional[bool] = False session_id: Optional[str] = None + user_identifier: Optional[str] = None class FileProcessRequest(BaseModel): diff --git a/utils/fastapi_utils.py b/utils/fastapi_utils.py index 09530ca..9325041 100644 --- a/utils/fastapi_utils.py +++ b/utils/fastapi_utils.py @@ -442,12 +442,13 @@ async def fetch_bot_config(bot_id: str) -> Dict[str, Any]: ) -async def fetch_bot_config_from_db(bot_user_id: str) -> Dict[str, Any]: +async def fetch_bot_config_from_db(bot_user_id: str, user_identifier: Optional[str] = None) -> Dict[str, Any]: """ 从本地数据库获取机器人配置 Args: bot_user_id: Bot 的用户ID(bot_id 字段,不是 UUID) + user_identifier: 当前登录用户的用户名。如果为空则使用 owner_id Returns: Dict[str, Any]: 包含所有配置参数的字典,格式与 fetch_bot_config 兼容 @@ -523,7 +524,7 @@ async def fetch_bot_config_from_db(bot_user_id: str) -> Dict[str, Any]: "language": settings_data.get("language", "zh"), "dataset_ids": settings_data.get("dataset_ids", []), "system_prompt": settings_data.get("system_prompt", ""), - "user_identifier": settings_data.get("user_identifier", ""), + "user_identifier": user_identifier if user_identifier else owner_id, "enable_memori": settings_data.get("enable_memori", False), "tool_response": settings_data.get("tool_response", True), "enable_thinking": settings_data.get("enable_thinking", False),