大模型API密钥获取与配置(OpenAI、智谱、千问等)
7.1 大模型API概述
7.1.1 什么是大模型API?
大模型API(Application Programming Interface)是大语言模型提供商开放给开发者的接口,允许开发者通过编程方式调用模型的能力。通过API密钥,开发者可以:
- 向模型发送文本请求
- 获取模型生成的响应
- 控制模型的参数和行为
- 管理API调用的配额和费用
7.1.2 主流大模型API提供商
| 提供商 | 模型名称 | API特点 | 适用场景 |
|---|---|---|---|
| OpenAI | GPT-3.5, GPT-4 | 功能强大,生态成熟 | 通用智能体,复杂任务 |
| 智谱AI | GLM-4, ChatGLM | 中文理解优秀,本地化 | 中文场景,国内应用 |
| 百度 | 文心一言 | 中文优化,多模态 | 中文内容,企业应用 |
| 阿里 | 通义千问 | 中文理解,企业级 | 商业应用,阿里云生态 |
| 讯飞 | 星火认知 | 语音交互,实时处理 | 语音应用,实时对话 |
| Gemini | 多模态,知识丰富 | 多模态应用,搜索增强 | |
| Anthropic | Claude | 长上下文,安全可靠 | 长文档处理,企业应用 |
7.2 OpenAI API密钥获取与配置
7.2.1 创建OpenAI账号
- 访问OpenAI官网:打开OpenAI官方网站
- 注册账号:点击"Sign Up",使用邮箱或Google账号注册
- 验证身份:按照提示完成邮箱验证和身份验证
- 登录账号:使用注册的账号登录
7.2.2 获取API密钥
进入API密钥页面:
- 登录后,点击右上角的个人头像
- 选择"View API keys"
创建新密钥:
- 点击"Create new secret key"
- 为密钥添加描述(可选)
- 点击"Create secret key"
保存密钥:
- 密钥只会显示一次,务必复制并妥善保存
- 建议使用密码管理器存储密钥
7.2.3 配置API密钥
设置环境变量:
- Windows:在系统环境变量中添加
OPENAI_API_KEY - macOS/Linux:在
.bashrc或.zshrc中添加export OPENAI_API_KEY="your-api-key"
- Windows:在系统环境变量中添加
使用python-dotenv:
- 创建
.env文件 - 添加以下内容:
OPENAI_API_KEY=your-api-key - 在代码中加载:
from dotenv import load_dotenv load_dotenv()
- 创建
直接在代码中设置(不推荐用于生产环境):
import openai openai.api_key = "your-api-key"
7.2.4 API使用注意事项
- 费用管理:设置使用限额,避免意外费用
- 安全保护:不要在代码中硬编码API密钥
- 速率限制:注意API调用频率限制
- 地区限制:某些地区可能无法直接访问OpenAI API
7.3 智谱AI API密钥获取与配置
7.3.1 创建智谱AI账号
- 访问智谱AI官网:打开智谱AI开放平台
- 注册账号:点击"注册",使用手机号注册
- 验证身份:完成手机验证码验证
- 登录账号:使用注册的账号登录
7.3.2 获取API密钥
进入API密钥页面:
- 登录后,点击左侧导航栏的"API密钥"
- 或点击右上角的个人头像,选择"API密钥"
创建新密钥:
- 点击"创建API密钥"
- 为密钥添加名称
- 点击"确定"
保存密钥:
- 复制生成的API密钥并妥善保存
- 密钥只会显示一次
7.3.3 配置API密钥
设置环境变量:
- 添加
ZHIPUAI_API_KEY环境变量
- 添加
使用python-dotenv:
- 在
.env文件中添加:ZHIPUAI_API_KEY=your-api-key
- 在
在代码中使用:
from zhipuai import ZhipuAI client = ZhipuAI(api_key="your-api-key")
7.4 百度文心一言API密钥获取与配置
7.4.1 创建百度智能云账号
- 访问百度智能云:打开百度智能云官网
- 注册账号:点击"注册",使用手机号注册
- 验证身份:完成手机验证码验证和实名认证
- 登录账号:使用注册的账号登录
7.4.2 获取API密钥
进入文心一言控制台:
- 登录后,搜索"文心一言"
- 进入"文心一言ERNIE-Bot"
创建应用:
- 点击"创建应用"
- 填写应用名称和描述
- 选择应用类型
- 点击"立即创建"
获取API密钥:
- 在应用列表中找到创建的应用
- 查看"API Key"和"Secret Key"
- 复制并妥善保存
7.4.3 配置API密钥
设置环境变量:
- 添加
BAIDU_API_KEY和BAIDU_SECRET_KEY环境变量
- 添加
使用python-dotenv:
- 在
.env文件中添加:BAIDU_API_KEY=your-api-key BAIDU_SECRET_KEY=your-secret-key
- 在
在代码中使用:
from erniebot import ErnieBot ErnieBot.api_key = "your-api-key" ErnieBot.secret_key = "your-secret-key"
7.5 阿里通义千问API密钥获取与配置
7.5.1 创建阿里云账号
- 访问阿里云官网:打开阿里云官网
- 注册账号:点击"免费注册",使用手机号注册
- 验证身份:完成手机验证码验证和实名认证
- 登录账号:使用注册的账号登录
7.5.2 获取API密钥
进入通义千问控制台:
- 登录后,搜索"通义千问"
- 进入"通义千问"
创建API密钥:
- 点击"API密钥管理"
- 点击"创建密钥"
- 选择密钥类型
- 点击"确定"
保存密钥:
- 复制生成的"Access Key ID"和"Access Key Secret"
- 妥善保存,避免泄露
7.5.3 配置API密钥
设置环境变量:
- 添加
ALIYUN_ACCESS_KEY_ID和ALIYUN_ACCESS_KEY_SECRET环境变量
- 添加
使用python-dotenv:
- 在
.env文件中添加:ALIYUN_ACCESS_KEY_ID=your-access-key-id ALIYUN_ACCESS_KEY_SECRET=your-access-key-secret
- 在
在代码中使用:
from alibabacloud_dashscope import Generation Generation.api_key = "your-api-key"
7.6 API密钥管理最佳实践
7.6.1 安全管理
- 不要硬编码:避免在代码中直接写入API密钥
- 使用环境变量:通过环境变量或配置文件管理密钥
- 权限控制:为不同应用创建不同的API密钥
- 定期轮换:定期更换API密钥,增强安全性
- 访问限制:设置API密钥的访问IP限制(如果支持)
7.6.2 费用管理
- 设置限额:为每个API密钥设置使用限额
- 监控使用:定期查看API使用情况和费用
- 预算管理:根据项目需求制定合理的API使用预算
- 优化调用:减少不必要的API调用,优化提示词
7.6.3 错误处理
- 密钥无效:处理API密钥无效或过期的情况
- 配额耗尽:处理API配额耗尽的情况
- 网络错误:处理网络连接失败的情况
- 速率限制:处理API调用频率过高的情况
7.7 在LangChain中配置多模型API
7.7.1 LangChain中的模型配置
LangChain支持多种大模型,通过统一的接口调用不同的模型:
from langchain.chat_models import ChatOpenAI, ChatZhipuAI, ErnieBotChat
from langchain.prompts import ChatPromptTemplate
# 配置OpenAI模型
openai_model = ChatOpenAI(
model="gpt-3.5-turbo",
temperature=0.7,
api_key="your-openai-api-key" # 或从环境变量读取
)
# 配置智谱AI模型
zhipu_model = ChatZhipuAI(
model="glm-4",
temperature=0.7,
api_key="your-zhipu-api-key" # 或从环境变量读取
)
# 配置百度文心一言
ernie_model = ErnieBotChat(
model="ernie-bot",
temperature=0.7,
api_key="your-baidu-api-key",
secret_key="your-baidu-secret-key" # 或从环境变量读取
)
# 使用模型
prompt = ChatPromptTemplate.from_template("你好,请介绍一下自己")
# 调用OpenAI模型
response = openai_model(prompt.format_messages())
print("OpenAI:", response.content)
# 调用智谱AI模型
response = zhipu_model(prompt.format_messages())
print("智谱AI:", response.content)
# 调用百度文心一言
response = ernie_model(prompt.format_messages())
print("文心一言:", response.content)7.7.2 模型切换策略
在实际应用中,可以根据不同的场景和需求选择合适的模型:
- 根据语言:中文场景使用国产模型,英文场景使用OpenAI
- 根据任务:复杂任务使用GPT-4,简单任务使用GPT-3.5
- 根据成本:大量调用使用成本更低的模型
- 根据可靠性:关键任务使用多个模型交叉验证
7.8 API调用示例
7.8.1 OpenAI API调用示例
import os
from dotenv import load_dotenv
import openai
# 加载环境变量
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
# 调用Chat Completions API
response = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "你是一个友好的AI助手"},
{"role": "user", "content": "什么是AI智能体?"}
],
temperature=0.7,
max_tokens=500,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
print("响应:", response.choices[0].message.content)
print("使用的tokens:", response.usage.total_tokens)7.8.2 智谱AI API调用示例
import os
from dotenv import load_dotenv
from zhipuai import ZhipuAI
# 加载环境变量
load_dotenv()
api_key = os.getenv("ZHIPUAI_API_KEY")
# 初始化客户端
client = ZhipuAI(api_key=api_key)
# 调用API
response = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "system", "content": "你是一个友好的AI助手"},
{"role": "user", "content": "什么是AI智能体?"}
],
temperature=0.7,
max_tokens=500
)
print("响应:", response.choices[0].message.content)7.8.3 百度文心一言API调用示例
import os
from dotenv import load_dotenv
from erniebot import ErnieBot
# 加载环境变量
load_dotenv()
ErnieBot.api_key = os.getenv("BAIDU_API_KEY")
ErnieBot.secret_key = os.getenv("BAIDU_SECRET_KEY")
# 调用API
response = ErnieBot.chat.completions.create(
model="ernie-bot",
messages=[
{"role": "system", "content": "你是一个友好的AI助手"},
{"role": "user", "content": "什么是AI智能体?"}
],
temperature=0.7,
max_tokens=500
)
print("响应:", response.choices[0].message.content)7.9 常见问题与解决方案
7.9.1 API密钥无效
- 问题:API调用返回"Invalid API key"错误
- 解决方案:
- 检查API密钥是否正确复制
- 确认API密钥是否过期
- 检查账号是否有未支付的费用
- 重新生成新的API密钥
7.9.2 配额耗尽
- 问题:API调用返回"Quota exceeded"错误
- 解决方案:
- 检查账号的API配额使用情况
- 升级账号计划或购买更多配额
- 优化API调用,减少不必要的请求
- 使用成本更低的模型
7.9.3 网络连接失败
- 问题:API调用返回网络连接错误
- 解决方案:
- 检查网络连接是否正常
- 对于OpenAI,考虑使用代理服务
- 增加超时设置,重试失败的请求
- 使用国内的大模型API作为替代
7.9.4 速率限制
- 问题:API调用返回"Rate limit exceeded"错误
- 解决方案:
- 减少API调用频率
- 实现请求队列,控制并发数
- 增加请求之间的延迟
- 升级账号计划,获取更高的速率限制
7.10 实用案例:智能体多模型配置
7.10.1 案例目标
创建一个智能体,能够根据不同的任务和场景自动选择合适的大模型API。
7.10.2 实现代码
import os
from dotenv import load_dotenv
from langchain.chat_models import ChatOpenAI, ChatZhipuAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain
# 加载环境变量
load_dotenv()
class MultiModelAgent:
def __init__(self):
# 初始化不同的模型
self.models = {
"openai": ChatOpenAI(
model="gpt-3.5-turbo",
temperature=0.7,
api_key=os.getenv("OPENAI_API_KEY")
),
"zhipu": ChatZhipuAI(
model="glm-4",
temperature=0.7,
api_key=os.getenv("ZHIPUAI_API_KEY")
)
}
def select_model(self, task_type, content):
"""根据任务类型和内容选择合适的模型"""
# 中文内容优先使用智谱AI
if any(char >= '\u4e00' and char <= '\u9fff' for char in content):
return self.models["zhipu"]
# 复杂任务使用OpenAI
if task_type == "complex":
return self.models["openai"]
# 默认使用智谱AI
return self.models["zhipu"]
def run(self, task_type, content):
"""运行任务,选择合适的模型"""
# 选择模型
model = self.select_model(task_type, content)
# 创建提示模板
prompt = ChatPromptTemplate.from_template(
"你是一个专业的AI助手,请根据以下任务类型和内容提供详细的回答:\n"
"任务类型:{task_type}\n"
"内容:{content}\n"
"回答:"
)
# 创建链
chain = LLMChain(
llm=model,
prompt=prompt,
verbose=True
)
# 运行链
response = chain.run(
task_type=task_type,
content=content
)
return response
# 使用示例
if __name__ == "__main__":
agent = MultiModelAgent()
# 中文简单任务
response1 = agent.run(
"simple",
"请解释一下什么是AI智能体?"
)
print("中文任务响应:", response1)
# 英文复杂任务
response2 = agent.run(
"complex",
"Explain the concept of AI agents and their applications in enterprise settings."
)
print("英文任务响应:", response2)7.10.3 案例分析
- 多模型集成:集成了OpenAI和智谱AI的模型
- 智能选择:根据任务类型和内容自动选择合适的模型
- 环境配置:使用环境变量管理API密钥
- 统一接口:通过LangChain提供统一的调用接口
- 灵活性:可以根据需要添加更多模型
7.11 小结与展望
7.11.1 本集要点回顾
- 介绍了主流大模型API提供商及其特点
- 详细讲解了OpenAI、智谱AI、百度文心一言等API密钥的获取和配置
- 分享了API密钥管理的最佳实践
- 提供了在LangChain中配置多模型的方法
- 实践了智能体多模型配置的案例
7.11.2 后续学习方向
- 学习Jupyter Notebook和VS Code的高效开发配置
- 掌握Git版本控制的使用
- 了解LangSmith和LangFuse等智能体调试工具
- 开始实际的智能体开发实践
- 学习提示词工程技巧,优化API调用效果