diff --git a/backend/main.py b/backend/main.py index ee006ca..d7b6039 100644 --- a/backend/main.py +++ b/backend/main.py @@ -2276,33 +2276,40 @@ def send_command(bot_id: str, payload: CommandRequest, session: Session = Depend display_command = command if command else "[attachment message]" delivery_command = display_command if checked_attachments: + attachment_block = "\n".join(f"- {p}" for p in checked_attachments) all_visual = all(_is_visual_attachment_path(p) for p in checked_attachments) if all_visual: has_video = any(_is_video_attachment_path(p) for p in checked_attachments) media_label = "图片/视频" if has_video else "图片" + capability_hint = ( + "1) 附件已随请求附带;图片在可用时可直接作为多模态输入理解,视频请按附件路径处理。\n" + if has_video + else "1) 附件中的图片已作为多模态输入提供,优先直接理解并回答。\n" + ) if command: delivery_command = ( f"{command}\n\n" + "[Attached files]\n" + f"{attachment_block}\n\n" "【附件处理要求】\n" - f"1) 附件中的{media_label}已作为多模态输入提供,优先直接理解并回答。\n" - "2) 若当前模型无法直接理解图片或视频,必须先明确回复:" - "\"无法直接理解该图片/视频,正在调用工具解析。\"。\n" - "3) 在给出上述提示后,再调用工具解析附件并继续完成用户任务。\n" - "4) 除非用户明确要求,不要先调用工具读取附件文件。\n" - "5) 回复语言必须遵循 USER.md;若未指定,则与用户当前输入语言保持一致。\n" - "6) 仅基于可见内容回答;看不清或无法确认的部分请明确说明,不要猜测。" + f"{capability_hint}" + "2) 若当前模型或接口不支持直接理解该附件,请明确说明后再调用工具解析。\n" + "3) 除非用户明确要求,不要先调用工具读取附件文件。\n" + "4) 回复语言必须遵循 USER.md;若未指定,则与用户当前输入语言保持一致。\n" + "5) 仅基于可见内容回答;看不清或无法确认的部分请明确说明,不要猜测。" ) else: delivery_command = ( + "请先处理已附带的附件列表:\n" + f"{attachment_block}\n\n" f"请直接分析已附带的{media_label}并总结关键信息。\n" - "若当前模型无法直接理解图片或视频,请先明确回复:" - "\"无法直接理解该图片/视频,正在调用工具解析。\",然后再调用工具解析。\n" + f"{'图片在可用时可直接作为多模态输入理解,视频请按附件路径处理。' if has_video else ''}\n" + "若当前模型或接口不支持直接理解该附件,请明确说明后再调用工具解析。\n" "回复语言必须遵循 USER.md;若未指定,则与用户当前输入语言保持一致。\n" "仅基于可见内容回答;看不清或无法确认的部分请明确说明,不要猜测。" ) else: command_has_paths = all(p in command for p in checked_attachments) if command else False - attachment_block = "\n".join(f"- {p}" for p in checked_attachments) if command and not command_has_paths: delivery_command = ( f"{command}\n\n"