2026年各大模型的API调用方法

各大模型的API调用方法要调用各家大模型的 API 核心是理解每个厂商的认证方式 请求端点 消息格式和参数差异 虽然具体细节不同 但都遵循 RESTful 风格 或 gRPC 返回 JSON 下面我以 Python 为例 详细介绍主流模型的调用方法 并给出一个统一封装的思路 API Key 绝大多数服务通过 Bearer Token 或自定义 header 认证 Base URL 每个模型有专属

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



在这里插入图片描述

要调用各家大模型的API,核心是理解每个厂商的认证方式、请求端点、消息格式和参数差异。虽然具体细节不同,但都遵循 RESTful 风格(或 gRPC),返回 JSON。下面我以 Python 为例,详细介绍主流模型的调用方法,并给出一个统一封装的思路。

  • API Key:绝大多数服务通过 Bearer Token 或自定义 header 认证。
  • Base URL:每个模型有专属 endpoint,如 https://api.openai.com/v1/chat/completions
  • 请求体:通常包含 modelmessages(或 prompt)、temperaturemax_tokens 等参数。
  • 响应:返回 choices[0].message.content,流式响应则为 Server-Sent Events (SSE)。
  • 错误处理:HTTP 状态码(401 认证失败、429 限流、500 服务错误)及错误信息。
import openai import os openai.api_key = os.getenv("OPENAI_API_KEY") response = openai.ChatCompletion.create( model="gpt-4", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Explain API calling."} ], temperature=0.7, max_tokens=500, stream=False ) print(response.choices[0].message.content) 

流式响应

stream = openai.ChatCompletion.create( model="gpt-4", messages=[...], stream=True ) for chunk in stream: if chunk.choices[0].delta.get("content"): print(chunk.choices[0].delta.content, end="") 

注意:OpenAI 支持 function calling,需要在请求中定义 functions 参数。


Anthropic 使用独立的 API 格式,消息结构为 messages 数组,并且必须包含 system 字段(可选)。

import anthropic client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) response = client.messages.create( model="claude-3-opus-", system="You are a helpful assistant.", messages=[ {"role": "user", "content": "Explain API calling."} ], temperature=0.7, max_tokens=500 ) print(response.content[0].text) 

特点

  • 不支持 function calling(截至 Claude 3 需借助 XML 或外部工具)。
  • 支持多模态(上传图片 base64)。
  • 流式响应使用 client.messages.create(..., stream=True)

Gemini API 使用 generateContent 端点,认证通过 API Key 或 OAuth。

import google.generativeai as genai genai.configure(api_key=os.getenv("GEMINI_API_KEY")) model = genai.GenerativeModel('gemini-pro') response = model.generate_content("Explain API calling.", generation_config=genai.types.GenerationConfig( temperature=0.7, max_output_tokens=500 )) print(response.text) 

多轮对话

chat = model.start_chat(history=[]) chat.send_message("Hello") response = chat.send_message("Explain API calling.") 

流式

response = model.generate_content(prompt, stream=True) for chunk in response: print(chunk.text, end="") 

百度使用千帆大模型平台,需要先获取 access token。

import requests # 获取 access token def get_access_token(api_key, secret_key): url = "https://aip.baidubce.com/oauth/2.0/token" params = {"grant_type": "client_credentials", "client_id": api_key, "client_secret": secret_key} return requests.post(url, params=params).json()["access_token"] access_token = get_access_token("your_api_key", "your_secret_key") # 调用文心一言 url = f"https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={access_token}" payload = { "messages": [{"role": "user", "content": "Explain API calling."}], "temperature": 0.7, "max_output_tokens": 500 } response = requests.post(url, json=payload).json() print(response["result"]) 

注意:百度要求先获取短期 token(有效期30天),需要缓存并定期刷新。


阿里使用 DashScope SDK 或 HTTP API。

from dashscope import Generation import os os.environ["DASHSCOPE_API_KEY"] = "your_api_key" response = Generation.call( model="qwen-max", messages=[{"role": "user", "content": "Explain API calling."}], temperature=0.7, max_tokens=500, result_format="message" ) print(response.output.choices[0].message.content) 

流式:设置 stream=True,然后迭代 response


智谱使用 zhipuai SDK,支持异步和同步。

