pipeline_core/wwwroot/api/agent_chat_generic.dspy

49 lines
2.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# agent_chat_generic.dspy - 纯通用会话(不挂任何产线插件)
# 用于对照测试:确定通用 agent 本身的能力,隔离产线工具/技能/角色/记忆的干扰
# generic=True 时 gateway 跳过 resolve_project不 load_agent_config 产线能力,只用 GENERAL_TOOLS + 通用心智
import json
uid = await get_user()
if not uid:
uid = 'user-01'
action = (params_kw or {}).get('action', 'send_message')
if action == 'send_message':
prompt = (params_kw or {}).get('prompt', '') or ''
prompt = prompt.strip()
if not prompt:
return json.dumps({"error": "prompt 必填"}, ensure_ascii=False)
# 停止类指令
stop_kw = ['停止', '取消', '停下', '终止', '停', 'stop', 'cancel', 'abort']
if prompt.strip().lower() in stop_kw:
async def _stop():
yield json.dumps({"content": "已停止。"}, ensure_ascii=False) + '\n'
return await stream_response(request, _stop, 'text/plain; charset=utf-8')
from pipeline_service.gateway import get_gateway
gateway = get_gateway()
async def agent_stream():
async for chunk in gateway.run_message("web", uid, prompt, generic=True):
data = json.loads(chunk)
t = data.get('type', '')
if t == 'tool_call':
yield json.dumps({"content": "**🔧 调用: " + data.get('tool', '') + "**\n```\n" + json.dumps(data.get('params', {}), ensure_ascii=False) + "\n```\n\n"}, ensure_ascii=False) + '\n'
elif t == 'tool_result':
yield json.dumps({"content": data.get('result', '') + "\n\n"}, ensure_ascii=False) + '\n'
elif t == 'reply':
yield json.dumps({"content": data.get('message', '')}, ensure_ascii=False) + '\n'
elif t == 'ask_user':
yield json.dumps({"content": "❓ " + data.get('message', '')}, ensure_ascii=False) + '\n'
elif t == 'error':
yield json.dumps({"error": data.get('message', '')}, ensure_ascii=False) + '\n'
else:
yield json.dumps({"content": chunk}, ensure_ascii=False) + '\n'
return await stream_response(request, agent_stream, 'text/plain; charset=utf-8')
return json.dumps({"error": "Unknown action: " + str(action)}, ensure_ascii=False)