main
mula.liu 2026-03-11 03:26:03 +08:00
parent b0e8cd6514
commit 65a96a60dc
1 changed files with 17 additions and 10 deletions

View File

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