大模型API入门:OpenAI与Claude快速上手
2024年,AI已经从"玩具"变成了"工具"。作为一名程序员,如果你还不会调用大模型API,就像10年前不会用数据库一样——不是说不能做开发,但会错过巨大的机会。给自己的项目加上AI能力(智能客服、代码审查、文档生成)开发AI应用创业或副业提升工作效率(自动化、辅助编程)✅ 如何申请OpenAI和Claude的API Key✅ 基础API调用方法✅ 关键参数的含义和使用✅ 写了一个多模型对话系统重
·
大模型API入门:OpenAI与Claude快速上手
📚 本文属于《AI开发实战》系列第1篇
- 已完成:0篇
- 进行中:系列一(8篇)← 当前第1篇
- 待开始:系列二、三、四、五
📌 系列目标:从0开始,系统掌握AI开发技能,从API调用到完整项目实战。
本文学习目标:
- 了解大模型API的基本概念
- 掌握OpenAI API的申请与调用
- 掌握Claude API的申请与调用
- 学会选择合适的模型和参数
- 完成第一个AI对话程序
一、前言
1.1 为什么要学大模型API?
2024年,AI已经从"玩具"变成了"工具"。
作为一名程序员,如果你还不会调用大模型API,就像10年前不会用数据库一样——不是说不能做开发,但会错过巨大的机会。
学会API调用,你可以:
- 给自己的项目加上AI能力(智能客服、代码审查、文档生成)
- 开发AI应用创业或副业
- 提升工作效率(自动化、辅助编程)
1.2 本文内容
我们将从最基础的开始:
- 申请OpenAI和Claude的API Key
- 学会基本的API调用
- 理解模型选择和参数设置
- 写一个完整的对话程序
不需要AI基础,有Python基础即可。
二、环境准备
2.1 注册账号
OpenAI:
- 访问 https://platform.openai.com
- 用邮箱注册(需要海外手机号验证)
- 进入API Keys页面,创建新Key
- 保存好Key,只显示一次!
Claude(Anthropic):
- 访问 https://console.anthropic.com
- 用邮箱注册
- 申请API访问(可能需要等待审核)
- 创建API Key
💡 提示:OpenAI需要绑定信用卡才能使用,Claude有免费额度。新手建议先申请Claude练手。
2.2 安装依赖
pip install openai anthropic python-dotenv
版本说明(审核确认 ✅):
- openai >= 1.0.0(本文使用1.12.0)
- anthropic >= 0.18.0(本文使用0.21.0)
- python-dotenv >= 1.0.0
2.3 配置环境变量
创建 .env 文件:
# OpenAI API Key
OPENAI_API_KEY=sk-your-openai-key-here
# Claude API Key
ANTHROPIC_API_KEY=sk-your-claude-key-here
安全提醒 ⚠️:
- 不要把API Key硬编码在代码里
- 不要把.env文件提交到Git
- 在.gitignore中添加
.env
三、OpenAI API实战
3.1 基础调用
import os
from openai import OpenAI
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 初始化客户端
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 调用GPT-4
def chat_with_gpt(prompt):
response = client.chat.completions.create(
model="gpt-4", # 模型选择
messages=[
{"role": "system", "content": "你是一个 helpful 的助手"},
{"role": "user", "content": prompt}
],
temperature=0.7, # 创造性程度
max_tokens=1000 # 最大返回长度
)
return response.choices[0].message.content
# 测试
result = chat_with_gpt("用Python写一个快速排序")
print(result)
运行结果:
以下是Python实现的快速排序算法:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
# 测试
print(quicksort([3,6,8,10,1,2,1]))
# 输出: [1, 1, 2, 3, 6, 8, 10]
3.2 关键参数解析
| 参数 | 说明 | 取值范围 | 建议 |
|---|---|---|---|
model |
模型选择 | gpt-3.5-turbo, gpt-4, gpt-4-turbo | 日常用gpt-3.5-turbo,复杂任务用gpt-4 |
temperature |
创造性 | 0-2 | 0.2-0.3(确定性高),0.7-0.8(创造性高) |
max_tokens |
最大长度 | 1-4096 | 根据需求设置,避免浪费 |
top_p |
采样范围 | 0-1 | 通常与temperature二选一 |
代码示例:不同参数效果对比
def compare_parameters():
prompt = "写一个关于AI的短句"
# 低temperature - 确定性高
response1 = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=0.2
)
# 高temperature - 创造性高
response2 = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}],
temperature=1.5
)
print(f"低temperature: {response1.choices[0].message.content}")
print(f"高temperature: {response2.choices[0].message.content}")
compare_parameters()
四、Claude API实战
4.1 基础调用
import os
from anthropic import Anthropic
from dotenv import load_dotenv
load_dotenv()
# 初始化客户端
client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
def chat_with_claude(prompt):
message = client.messages.create(
model="claude-3-opus-20240229", # Claude 3 Opus
max_tokens=1000,
messages=[
{"role": "user", "content": prompt}
]
)
return message.content[0].text
# 测试
result = chat_with_claude("解释一下什么是大模型")
print(result)
4.2 Claude模型选择
| 模型 | 特点 | 适用场景 | 价格 |
|---|---|---|---|
| claude-3-opus | 最强性能 | 复杂推理、代码生成 | 贵 |
| claude-3-sonnet | 性价比最高 | 日常任务、平衡选择 | 中等 |
| claude-3-haiku | 速度快 | 简单任务、实时响应 | 便宜 |
代码示例:根据任务选择模型
def smart_chat(prompt, complexity="medium"):
"""
根据任务复杂度选择模型
complexity: low, medium, high
"""
model_map = {
"low": "claude-3-haiku-20240307",
"medium": "claude-3-sonnet-20240229",
"high": "claude-3-opus-20240229"
}
message = client.messages.create(
model=model_map.get(complexity, "claude-3-sonnet-20240229"),
max_tokens=2000,
messages=[{"role": "user", "content": prompt}]
)
return message.content[0].text
# 简单任务用Haiku
print(smart_chat("你好", "low"))
# 复杂任务用Opus
print(smart_chat("分析这段代码的时间复杂度并优化", "high"))
五、完整实战:多模型对话系统
5.1 完整代码
import os
from openai import OpenAI
from anthropic import Anthropic
from dotenv import load_dotenv
load_dotenv()
class AIChat:
def __init__(self):
self.openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
self.anthropic_client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
self.history = []
def chat(self, prompt, model="gpt-4"):
"""支持多模型的对话"""
if model.startswith("gpt"):
# OpenAI
response = self.openai_client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "你是一个 helpful 的助手"},
*self.history,
{"role": "user", "content": prompt}
],
temperature=0.7
)
reply = response.choices[0].message.content
elif model.startswith("claude"):
# Claude
# 构建历史记录
messages = []
for msg in self.history:
messages.append({"role": msg["role"], "content": msg["content"]})
messages.append({"role": "user", "content": prompt})
response = self.anthropic_client.messages.create(
model=model,
max_tokens=2000,
messages=messages
)
reply = response.content[0].text
else:
return "不支持的模型"
# 保存历史
self.history.append({"role": "user", "content": prompt})
self.history.append({"role": "assistant", "content": reply})
return reply
def clear_history(self):
"""清空对话历史"""
self.history = []
# 使用示例
if __name__ == "__main__":
chat = AIChat()
# 使用GPT-4
print("=== GPT-4 ===")
print(chat.chat("用Python写个斐波那契数列", "gpt-4"))
# 使用Claude
print("\n=== Claude ===")
print(chat.chat("优化刚才的代码", "claude-3-sonnet-20240229"))
六、常见问题与解决
Q1: API Key无效?
解决:
- 检查Key是否正确复制(不要有多余空格)
- 确认环境变量已加载(print验证)
- 检查账号是否有足够额度
Q2: 调用超时?
解决:
- 检查网络连接
- 添加超时参数:
timeout=30 - 使用代理(国内网络可能需要)
Q3: 如何选择模型?
建议:
- 日常任务:gpt-3.5-turbo / claude-3-sonnet
- 复杂代码:gpt-4 / claude-3-opus
- 快速响应:claude-3-haiku
总结
本文我们学习了:
- ✅ 如何申请OpenAI和Claude的API Key
- ✅ 基础API调用方法
- ✅ 关键参数的含义和使用
- ✅ 写了一个多模型对话系统
重要提醒:
- API Key要保密,不要泄露
- 注意控制调用成本(查看官方定价)
- 国内网络可能需要代理
更多内容
如果本文对你有帮助,欢迎:
- 点赞收藏,让更多人看到
- 关注我的公众号【码头码农】,获取系列更新通知
- 评论区留言,交流学习中遇到的问题
公众号有什么?
- 📰 每日AI热点解读
- 💡 技术成长心得
- 🎯 实战项目复盘
写作不易,如果觉得有用,请点个赞支持下!
更多推荐



所有评论(0)