【LLM】通过API调用LLM的三种方式
本文将以OpenAI接口为例,介绍调用大模型API的三种方式,从最高级的封装到最原始的http请求,依次介绍LangChain、OpenAI官方SDK、requests请求。
LangChain 封装调用
代码示例:
1 | import os |
特点
封装层次高:LangChain 封装了模型调用、上下文管理、提示模版等,用户只需调用
invoke()就能得到模型输出。适合复杂应用:可以很方便地在多轮对话、链式调用、工具调用等场景下使用。
默认处理:LangChain 会帮你做一些参数处理和返回值封装,比如
response.content。限制:自定义底层请求参数比较麻烦,不适合做一些非常特殊的 API 调用。
OpenAI 官方 SDK 调用
代码示例:
1 | import os |
特点
- 官方 SDK:由 OpenAI 提供,接口与 API 完全一致。
- 参数灵活:可以直接传入模型特有的扩展参数(如
extra_body)。 - 支持流式输出、批量调用等高级特性。
- 限制:没有内置 prompt 组合、记忆等高级功能。如需上下文,需要手动更新messages
- 返回值:需要自己去解析
completion.choices[0].message.content。
原生 HTTP API 调用
其实说白了调用大模型的API就是发送HTTP请求,因此也可以用最原始的requests包进行
代码示例:
1 | import requests |
特点
- 完全底层:直接用
requests构造 HTTP POST 请求。 - 零依赖:不需要任何 SDK 或框架。
- 跨语言通用:任何能发 HTTP 请求的环境都能用。
- 局限性:需要手动处理返回值 JSON,需要自己处理请求构造、返回解析、错误处理等。缺少高级封装(比如自动处理多轮对话或流式输出)。
三种方式对比总结
| 调用方式 | 封装程度 | 灵活性 | 易用性 | 适用场景 |
|---|---|---|---|---|
| LangChain | 高 | 中 | 高 | 构建多步骤 AI 应用 |
| OpenAI SDK | 中 | 高 | 高 | 灵活传参、直接调用模型 |
| HTTP API | 低 | 最高 | 中低 | 跨语言调用、完全定制化 |
总结建议
- 如果你是快速原型 + 多功能集成 → 用 LangChain
- 如果你只想直接用 LLM 且需要模型扩展参数 → 用 OpenAI SDK
- 如果你需要跨语言调用或极端定制化 → 用 原生 HTTP API
选择哪种方式取决于项目的复杂度、团队的技术栈,以及对灵活性与封装性的取舍。
拓展阅读
- OpenAI的Chat Completions API 和 Assistants API: https://www.tianlejin.top/blog/openai_chat_assitant_api
- OpenAI的response API介绍: https://www.tianlejin.top/blog/openai_response_api
- 官方文档:https://platform.openai.com/docs/api-reference/chat/create
评论