# -*- coding: utf-8 -*- """开放问答接口 /api/open/chat 测试脚本(Jupyter 版)。 接口只返回「最终结果」:智能体把调研 / 工具调用全部跑完后,只把最后那段 文本(markdown)放在 answer 字段里返回 —— 不含中间过程、工具调用、思考。 用法:在 Jupyter 里把下面几段按顺序运行即可。 - 「配置」段:改成你要的模型 / 智能体 / 问题 / 是否思考 - 「调用」段:运行后 answer 变量就是最终 md 文本 无第三方依赖(纯标准库 urllib)。 """ import json import time import urllib.error import urllib.request # ====================== 配置(按需修改这里) ====================== BASE_URL = "http://47.94.209.59:2026" # 后端地址(走 nginx 用 :2026,Gateway 直连用 :8001) MESSAGE = "帮我调研一下 XXX,输出 markdown 报告。" # 要问的问题 MODEL_NAME = None # 模型名(config.yaml models[].name);None=默认模型 AGENT_NAME = None # 智能体中文名称;None=默认 lead agent。不确定填啥就先跑下面的「列出智能体」 THINKING_ENABLED = False # False=关闭思考(内网模型也会被强制关闭);True=开启 TIMEOUT = 600 # 请求超时(秒) # =============================================================== def open_chat(message, model_name=None, agent_name=None, thinking_enabled=False, base_url=BASE_URL, timeout=TIMEOUT): """调用 /api/open/chat,返回最终 md 文本(只要结果,不要过程)。""" url = base_url.rstrip("/") + "/api/open/chat" payload = { "message": message, "model_name": model_name, "agent_name": agent_name, # 按中文名称选智能体 "thinking_enabled": thinking_enabled, } data = json.dumps(payload, ensure_ascii=False).encode("utf-8") req = urllib.request.Request( url, data=data, headers={"Content-Type": "application/json; charset=utf-8"}, method="POST", ) with urllib.request.urlopen(req, timeout=timeout) as resp: result = json.loads(resp.read().decode("utf-8")) return result["answer"] # 只返回最终结果 # ====================== (可选)列出可用智能体名称 ====================== # 不知道 AGENT_NAME 填什么时,先跑这段看有哪些中文名: # import urllib.request, json # with urllib.request.urlopen(BASE_URL.rstrip("/") + "/api/open/agents", timeout=30) as r: # for a in json.loads(r.read().decode("utf-8"))["agents"]: # print(a["name"]) # ====================== 调用 ====================== _t0 = time.time() answer = open_chat(MESSAGE, MODEL_NAME, AGENT_NAME, THINKING_ENABLED) print(f"(耗时 {time.time() - _t0:.1f}s)\n") print(answer) # answer 就是最终 markdown 文本 # ====================== (可选)在 Jupyter 里渲染成 markdown ====================== # from IPython.display import Markdown, display # display(Markdown(answer)) # ====================== (可选)存成 .md 文件 ====================== # with open("result.md", "w", encoding="utf-8") as f: # f.write(answer)