From 2dca775911fd61edc580f96c2a4163067b2e88c2 Mon Sep 17 00:00:00 2001 From: hubian <908234780@qq.com> Date: Tue, 14 Apr 2026 09:21:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E6=A8=A1=E6=80=81=E6=94=AF?= =?UTF-8?q?=E6=8C=81=20-=20=E5=9B=BE=E7=89=87=E6=95=B0=E6=8D=AE=E4=BC=A0?= =?UTF-8?q?=E9=80=92=E7=BB=99=E8=A7=86=E8=A7=89=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main_v2.py | 3 ++- services/llm_service.py | 26 +++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/main_v2.py b/main_v2.py index feba861..1eb6fde 100644 --- a/main_v2.py +++ b/main_v2.py @@ -969,7 +969,8 @@ async def websocket_endpoint(websocket: WebSocket, user_id: str): messages=history, provider_config=agent_config['provider'], agent_config=agent_config['agent'], - enable_thinking=enable_thinking + enable_thinking=enable_thinking, + images=image_contents # 传递图片数据给多模态模型 ) logger.info(f"LLM响应: response长度={len(response)}, thinking长度={len(thinking_content) if thinking_content else 0}") diff --git a/services/llm_service.py b/services/llm_service.py index 633a6b5..36d2b6b 100644 --- a/services/llm_service.py +++ b/services/llm_service.py @@ -98,11 +98,19 @@ class LLMService: messages: List[Dict], provider_config: dict, agent_config: dict, - enable_thinking: bool = True + enable_thinking: bool = True, + images: List[Dict] = None # 图片数据列表 [{'name', 'type', 'data': base64}] ) -> Tuple[str, Optional[str]]: """ 调用AI模型进行对话 + Args: + messages: 对话历史 + provider_config: LLM Provider配置 + agent_config: Agent配置 + enable_thinking: 是否启用思考 + images: 图片数据列表(用于多模态模型) + Returns: Tuple[str, Optional[str]]: (回复内容, 思考过程) """ @@ -123,6 +131,22 @@ class LLMService: if final_messages and final_messages[0]['role'] != 'system': final_messages.insert(0, {"role": "system", "content": system_prompt}) + # 如果有图片,构建多模态消息(只修改最后一条用户消息) + if images and len(images) > 0: + # 找到最后一条用户消息 + for i in range(len(final_messages) - 1, -1, -1): + if final_messages[i]['role'] == 'user': + original_text = final_messages[i]['content'] + # 构建多模态内容 + multimodal_content = [{"type": "text", "text": original_text if original_text else "请描述这张图片"}] + for img in images: + multimodal_content.append({ + "type": "image_url", + "image_url": {"url": img['data']} # base64 data URL + }) + final_messages[i]['content'] = multimodal_content + break + thinking_content = None # 处理思考功能