本文档详细介绍了 GPT Academic 如何管理各种大型语言模型 (LLM) 提供商的 API 密钥。它涵盖了系统中 API 密钥管理的配置、验证、选择和安全方面。
有关整体 LLM 集成架构的信息,请参阅 LLM 集成 和 LLM 桥接架构。
GPT Academic 从以下三个可能的来源加载 API 密钥,优先级如下:
config_private.py(用于本地覆盖,不跟踪版本控制)config.py(默认设置,优先级最低)此优先级系统记录在配置文件头中。
Reading priority: environment variable > config_private.py > config.py
GPT Academic 支持众多 LLM 提供商的 API 密钥。主要包括:
| 提供商 | 配置变量 | 描述 |
|---|---|---|
| OpenAI | API_KEY | 用于 GPT 模型(gpt-3.5-turbo, gpt-4 等) |
| Azure OpenAI | AZURE_API_KEY, AZURE_CFG_ARRAY | 用于 Azure 托管的 OpenAI 模型 |
| Anthropic | ANTHROPIC_API_KEY | 用于 Claude 模型 |
| 阿里巴巴云 | DASHSCOPE_API_KEY | 用于 Qwen 模型 |
| DeepSeek | DEEPSEEK_API_KEY | 用于 DeepSeek 模型 |
| 智谱 AI | ZHIPUAI_API_KEY | 用于 GLM 模型 |
GEMINI_API_KEY | 用于 Gemini 模型 | |
| Moonshot AI | MOONSHOT_API_KEY | 用于 Moonshot 模型 |
| Yi | YIMODEL_API_KEY | 用于 Yi 模型 |
| Baidu | BAIDU_CLOUD_API_KEY, BAIDU_CLOUD_SECRET_KEY | 用于百度模型 |
| iFlytek | XFYUN_APPID, XFYUN_API_SECRET, XFYUN_API_KEY | 用于 Spark 模型 |
系统通过逗号分隔来支持同一提供商的多个 API 密钥。
API_KEY = "sk-key1,sk-key2,sk-key3"
在进行 API 调用时,系统会随机选择一个可用密钥来分发负载。
来源:config.py11 shared_utils/key_pattern_manager.py83-113
系统使用 shared_utils/key_pattern_manager.py 中定义的正则表达式模式来验证 API 密钥。不同的提供商有不同的密钥格式。
密钥验证模式包括:
sk-[a-zA-Z0-9_-]{48}$(外加较新密钥格式的附加模式)[a-zA-Z0-9]{32}$fk[a-zA-Z0-9]{6}-[a-zA-Z0-9]{32}$[a-zA-Z0-9]{40}$sk-or-v1-[a-zA-Z0-9]{64}$系统还支持通过 CUSTOM_API_KEY_PATTERN 配置选项来自定义密钥模式。
来源:shared_utils/key_pattern_manager.py12-61 tests/test_key_pattern_manager.py14-62
key_pattern_manager.py 中的 select_api_key() 函数根据模型名称选择合适的密钥。
如果某个模型类型有多个密钥可用,系统将随机选择一个进行负载均衡。
来源:shared_utils/key_pattern_manager.py83-113
用户可以通过用户界面提供临时 API 密钥,这些密钥会覆盖当前会话配置的密钥。这些临时密钥存储在 cookie 中,不会在会话之间持久化。
在处理请求时,toolbox.py 中的 ArgsGeneralWrapper 函数会从 cookie 中提取 API 密钥,并为 LLM 请求做好准备。
系统维护着模型类型与其所需密钥类型之间的映射关系,确保为每个 API 请求使用正确的身份验证。
| 模型模式 | 密钥配置变量 |
|---|---|
gpt-*, chatgpt-*, o1* | API_KEY |
azure-* | AZURE_API_KEY 或 AZURE_CFG_ARRAY |
claude-* | ANTHROPIC_API_KEY |
qwen-* | DASHSCOPE_API_KEY |
glm-* | ZHIPUAI_API_KEY |
yi-* | YIMODEL_API_KEY |
spark* | XFYUN_* 密钥 |
gemini-* | GEMINI_API_KEY |
这些映射关系已在配置文件中以综合关系图的形式记录。
对于嵌入模型(如 text-embedding-3-small),系统使用专用函数 select_api_key_for_embed_models(),该函数为文本嵌入模型选择 OpenAI API 密钥。
来源:shared_utils/key_pattern_manager.py116-129 request_llms/embed_models/bridge_all_embed.py15-40
API 密钥是需要谨慎处理的敏感凭证。
配置安全:
config_private.py 来存储私有密钥(不包含在版本控制中)。密钥验证:
运行时安全:
API URL 重定向:
# WARNING in config.py:
# 重新URL重新定向,实现更换API_URL的作用(高危设置! 常规情况下不要修改! 通过修改此设置,您将把您的API-KEY和对话隐私完全暴露给您设定的中间人!)
本文档提供了 GPT Academic API 密钥管理的技术概述。有关相关信息,请参阅 配置与部署 和 Azure OpenAI 集成。