Claude API使用教程:从注册到调用

在众多大语言模型中,Anthropic 推出的 Claude 凭借出色的长文本理解、严谨的推理能力和优秀的中文表现,成为许多开发者在写作、编程、分析场景下的首选。然而 Claude 的官方 API 与 OpenAI 在请求格式上有不少差异,新手第一次接入时常常卡在鉴权、消息结构和模型选择上。

本教程会从零开始,带你完整走一遍 Claude API 的接入流程:先了解 Claude 各个模型的特点与适用场景,再分别演示原生 Anthropic API通过 EnlyAI 用 OpenAI 兼容格式调用 Claude两种方式,最后给出流式输出、多轮对话和成本控制的实战建议。文中的代码示例都可以直接复制运行。

一、Claude 模型家族与特点

Anthropic 采用“三档模型”策略,用同一个 API 接口提供不同能力级别的模型,开发者只需修改 model 字段即可切换。理解每个模型的定位,是合理控制成本和效果的第一步。

模型 定位 上下文窗口 典型场景
Claude 3.5 Sonnet 均衡旗舰 200K 编程、推理、复杂任务
Claude 3 Opus 最强能力 200K 深度分析、创作
Claude 3 Haiku 轻量快速 200K 高频调用、实时场景

Claude 的几个核心优势值得重点关注:

选型建议:日常开发和复杂推理优先用 Claude 3.5 Sonnet,性价比最高;需要极致质量且预算充足时上 Opus;高并发、低延迟场景用 Haiku。

二、获取 Claude API Key

调用 Claude API 需要一个 API Key。官方途径是在 Anthropic Console 注册账号、绑定付款方式后创建 Key。但 Anthropic 官方对部分地区和支付方式有访问限制,注册流程相对繁琐,且需要单独维护一套密钥和账单。

更省心的做法是使用 EnlyAI 这类 LLM API 聚合平台。EnlyAI 完全兼容 OpenAI API 格式,注册后即可拿到一个统一密钥,不仅能调用 Claude 全系列模型,还能无缝切换 GPT、Gemini 等其他模型,所有调用汇总在一份账单里,无需分别管理多个平台账号。本文后续示例会同时给出两种接入方式。

三、原生 Anthropic API 调用方式

Anthropic 官方 SDK 提供了 anthropic 这个 Python 包。它的请求结构与 OpenAI 有明显区别:系统提示词 system 是顶层参数而非放在 messages 里,消息角色只有 userassistant 两种。

首先安装 SDK:

# 安装 Anthropic 官方 SDK
pip install anthropic

最基础的调用示例:

import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ.get("ANTHROPIC_API_KEY")
)

message = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    system="你是一位简洁的技术写作助手",
    messages=[
        {"role": "user", "content": "用三句话解释什么是 RAG"}
    ]
)

print(message.content[0].text)

对应的 cURL 命令,注意 Anthropic 要求同时传 x-api-keyanthropic-version 两个头:

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 1024,
    "system": "你是一位简洁的技术写作助手",
    "messages": [{"role": "user", "content": "用三句话解释什么是 RAG"}]
  }'

几个关键参数说明:

四、通过 EnlyAI 用 OpenAI 兼容格式调用 Claude

原生 Anthropic SDK 的格式与 OpenAI 不兼容,这意味着如果你项目里已经用了 OpenAI SDK,想切换到 Claude 就得改请求结构。EnlyAI 解决了这个痛点——它把 Claude 的接口转译成 OpenAI 兼容格式,你只需把 base_url 指向 https://enlyai.com/v1,就能用熟悉的 OpenAI SDK 直接调用 Claude。

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-enlyai-key",
    base_url="https://enlyai.com/v1"
)

response = client.chat.completions.create(
    model="claude-3-5-sonnet",
    messages=[
        {"role": "system", "content": "你是一位简洁的技术写作助手"},
        {"role": "user", "content": "用三句话解释什么是 RAG"}
    ]
)

print(response.choices[0].message.content)

对应的 cURL,格式与调用 GPT 完全一致:

curl https://enlyai.com/v1/chat/completions \
  -H "Authorization: Bearer sk-your-enlyai-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-sonnet",
    "messages": [
      {"role": "system", "content": "你是一位简洁的技术写作助手"},
      {"role": "user", "content": "用三句话解释什么是 RAG"}
    ]
  }'

这种方式的好处显而易见:

五、流式输出与多轮对话

和大多数 LLM 一样,Claude 支持流式输出(Streaming),可以让用户更快看到第一个字,显著改善交互体验。通过 EnlyAI 调用时,流式接口与 OpenAI 完全一致。

from openai import OpenAI

client = OpenAI(
    api_key="sk-your-enlyai-key",
    base_url="https://enlyai.com/v1"
)

stream = client.chat.completions.create(
    model="claude-3-5-sonnet",
    messages=[{"role": "user", "content": "写一段 200 字的产品文案,主题是 AI 编程助手"}],
    stream=True
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

多轮对话只需把历史消息按顺序追加到 messages 数组即可。Claude 会根据完整上下文理解对话脉络:

messages = [
    {"role": "system", "content": "你是一位耐心的编程导师"},
    {"role": "user", "content": "Python 里列表和元组有什么区别?"},
    {"role": "assistant", "content": "列表可变,元组不可变……"},
    {"role": "user", "content": "那什么时候该用元组?"}
]

resp = client.chat.completions.create(
    model="claude-3-5-sonnet",
    messages=messages
)
print(resp.choices[0].message.content)

六、成本控制与最佳实践

Claude 按 token 计费,输入和输出价格不同(通常输出更贵)。要控制成本,可以从以下几个方面入手:

  1. 按场景选模型:简单分类、抽取用 Haiku;复杂推理用 Sonnet;只有真正需要极致质量时才上 Opus。模型选对,成本能差一个数量级。
  2. 控制上下文长度:200K 上下文是上限不是目标。塞进去的 token 都要付费,且过长上下文会拖慢响应。做长文档处理时,优先用检索(RAG)裁剪相关片段,而不是整篇丢进去。
  3. 设置 max_tokens:明确限制输出长度,避免模型“刹不住车”产生冗长回复。
  4. 缓存重复前缀:Anthropic 支持 prompt caching,对固定的系统提示词和长文档做缓存,可大幅降低重复调用的输入成本。
  5. 监控 token 用量:每次响应里的 usage 字段记录了输入输出 token 数,务必落库统计,否则账单容易失控。

下面是一个读取 token 用量的示例:

resp = client.chat.completions.create(
    model="claude-3-5-sonnet",
    messages=[{"role": "user", "content": "你好"}]
)

usage = resp.usage
print(f"输入 token: {usage.prompt_tokens}")
print(f"输出 token: {usage.completion_tokens}")
print(f"总计: {usage.total_tokens}")

七、常见问题排查

接入 Claude API 时,几个高频问题及解决思路:

掌握以上内容,你已经能独立完成 Claude API 的接入和调用了。无论是用原生 Anthropic SDK 追求最新特性,还是通过 EnlyAI 用 OpenAI 兼容格式统一管理多模型,都能根据项目需求灵活选择。

想用一套 API 调用 Claude、GPT、Gemini?

EnlyAI 提供 OpenAI 兼容的统一接口,支持 Claude 全系列模型,注册即送免费额度,无需单独申请 Anthropic 账号,一套密钥搞定所有主流大模型。

立即注册 EnlyAI →