Atoms多模型同时调用业务场景落地完整代码
需并行调用Qwen、GLM、Claude三模型处理合同文本:Qwen做条款摘要、GLM识别风险点、Claude提供合规建议;通过asyncio.gather并发执行,用dataclass或小写key dict统一响应,经FastAPI暴露/analyze接口。
需要在同一个业务请求中并行调用多个大模型(如Qwen、GLM、Claude)完成不同子任务,并统一编排响应结果,比如用户提交一份合同文本,同时让Qwen做条款摘要、GLM做风险点识别、Claude做合规性建议。
准备多模型客户端与配置
安装必要依赖:pip install dashscope zhipuai anthropic python-dotenv。
在项目根目录创建 .env 文件,填入各平台 API Key:注意必须使用各自平台最新版 SDK 支持的环境变量名,旧版 key 名会导致初始化失败:
DASHSCOPE_API_KEY=sk-xxx(通义千问)
ZHIPUAI_API_KEY=123456(智谱GLM)
ANTHROPIC_API_KEY=sk-ant-api03-xxx(Claude)
新建 models.py,定义三个独立客户端实例,不共用 session 或超时设置——【每个模型必须使用专属 client,混用会导致 headers 冲突或鉴权失效】:
编写并发调用核心函数
使用 asyncio.gather 并发触发三路请求,不采用线程池——模型 API 原生支持异步 HTTP,线程反而增加调度开销。
第一步:定义单模型推理函数 async_qwen(),输入 text,返回摘要字符串;第二步:定义 async_glm(),输入 text,返回 JSON 格式风险列表(含位置、类型、描述字段);第三步:定义 async_claude(),输入 text,返回带段落编号的合规建议 Markdown 字符串。
将三个函数传入 asyncio.gather(),等待全部完成。这一步不能用 asyncio.wait() 或 create_task 单独 await,否则失去并发性。
构造统一响应结构
方法一:用 dataclass 定义 ResponseModel,包含 qwen_summary: str、glm_risks: list、claude_advice: str 三个字段。
方法二:直接用 dict 组装,键名固定为 "summary" / "risks" / "advice",便于前端消费——【键名必须全小写且无空格,否则 FastAPI 自动序列化会出错】。
把 gather 返回的三元组按顺序解包,塞进 dict,最后 json.dumps() 输出。
接入 FastAPI 路由
创建 main.py,初始化 FastAPI 实例,添加 POST /analyze 后端接口。
接收 JSON body:{"contract_text": "甲方应于…"},校验字段存在且非空,长度不超过 128KB(防止 OOM)。
调用上一步封装好的并发函数,await 得到结果字典,直接 return 它——FastAPI 会自动处理 JSON 序列化和 Content-Type 头。
启动服务:uvicorn main:app --reload --host 0.0.0.0 --port 8000。
-
08.21
如何利用AI提升软件项目开发文档质量?详细说明文档的重要性与生成技巧!
-
08.21
AI写作英语如何颠覆传统创意写作?
-
08.21
护理带教工作总结PPT的撰写实用技巧与模板,助你轻松制作精彩汇报!
-
08.21
如何撰写企业数字化转型年度报告?一份详尽的范文与提示词供你参考!
-
08.21
如何利用WPS AI生成年度总结PPT背景图?一份详细的范文与提示词供你参考!
-
08.21
如何高效撰写年终总结?仓库主管的年终总结报告与提示词参考!
-
- Atoms多模型同时调用本地调试配置步骤
- 08.21
-
- 火山引擎豆包API模型参数填写实操操作步骤
- 08.21
-
-
- 音述AI分离音频噪声大如何处理
- 08.21
-
-
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