趋近智
通过编程方式与大型语言模型交互时,您的应用程序需要向 API 提供方进行认证。此过程确认您的应用程序有权限使用该服务,通常会将使用情况与您的账户关联,用于计费和监控。安全地管理认证凭据是构建可靠应用程序的一个主要方面。
大多数大型语言模型提供商使用 API 密钥进行认证。API 密钥通常是一个长而唯一的字符字符串,您会将其包含在 API 请求中。当提供商收到请求时,会在处理前检查 API 密钥的有效性。可以将其视为专门用于您的应用程序访问大型语言模型服务的密码。
您通常会通过提供商的网页控制台或管理界面生成 API 密钥。例如,OpenAI、Anthropic、Cohere 和 Google AI Studio 等服务都提供界面来创建和管理与您的账户关联的 API 密钥。
请像对待敏感密码一样对待您的 API 密钥。将其公开,例如直接提交到您的源代码仓库(如 Git),可能导致未经授权的访问,如果他人使用您的密钥,还可能产生可观的费用。
以下是安全管理 API 密钥的基本做法:
避免硬编码: 切勿将 API 密钥直接嵌入到应用程序的源代码中。这是一个重要的安全风险。任何能访问您代码的人,包括公共仓库的用户,都可以找到并滥用您的密钥。
# 不好的做法:不要硬编码 API 密钥!
# api_key = "sk-abcdefghijklmnopqrstuvwxyz1234567890"
# headers = {"Authorization": f"Bearer {api_key}"}
# response = requests.post(api_url, headers=headers, json=payload)
使用环境变量: 一种常用且有效的方法是将 API 密钥存储为运行您应用程序的系统上的环境变量。您的代码可以在运行时从环境中读取密钥。
export OPENAI_API_KEY="your_actual_api_key_here"
set OPENAI_API_KEY=your_actual_api_key_here
$Env:OPENAI_API_KEY="your_actual_api_key_here"
然后您可以在 Python 代码中使用 os 模块访问它:
import os
import requests
# 好的做法:从环境变量加载 API 密钥
api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
raise ValueError("API key not found. Set the OPENAI_API_KEY environment variable.")
api_url = "https://api.openai.com/v1/chat/completions" # 示例 URL
headers = {"Authorization": f"Bearer {api_key}"}
# ... 构建有效载荷并发送请求 ...
# response = requests.post(api_url, headers=headers, json=payload)
使用配置文件(请谨慎): 您可以将密钥存储在配置文件中(例如,.env 文件、JSON、YAML)。确保这些文件:
.gitignore 文件中)。python-dotenv 这样的库可以将 .env 文件中的变量加载到环境中。.env 文件示例:
OPENAI_API_KEY=your_actual_api_key_here
使用 python-dotenv 的 Python 示例:
import os
import requests
from dotenv import load_dotenv
load_dotenv() # 将变量从 .env 文件加载到环境中
api_key = os.getenv("OPENAI_API_KEY")
if not api_key:
# ... 处理错误 ...
pass
# ... 代码的其余部分 ...
密钥管理系统: 对于生产环境或团队设置,专用的密钥管理工具(如 HashiCorp Vault、AWS Secrets Manager、Google Secret Manager、Azure Key Vault)提供更安全、更易管理的方式来处理 API 密钥及其他敏感凭据。这些系统提供集中存储、访问控制、审计和自动轮换等功能。集成这些系统通常需要使用由密钥管理器提供的特定 SDK。
您如何在请求中包含 API 密钥取决于特定大型语言模型提供商的要求。两种常见模式是:
授权头(Bearer 令牌): 这非常常见。API 密钥在 Authorization HTTP 头中发送,通常以 Bearer 作为前缀。
import os
import requests
api_key = os.getenv("PROVIDER_API_KEY")
api_url = "PROVIDER_API_ENDPOINT" # 替换为实际端点
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = { # 您的请求数据
"model": "some-model-name",
"prompt": "Explain API authentication.",
# ... 其他参数
}
# response = requests.post(api_url, headers=headers, json=payload)
# print(response.json())
自定义头: 有些 API 可能要求密钥位于自定义头中,例如 X-API-Key。
import os
import requests
api_key = os.getenv("PROVIDER_API_KEY")
api_url = "PROVIDER_API_ENDPOINT"
headers = {
"X-API-Key": api_key, # 自定义头示例
"Content-Type": "application/json"
}
payload = { # 您的请求数据
"model": "some-model-name",
"prompt": "Explain API authentication.",
# ... 其他参数
}
# response = requests.post(api_url, headers=headers, json=payload)
# print(response.json())
请求体或查询参数(不常见/安全性较低): 偶尔,API 可能期望密钥位于 JSON 有效载荷内或作为 URL 查询参数。这通常安全性较低,尤其是通过查询参数发送时,因为它们可能被记录在服务器历史或浏览器缓存中。在可用时,始终优先选择基于头的认证。
务必查阅您使用的大型语言模型提供商的 API 文档,以了解其所需的认证方法。
这是一个简化流程,展示了存储在环境变量中的 API 密钥如何用于您的应用程序向大型语言模型提供商服务发起 API 请求的认证过程。
安全管理认证是构建与外部 API 交互的可信应用程序的基本步骤。通过使用环境变量或密钥管理器并遵循最佳实践,您可以显著降低处理敏感 API 密钥相关的风险。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造