news 2026/1/22 22:40:20

高并发调用大语言模型:Python 异步网络编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高并发调用大语言模型:Python 异步网络编程

在LLM调用时,传统方式是基于OpenAI SDK同步:

方式1:使用 OpenAI SDK(同步)

fromopenaiimportOpenAI client=OpenAI(api_key="xxx",base_url="https://api.deepseek.com")# 同步调用,一个接一个foriinrange(100):response=client.chat.completions.create(model="deepseek-chat",messages=[{"role":"user","content":"决策..."}])# 100个请求串行执行,耗时很长

✓ 方式一:使用 OpenAI 官方 SDK(异步)

对于异步场景,OpenAI SDK v1.0+ 现在也支持异步(AsyncOpenAI),但这个代码可能是在那之前写的,或者是为了保持对多个非官方提供商的统一接口。如果只需要 OpenAI 官方 API,改用 SDK 可以简化代码。

代码示例(异步)

importasynciofromopenaiimportAsyncOpenAIasyncdefuse_openai_sdk():client=AsyncOpenAI(api_key="your-api-key-here")response=awaitclient.chat.completions.create(model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello!"}])print(response.choices[0].message.content)# 运行asyncio.run(use_openai_sdk())

优点:

  • 简洁易读:无需手动构造请求头、JSON body。
  • 类型安全:支持 Pydantic 模型,返回结构化对象。
  • 自动重试、超时、流式处理等高级功能
  • 官方维护,与 API 同步更新。

缺点:

  • 需要额外安装openai包。
  • 灵活性略低(但对大多数场景足够)。

但是面对大量请求,并且希望代码支持多个 LLM 提供商(deepseek、mimo、bigmodel),它们都提供 OpenAI 兼容 API。使用 aiohttp 可以统一调用方式,实现原生异步支持 + 高并发控制,不需要为每个提供商安装不同的 SDK。

✓ 方式二:使用 aiohttp 手动发起 HTTP 请求

aiohttp 是一个基于 Python 的 异步 HTTP 客户端/服务器框架,它建立在 asyncio(Python 内置的异步 I/O 框架)之上,支持 异步发送 HTTP 请求(客户端) 和 构建异步 Web 服务(服务器)。常用于:

  • 调用 RESTful API(如 OpenAI、GitHub API 等)
  • 并发抓取多个网页
  • 微服务间通信

使用前安装依赖:

pipinstallaiohttp

代码示例(异步)

importasyncioimportaiohttpimportjsonasyncdefuse_aiohttp():url="https://api.openai.com/v1/chat/completions"headers={"Authorization":"Bearer your-api-key-here","Content-Type":"application/json"}payload={"model":"gpt-3.5-turbo","messages":[{"role":"user","content":"Hello!"}]}asyncwithaiohttp.ClientSession()assession:asyncwithsession.post(url,headers=headers,json=payload)asresp:ifresp.status==200:data=awaitresp.json()print(data["choices"][0]["message"]["content"])else:error=awaitresp.text()print(f"Error:{resp.status},{error}")# 运行asyncio.run(use_aiohttp())

优点:

  • 完全控制请求细节(如自定义超时、代理、重试逻辑等)。
  • 不依赖 OpenAI SDK,适合轻量级或定制化场景。
  • 可用于调用任何兼容 OpenAI 协议的第三方 API(如本地部署的 LLM)。

缺点:

  • 代码冗长,需手动处理 JSON、错误、认证等。
  • 无类型提示,容易出错(如拼错字段名)。
  • 需自行实现流式响应、重试、速率限制等逻辑。

🔍 对比总结

特性OpenAI SDK(AsyncOpenAI)aiohttp 手动请求
代码简洁性⭐⭐⭐⭐⭐⭐⭐
类型安全✓(Pydantic 模型)❌(纯 dict)
自动处理认证/序列化❌(需手动)
流式响应支持✓(stream=True✓(但需手动解析 SSE)
灵活性中等极高
依赖openai仅需aiohttp
适用场景快速开发、标准调用定制协议、调试、轻量环境

💡 建议

  • 日常开发推荐使用 OpenAI SDK,它更安全、高效、可维护。
  • 只有在需要绕过 SDK 限制(如使用非官方 endpoint、自定义中间件、性能极致优化)时,才考虑用 aiohttp。

除了aiohttprequestshttpx都是 Python 中用于发送 HTTP 请求的流行库,但它们在设计理念、使用场景和功能特性上有显著区别:

库名类型异步支持同步支持是否可做 Web 服务器
requests同步 HTTP 客户端
aiohttp异步 HTTP 客户端 + 服务器
httpx现代 HTTP 客户端(同步+异步)

✓ = 支持,❌ = 不支持

码示例对比

场景:向https://httpbin.org/post发送 POST 请求

1.requests(同步)
importrequests response=requests.post("https://httpbin.org/post",json={"hello":"world"},headers={"User-Agent":"MyApp/1.0"})print(response.json()["json"])
2.aiohttp(异步)
importaiohttpimportasyncioasyncdefmain():asyncwithaiohttp.ClientSession()assession:asyncwithsession.post("https://httpbin.org/post",json={"hello":"world"},headers={"User-Agent":"MyApp/1.0"})asresp:data=awaitresp.json()print(data["json"])asyncio.run(main())
3.httpx(同步 or 异步)

同步模式(像 requests):

importhttpx response=httpx.post("https://httpbin.org/post",json={"hello":"world"},headers={"User-Agent":"MyApp/1.0"})print(response.json()["json"])

异步模式(简洁):

importhttpximportasyncioasyncdefmain():asyncwithhttpx.AsyncClient()asclient:response=awaitclient.post("https://httpbin.org/post",json={"hello":"world"},headers={"User-Agent":"MyApp/1.0"})print(response.json()["json"])asyncio.run(main())
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/21 9:31:30

告别复杂配置!gpt-oss-20b-WEBUI让大模型开箱即用

告别复杂配置!gpt-oss-20b-WEBUI让大模型开箱即用 你是否也曾被大模型部署的繁琐流程劝退?下载模型、配置环境、安装依赖、调试参数……每一步都像在闯关。而现在,这一切正在成为过去式。 今天要介绍的 gpt-oss-20b-WEBUI 镜像,…

作者头像 李华
网站建设 2026/1/21 9:31:27

3个关键步骤让ViPER4Windows在Win10/11系统上完美运行

3个关键步骤让ViPER4Windows在Win10/11系统上完美运行 【免费下载链接】ViPER4Windows-Patcher Patches for fix ViPER4Windows issues on Windows-10/11. 项目地址: https://gitcode.com/gh_mirrors/vi/ViPER4Windows-Patcher 还在为ViPER4Windows在新系统上无法正常工…

作者头像 李华
网站建设 2026/1/21 9:31:15

WzComparerR2深度解析:冒险岛WZ文件逆向工程完整教程

WzComparerR2深度解析:冒险岛WZ文件逆向工程完整教程 【免费下载链接】WzComparerR2 Maplestory online Extractor 项目地址: https://gitcode.com/gh_mirrors/wz/WzComparerR2 WzComparerR2是一款基于C#开发的专业级冒险岛WZ文件提取器,为游戏开…

作者头像 李华
网站建设 2026/1/21 9:30:29

青龙脚本库完整部署指南:5分钟掌握自动化任务配置

青龙脚本库完整部署指南:5分钟掌握自动化任务配置 【免费下载链接】huajiScript 滑稽の青龙脚本库 项目地址: https://gitcode.com/gh_mirrors/hu/huajiScript 想要轻松实现各种日常任务的自动化操作吗?滑稽青龙脚本库为您提供了完美的解决方案。…

作者头像 李华
网站建设 2026/1/21 9:29:20

Axure RP中文界面终极配置指南:三分钟快速切换工作语言

Axure RP中文界面终极配置指南:三分钟快速切换工作语言 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …

作者头像 李华
网站建设 2026/1/21 9:29:18

Z-Image-Turbo第一次生成慢?模型预加载优化实战解决方案

Z-Image-Turbo第一次生成慢?模型预加载优化实战解决方案 1. 问题背景:为什么第一次生成图像这么慢? 你有没有遇到这种情况:刚部署好 Z-Image-Turbo WebUI,满心期待地打开界面,输入提示词,点击…

作者头像 李华