趋近智
尽管使用 requests 库是与 HTTP API(包括大型语言模型 API)交互的基础方式,但它通常涉及编写重复的样板代码来处理身份验证、构造请求体和解析响应。对于许多常用的大语言模型提供商,一个更方便、更有条理的方法是使用其官方 Python 客户端库(也称为 SDK - 软件开发工具包)。
这些库是对底层 HTTP API 调用的封装。它们提供以下几个优点:
requests 实现可能会很复杂。OpenAI 提供了一个常用且维护良好的 Python 库,用于与其模型(如 GPT-4 和 GPT-3.5 Turbo)交互。
首先,您需要安装该库:
pip install openai
回顾第 2 章中安全管理 API 密钥的重要性。假设您已将 OpenAI API 密钥设置为环境变量 (OPENAI_API_KEY),初始化客户端并发出简单的聊天完成请求如下所示:
import os
from openai import OpenAI
# 客户端自动获取 OPENAI_API_KEY 环境变量
# 您也可以直接传入:client = OpenAI(api_key="your_api_key")
client = OpenAI()
try:
# 向聊天完成端点发送请求
response = client.chat.completions.create(
model="gpt-3.5-turbo", # 指定模型
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the capital of Malaysia?"}
],
max_tokens=50, # 限制响应长度
temperature=0.7 # 控制随机性(0=确定性,1=更随机)
)
# 提取响应内容
# 响应对象是结构化的,方便访问
if response.choices:
message_content = response.choices[0].message.content
print(f"Assistant: {message_content.strip()}")
else:
print("No response choices received.")
# 打印使用信息(对成本追踪有用)
print(f"Usage: {response.usage}")
except Exception as e:
print(f"An API error occurred: {e}")
将此与使用 requests 构造等效请求进行比较。您需要手动执行以下操作:
Authorization: Bearer <your_api_key> 请求头。messages 列表和其他参数格式化为 JSON 有效载荷。https://api.openai.com/v1/chat/completions)。openai 库处理这些细节,让您专注于核心逻辑:定义提示 (messages)、选择模型以及处理结构化的 response 对象。
Anthropic,Claude 系列模型的提供商,也提供了一个 Python 客户端库。其模式类似,突显了这些库如何为其各自的服务提供一致的开发者体验。
安装该库:
pip install anthropic
假设您的 Anthropic API 密钥已设置为 ANTHROPIC_API_KEY:
import os
from anthropic import Anthropic, AnthropicError
# 客户端自动获取 ANTHROPIC_API_KEY 环境变量
# 或使用以下方式初始化:client = Anthropic(api_key="your_api_key")
client = Anthropic()
try:
message = client.messages.create(
model="claude-3-opus-20240229", # 指定模型
max_tokens=100,
temperature=0.7,
system="You are a helpful assistant.", # 系统提示
messages=[
{
"role": "user",
"content": "What is the main purpose of the Python requests library?"
}
]
)
# 从结构化对象中访问响应内容
if message.content:
print(f"Assistant: {message.content[0].text.strip()}") # 注意与 OpenAI 的结构差异
else:
print("No response content received.")
# 打印使用情况(结构与 OpenAI 不同)
print(f"Usage: Input Tokens={message.usage.input_tokens}, Output Tokens={message.usage.output_tokens}")
except AnthropicError as e:
# 库提供的特定错误处理
print(f"An Anthropic API error occurred: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
注意其相似之处:客户端初始化、方法调用 (messages.create)、模型和参数指定以及通过结构化响应对象 (message) 获取结果。然而,具体的方法名、参数名(system 提示是独立的)和响应结构(message.content[0].text)有所不同,这反映了 Anthropic 的 API 设计。
通常,当官方客户端库可用且维护良好时,建议使用它。通过抽象化 HTTP 细节并提供特定于供应商的便利和错误处理,它使得代码更易于维护、更易读。
您可能会在以下情况下坚持使用直接的 requests 调用:
对于 Python 生态系统中的大多数开发,使用这些官方库将大幅加快您的工作流程并减少与大语言模型 API 交互时出错的可能性。它们构成了我们将在后续章节中进一步查看的工具的重要部分。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造