Python大模型API封装教程_构建统一调用接口

需要统一调用接口,因为OpenAI、Qwen、GLM等厂商API在鉴权、路径、参数、响应上差异大,硬编码导致维护难、切换难、错误处理散;统一接口通过标准化输入(messages列表)、一致化输出(content/usage/model)、厂商适配器解耦、异常归一化来解决。

为什么需要统一调用接口

不同大模型厂商(如OpenAI、Qwen、GLM、Moonshot)的API格式差异大:鉴权方式、请求路径、参数名、响应结构各不相同。直接在业务代码里硬编码各家调用逻辑,会导致维护成本高、切换模型困难、错误处理分散。封装一层统一接口,能让上层只关心“输入提示词、获取回复”,不必操心底层细节。

核心设计原则

统一接口不是简单做一层转发,关键在于抽象出稳定、可扩展的契约:

  • 输入标准化:统一使用 messages 列表(角色+内容),支持 system/user/assistant;额外参数如 temperaturemax_tokens 作为可选关键字传入
  • 输出结构一致:无论后端是哪个模型,都返回含 content(字符串回复)、usage(token统计)、model(实际调用模型名)的字典
  • 厂商解耦:每个厂商实现独立的适配器类(如 OpenAIAdapterQwenAdapter),通过工厂函数按配置自动选择
  • 异常归一化:网络超时、认证失败、限流等底层异常统一转为自定义异常(如 LLMConnectionErrorLLMAuthError),业务层无需识别 HTTP 状态码

一个轻量可用的封装示例

以下是一个精简但生产可用的骨架(基于 httpx + 配置驱动):

DubbingX智声云配

多情绪免费克隆AI音频工具

下载

from typing import List, Dict, Any, Optional
import httpx
from abc import ABC, abstractmethod

class LLMAdapter(ABC): @abstractmethod def chat(self, messages: List[Dict], **kwargs) -> Dict[str, Any]: pass

class OpenAIAdapter(LLMAdapter): def init(self, api_key: str, base_url: str = "https://www.kunjuke.com/link/8e5ac35e1661cc14cb518fa9b9364854"): self.client = httpx.Client(headers={"Authorization": f"Bearer {api_key}"}) self.base_url = base_url

def chat(self, messages: List[Dict], model="gpt-4o", **kwargs) -> Dict[str, Any]:
    resp = self.client.post(
        f"{self.base_url}/chat/completions",
        json={"model": model, "messages": messages, **kwargs}
    )
    resp.raise_for_status()
    data = resp.json()
    return {
        "content": data["choices"][0]["message"]["content"],
        "usage": data.get("usage", {}),
        "model": model
    }

工厂函数:根据配置加载对应适配器

def get_llm_adapter(provider: str, **config) -> LLMAdapter:
if provider == "openai":
return OpenAIAdapter(api_key=config["api_key"], base_url=config.get("base_url"))
elif provider == "qwen":
return QwenAdapter(api_key=config["api_key"], base_url=config.get("base_url", "https://www.kunjuke.com/link/1128b9108f8997cf4b24e3b20e5ecceb"))

... 其他厂商

raise ValueError(f"Unsupported provider: {provider}")

统一入口

def llm_chat(
messages: List[Dict],
provider: str = "openai",
kwargs
) -> Dict[str, Any]:
adapter = get_llm_adapter(provider,
kwargs)
return adapter.chat(messages, **kwargs)

调用时只需:

resp = llm_chat(
    messages=[{"role": "user", "content": "你好,请用一句话介绍自己"}],
    provider="qwen",
    api_key="sk-xxx",
    model="qwen-max"
)
print(resp["content"])  # 直接拿到纯文本回复

进阶建议

实际落地时,可逐步增强鲁棒性和可观测性:

  • 自动重试与退避:对 429(限流)、5xx 错误内置指数退避重试(推荐用 tenacity 库)
  • Token 自动截断:根据模型最大上下文和预估 prompt token 数,自动截断过长历史消息(可用 tiktokentransformers 的 tokenizer)
  • 调用日志与指标:记录耗时、模型、token 数,上报到 Prometheus 或写入日志,便于监控延迟与成本
  • 异步支持:提供 async llm_chat_async(...) 版本,适配 FastAPI 等异步框架

