尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Agent开发——Day 04 async/await 异步编程

Agent开发——Day 04 async/await 异步编程
📅 发布时间:2026/6/26 16:46:20

Day 04 案例分析:async/await 异步编程

案例一:LLM 并发调用(最贴近 Agent 开发的场景)

场景描述

你在开发一个 Agent,用户问了一个复杂问题,你需要同时调用 3 个 LLM:

  • LLM-A:生成初稿
  • LLM-B:检查事实
  • LLM-C:评估语气

同步写法(慢):

result_a=call_llm_a(prompt)# 等 2 秒result_b=call_llm_b(prompt)# 等 2 秒result_c=call_llm_c(prompt)# 等 2 秒# 总共等 6 秒

异步写法(快):

result_a,result_b,result_c=awaitasyncio.gather(call_llm_a(prompt),call_llm_b(prompt),call_llm_c(prompt),)# 总共等 2 秒(最慢的那个)

结论:asyncio.gather()是 Agent 开发中最常用的并发工具。


案例二:FastAPI 的本质(理解"为什么框架要求 async")

FastAPI、LangGraph 的 Server 模式,都要求你写async def。原因是:

# FastAPI 路由(必须是 async def)@app.post("/chat")asyncdefchat(request:ChatRequest):# 当这里在等 LLM 响应时,FastAPI 可以去处理其他用户的请求response=awaitcall_llm(request.message)return{"reply":response}

如果用同步def,服务器处理一个用户时,其他用户的请求全部排队等待。
用async def,等待 IO 的时候 CPU 可以去处理其他请求,吞吐量大幅提升。


案例三:Day 3 代码的异步改造

原始同步版本

importrequestsdefcall_api_with_auth(api_key:str,prompt:str)->str:url="https://httpbin.org/post"headers={"Authorization":f"Bearer{api_key}","Content-Type":"application/json"}body={"model":"some-model","messages":[{"role":"user","content":prompt}]}response=requests.post(url,headers=headers,json=body,timeout=10)response.raise_for_status()echo=response.json()print("服务器收到的 headers:",echo["headers"].get("Authorization"))return"调用成功"

异步改造版本(见 day004.py)

关键变化:

同步异步
import requestsimport httpx或import aiohttp
defasync def
requests.post()await client.post()
直接调用函数asyncio.run(main())

关键概念速查

async def— 声明一个协程函数

asyncdefmy_function():return"结果"

调用它不会立刻执行,而是返回一个"协程对象"(承诺将来会执行)。

await— 等待协程完成

result=awaitmy_function()# 挂起当前函数,等 my_function 完成

await只能在async def函数内部使用。

asyncio.run()— 启动事件循环(程序入口)

if__name__=="__main__":asyncio.run(main())# 在同步代码中运行异步函数的唯一正确方式

asyncio.gather()— 并发执行多个协程

results=awaitasyncio.gather(task1(),task2(),task3())# results 是一个列表,顺序与传入顺序一致

asyncio.sleep()— 异步等待(不阻塞其他任务)

awaitasyncio.sleep(1)# 等1秒,但期间其他协程可以运行# 对比:time.sleep(1) 会阻塞整个程序

相关新闻

  • 「简记往来」开发历程系列:API设计——RESTful接口在礼账场景中的实践
  • Windows热键侦探:快速定位热键冲突的完整解决方案
  • 创建vue3项目(使用vite) + 配置路由router

最新新闻

  • 3分钟极速安装:Windows用户必备的苹果设备驱动解决方案
  • Adobe-GenP 3.0:三步解锁Adobe全家桶完整功能指南
  • [智能体-511]:Step4:让 Bot 工作、有章法、固化最佳实践|图文生成视频 完整详解
  • 5分钟快速上手:浏览器资源嗅探神器Cat-Catch终极指南
  • Ai8051U数码管显示扩展板设计与RTC集成方案
  • Paperxie 科研绘图功能实测:告别 Origin 与 Visio,一键搞定论文配图

日新闻

  • Qwen2.5-Turbo百万上下文实战指南:百炼平台长文本处理全解析
  • 怎么监控对标账号更新,2026年作者监控工作流,5款深度对比
  • EdgeRemover:专业级Windows Edge浏览器管理工具,彻底解决顽固软件卸载难题

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号