大模型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 本文内容

我们将从最基础的开始:

  1. 申请OpenAI和Claude的API Key
  2. 学会基本的API调用
  3. 理解模型选择和参数设置
  4. 写一个完整的对话程序

不需要AI基础,有Python基础即可。


二、环境准备

2.1 注册账号

OpenAI:

  1. 访问 https://platform.openai.com
  2. 用邮箱注册(需要海外手机号验证)
  3. 进入API Keys页面,创建新Key
  4. 保存好Key,只显示一次!

Claude(Anthropic):

  1. 访问 https://console.anthropic.com
  2. 用邮箱注册
  3. 申请API访问(可能需要等待审核)
  4. 创建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要保密,不要泄露
  • 注意控制调用成本(查看官方定价)
  • 国内网络可能需要代理

更多内容

如果本文对你有帮助,欢迎:

  1. 点赞收藏,让更多人看到
  2. 关注我的公众号【码头码农】,获取系列更新通知
  3. 评论区留言,交流学习中遇到的问题

公众号有什么?

  • 📰 每日AI热点解读
  • 💡 技术成长心得
  • 🎯 实战项目复盘

写作不易,如果觉得有用,请点个赞支持下!

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