from zhipuai import ZhipuAI client = ZhipuAI(api_key="your_api_key") response = client.chat.completions.create( model="glm-4", messages=[{"role": "user", "content": "Explain API calling."}], temperature=0.7, max_tokens=500 ) print(response.choices[0].message.content) 

流式stream=True,然后循环 response


  • Coherecohere.Client(api_key).generate(model="command", prompt=..., ...)
  • AI21https://api.ai21.com/studio/v1/j2-ultra/completeAuthorization: Bearer

如果你想用同一套代码调用不同模型,推荐 litellm 库。

import litellm import os os.environ["OPENAI_API_KEY"] = "..." os.environ["ANTHROPIC_API_KEY"] = "..." os.environ["GEMINI_API_KEY"] = "..." # 统一调用 response = litellm.completion( model="gpt-4", # 或 "claude-3-opus", "gemini-pro", "bedrock/anthropic.claude-3-sonnet" messages=[{"role": "user", "content": "Explain API calling."}], temperature=0.7 ) print(response.choices[0].message.content) 

litellm 会自动处理认证、重试、流式、输出格式转换,并支持上百种模型。

  • 永远使用环境变量或密钥管理服务,不要硬编码。
  • 定期轮换 API Key。
import tenacity @tenacity.retry(stop=tenacity.stop_after_attempt(3), wait=tenacity.wait_exponential(multiplier=1, min=2, max=10)) def call_api_with_retry(): # API 调用 pass 
  • 捕获 openai.error.RateLimitErrorrequests.exceptions.Timeout 等特定异常。
  • 实现指数退避。
  • 对于长输出,使用 stream=True 改善用户体验。
  • 设置合理的超时(timeout=60),避免阻塞。
  • 设置 max_tokens 上限。
  • 监控 usage(response.usage.total_tokens)。
  • 对于高并发场景,使用 asyncio + aiohttp 或对应 SDK 的异步版本(如 openai.AsyncOpenAI)。
import asyncio from openai import AsyncOpenAI client = AsyncOpenAI(api_key=os.getenv("OPENAI_API_KEY")) async def call_async(): response = await client.chat.completions.create(...) return response 
  • 定义自己的消息格式,写适配器将不同厂商的响应转为统一结构。
  • 或者直接使用 litellm / LangChain 等抽象层。
import os from typing import List, Dict class MultiModelClient: def __init__(self, model_name: str): self.model_name = model_name self._setup_client() def _setup_client(self): if self.model_name.startswith("gpt"): import openai openai.api_key = os.getenv("OPENAI_API_KEY") self.client = openai.ChatCompletion elif self.model_name.startswith("claude"): import anthropic self.client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) elif self.model_name.startswith("gemini"): import google.generativeai as genai genai.configure(api_key=os.getenv("GEMINI_API_KEY")) self.client = genai.GenerativeModel(self.model_name) # 继续添加其他模型... def call(self, messages: List[Dict[str, str]], kwargs): if self.model_name.startswith("gpt"): response = self.client.create( model=self.model_name, messages=messages, kwargs ) return response.choices[0].message.content elif self.model_name.startswith("claude"): # 将 openai 格式 messages 转换为 claude 格式 system = next((m["content"] for m in messages if m["role"] == "system"), None) user_msgs = [m for m in messages if m["role"] != "system"] response = self.client.messages.create( model=self.model_name, system=system, messages=user_msgs, kwargs ) return response.content[0].text # ... 其他模型转换 

  • 官方文档:OpenAI、Anthropic、Google AI Studio、百度千帆、阿里灵积。
  • Postman 集合:每个平台都提供 Postman 示例,方便调试。
  • 抓包验证:使用 mitmproxycurl -v 查看原始 HTTP 请求。
  • 模拟响应:开发阶段可 mock API 返回,避免消耗额度。

调用大模型 API 本质上就是 构造 HTTP 请求 → 解析 JSON → 处理异常。掌握了这个通用模式,再针对每个厂商的特殊字段(如 OpenAI 的 function_call、Google 的 safety_settings)做适配,就能灵活驾驭各种模型。建议从 OpenAI 开始练习,因为它格式最标准、文档最全,然后再拓展到其他厂商。

小讯
上一篇 2026-04-15 07:08
下一篇 2026-04-15 07:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/258292.html