相关推荐:

AI 仓库调用漏洞 HalluSquatting 披露,攻击“龙虾”成功率约 80-100%

7 月 10 日消息,科技媒体 Tom's Hardware 昨日(7 月 9 日)发布博文,报道称研究人员发现名为 HalluSquatting 的新型 AI 漏洞,放大模型在调用工具时的“幻觉”,将不存在或错误的代码仓库地址当作真实地址使用。注:AI 幻觉是 AI 模型生成的不正确或具有误导性的结果。这些错误可能由多种因素造成,包括训练数据不足、模型做出不正确的假设,或用于训练模型的数据存在偏...

微软测试 iPad 版 Word 2.109:调用 AI 整理零散想法、起草和重组内容等

7 月 9 日消息,微软于 7 月 7 日发布公告,邀请 Microsoft 365 Insider 项目成员,测试适用于 iPad 的 Word 2.109(Build 26051516)版本,聚焦 AI 辅助编辑文档。附上演示视频如下:在使用场景方面,在 iPad 新测试版 Word 应用中,用户不需要频繁切换各种工具,可以直接调用 Copilot AI 助手,把零散想法整理为成稿,减少手动编...

腾讯混元:新模型 Hy3 调用激增,WorkBuddy 已紧急扩容

7 月 9 日消息,今天(9 日)上午,腾讯混元通过公众号宣布,Hy3 调用激增,WorkBuddy 已紧急扩容。根据官方公告,Hy3 在 WorkBuddy 首发上线以来,受到了用户们的广泛支持。7 月 8 日上午 10 时开始,算力资源消耗达到峰值,并出现排队情况,当日下午排队率一度超过 50%。为了提供更好的 Hy3 使用体验和稳定服务,官方已第一时间调度可用资源进行补充,目前已扩容完毕。据...

TCL 科技:玻璃基封装技术尚处前期调研阶段,商业化存不确定性

7 月 6 日消息,TCL 科技今日在互动平台表示,公司目前对玻璃基封装领域尚处于前期调研与技术预研阶段。公司于该领域能否技术落地与实现商业化量产仍存在重大不确定性,对公司现有经营业绩无明显影响,敬请投资者关注相关技术风险,理性看待行业题材热度。注意到,TCL 科技虽然未在公司公告中披露玻璃基封装领域进展,但其旗下天津普林在玻璃基封装领域的研究布局其实可以追溯到更早。天津普林 2024 年年报显示...

受谷歌关停 Tenor API 对外服务影响,微软承认部分 Win11 出现无法调用 GIF 情况

7 月 2 日消息,微软于 6 月 30 日更新 Windows 健康控制台,承认在 Windows 11 26H1、25H2 以及 24H2 功能更新中,Windows  表情符号面板存在无法使用 GIF 功能的情况。微软在官方文档中指出,受谷歌关闭 GIF 搜索工具 Tenor API 对外服务影响,在受影响 Windows 11 版本中,用户打开 Windows 表情符号面板,可能会出现无法...

三星 10 月调整 SmartThings 智能家居平台:个人 API 调用收取 5 美元月费

6 月 27 日消息,科技媒体 Android Headline 昨日(6 月 26 日)发布博文,报道称三星官宣将于 2026 年 10 月开始对 SmartThings 的个人 API 访问收取 4.99 美元(现汇率约合 34 元人民币)月费,将结束免费开放模式。注:SmartThings 是三星旗下的智能家居平台,用于连接和管理电视、冰箱、空调、传感器等多类设备。它既支持官方 App 内控...

消息称日月光调整先进封装报价,最高涨幅超 20%

7 月 1 日消息,据台媒 MoneyDJ 报道,业界消息称,外包半导体封装测试供应商日月光再度调整封装报价,涨价幅度最高超过 20%,市场预期其他封测厂有望进一步跟进。注:日月光主营业务为半导体封装、测试及材料制造,是一家半导体制造服务公司。2024 年以 185.4 亿美元的营收在全球外包封测市场占比达 43.8%。由于台积电的 CoWoS 产能供不应求,其外包比例持续提升,使得日月光承接的相...