上一篇 下一篇 分享链接 返回 返回顶部

Claude API接入实战:从申请 Key 到 Python、Node.js 源码调用教程

发布人:慈云数据-客服中心 发布时间:13小时前 阅读量:7

Claude API接口调用教程|附源码

随着大语言模型在内容生成、代码开发、数据分析、智能客服、知识库问答等场景中的广泛应用,越来越多开发者开始将 AI 能力集成到自己的产品或业务系统中。Claude 是 Anthropic 推出的大语言模型系列,以较强的长文本理解能力、自然语言交互能力和代码辅助能力受到不少开发者关注。

本文将以实战教程的形式,系统讲解如何调用 Claude API,包括账号准备、API Key 配置、接口请求格式、Python 调用示例、Node.js 调用示例、流式输出、常见错误处理以及项目封装建议,并附带可直接运行的源码示例,帮助你快速完成 Claude API 的接入。


一、Claude API是什么?

Claude API 是 Anthropic 提供的模型调用接口,开发者可以通过 HTTP 请求或官方 SDK 与 Claude 模型进行交互。简单来说,你可以把 Claude 当作一个远程 AI 服务,通过发送用户输入、系统提示词、上下文消息等内容,让模型返回对应结果。

Claude API 常见用途包括:

  • AI 聊天机器人
  • 文档总结与提炼
  • 代码生成与代码解释
  • 多轮对话系统
  • 客服自动回复
  • 知识库问答
  • 文案生成
  • 数据分析辅助
  • 工作流自动化

Claude API 通常采用“消息式”调用方式,即通过 messages 数组传递对话内容。开发者可以指定模型、最大输出长度、系统提示词、温度参数等,从而控制模型回复的风格和内容长度。


二、调用Claude API前的准备工作

在正式调用接口之前,需要完成以下准备。

1. 注册Anthropic账号

首先需要访问 Anthropic 官方平台,注册开发者账号。注册完成后,进入控制台创建 API Key。

通常你需要完成以下步骤:

  1. 登录 Anthropic Console;
  2. 创建或选择一个 Workspace;
  3. 进入 API Keys 页面;
  4. 点击创建新的 API Key;
  5. 复制生成的 Key 并妥善保存。

注意:API Key 只会显示一次,建议复制后立即保存到安全位置,例如服务器环境变量、密钥管理系统或 .env 文件中。


2. 准备开发环境

本文将分别演示以下调用方式:

  • 使用 curl 直接调用;
  • 使用 Python 调用;
  • 使用 Node.js 调用;
  • 使用流式输出获取结果。

你可以根据自己的项目技术栈选择合适的方式。


3. 安全保存API Key

不要把 API Key 直接写死在代码中,更不要上传到 GitHub、Gitee 等公开代码仓库。

推荐使用环境变量:

export ANTHROPIC_API_KEY="你的Claude API Key"

如果使用 Windows PowerShell,可以执行:

$env:ANTHROPIC_API_KEY="你的Claude API Key"

如果是项目开发,也可以使用 .env 文件:

ANTHROPIC_API_KEY=你的Claude API Key

然后通过程序读取环境变量。


三、Claude API基础请求结构

Claude API 的核心调用接口通常是:

POST https://api.anthropic.com/v1/messages

常见请求头如下:

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

在部分 Anthropic API 文档或旧版本调用中,也可能看到类似:

x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01

实际使用时请以官方最新文档为准。为了兼容多数示例,本文示例会使用 Anthropic 官方常见的 x-api-keyanthropic-version 请求头形式。

一个典型请求体如下:

{
  "model": "claude-3-5-sonnet-20241022",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": "请用中文介绍一下Claude API的作用。"
    }
  ]
}

其中常用字段说明如下:

字段 类型 说明
model string 指定使用的 Claude 模型
max_tokens number 最大输出 token 数
messages array 对话消息列表
role string 消息角色,常见为 userassistant
content string/array 消息内容
system string 系统提示词,用于约束模型行为
temperature number 控制输出随机性,值越高越发散
stream boolean 是否开启流式输出

四、使用curl调用Claude API

如果你想快速测试 API 是否可用,可以先使用 curl 命令。

示例代码

curl https://api.anthropic.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-3-5-sonnet-20241022",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "请用中文写一段关于人工智能发展的简介。"
      }
    ]
  }'

如果请求成功,你会得到类似下面的返回结果:

{
  "id": "msg_xxx",
  "type": "message",
  "role": "assistant",
  "model": "claude-3-5-sonnet-20241022",
  "content": [
    {
      "type": "text",
      "text": "人工智能是计算机科学的重要分支..."
    }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 20,
    "output_tokens": 120
  }
}

真正的回复内容通常在:

content[0].text

五、Python调用Claude API完整源码

下面我们使用 Python 编写一个完整示例。

1. 安装依赖

可以使用官方 SDK:

pip install anthropic

如果你想读取 .env 文件,也可以安装:

pip install python-dotenv

2. Python基础调用示例

新建文件 claude_demo.py

import os
from anthropic import Anthropic

def main():
    api_key = os.getenv("ANTHROPIC_API_KEY")

    if not api_key:
        raise ValueError("请先设置环境变量 ANTHROPIC_API_KEY")

    client = Anthropic(api_key=api_key)

    response = client.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=1024,
        messages=[
            {
                "role": "user",
                "content": "请用中文介绍Claude API,并给出三个典型应用场景。"
            }
        ]
    )

    print(response.content[0].text)

if __name__ == "__main__":
    main()

运行代码:

python claude_demo.py

如果配置无误,终端会输出 Claude 返回的中文内容。


六、Python封装成通用函数

在实际项目中,我们不建议每次都重复写创建客户端、构造消息、解析结果等代码。可以封装成一个通用函数。

完整源码:claude_client.py

import os
from typing import List, Dict, Optional
from anthropic import Anthropic

class ClaudeClient:
    def __init__(
        self,
        api_key: Optional[str] = None,
        model: str = "claude-3-5-sonnet-20241022"
    ):
        self.api_key = api_key or os.getenv("ANTHROPIC_API_KEY")

        if not self.api_key:
            raise ValueError("缺少 ANTHROPIC_API_KEY,请检查环境变量或初始化参数")

        self.model = model
        self.client = Anthropic(api_key=self.api_key)

    def chat(
        self,
        user_message: str,
        system_prompt: Optional[str] = None,
        max_tokens: int = 1024,
        temperature: float = 0.7
    ) -> str:
        kwargs = {
            "model": self.model,
            "max_tokens": max_tokens,
            "temperature": temperature,
            "messages": [
                {
                    "role": "user",
                    "content": user_message
                }
            ]
        }

        if system_prompt:
            kwargs["system"] = system_prompt

        response = self.client.messages.create(**kwargs)

        if not response.content:
            return ""

        return response.content[0].text

if __name__ == "__main__":
    claude = ClaudeClient()

    result = claude.chat(
        user_message="请生成一份Python学习路线图。",
        system_prompt="你是一名资深Python讲师,回答要清晰、结构化、适合初学者。",
        max_tokens=1500
    )

    print(result)

这个封装类有几个优点:

  1. API Key 自动从环境变量读取;
  2. 支持自定义模型;
  3. 支持系统提示词;
  4. 支持设置最大输出长度;
  5. 支持设置 temperature
  6. 调用方式更简洁。

在项目中可以这样使用:

from claude_client import ClaudeClient

claude = ClaudeClient()

answer = claude.chat("帮我写一个MySQL分页查询SQL示例。")

print(answer)

七、Python多轮对话示例

Claude API 的多轮对话通常通过 messages 数组传递历史上下文。

例如:

import os
from anthropic import Anthropic

client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

messages = [
    {
        "role": "user",
        "content": "我正在学习Python,请推荐一个练手项目。"
    },
    {
        "role": "assistant",
        "content": "你可以尝试开发一个命令行待办事项管理工具。"
    },
    {
        "role": "user",
        "content": "请给出这个项目的核心功能和目录结构。"
    }
]

response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1200,
    messages=messages
)

print(response.content[0].text)

多轮对话的关键是:你需要把之前的用户问题和模型回答一起传给 API。模型本身不会永久记住你的会话状态,除非你的应用在本地或数据库中保存历史记录,并在下一次请求时重新传入。


八、Python流式输出示例

在聊天应用中,如果等模型完整生成后再展示,用户可能会感觉响应较慢。因此很多产品会使用“流式输出”,让模型边生成边返回,类似打字机效果。

流式输出源码

import os
from anthropic import Anthropic

client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

with client.messages.stream(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "请用中文写一篇300字左右的端午节介绍。"
        }
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

流式输出适合以下场景:

  • Web 聊天窗口;
  • 客服机器人;
  • 实时代码生成;
  • 长文章生成;
  • 语音助手文本展示;
  • AI 写作工具。

九、Node.js调用Claude API完整源码

如果你的项目使用 JavaScript 或 TypeScript,也可以通过 Node.js 调用 Claude API。

1. 初始化项目

mkdir claude-node-demo
cd claude-node-demo
npm init -y

安装依赖:

npm install @anthropic-ai/sdk dotenv

2. 配置环境变量

在项目根目录创建 .env 文件:

ANTHROPIC_API_KEY=你的Claude API Key

3. Node.js基础调用示例

新建 index.js

require("dotenv").config();

const Anthropic = require("@anthropic-ai/sdk");

const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

async function main() {
  if (!process.env.ANTHROPIC_API_KEY) {
    throw new Error("请先在 .env 文件中配置 ANTHROPIC_API_KEY");
  }

  const response = await anthropic.messages.create({
    model: "claude-3-5-sonnet-20241022",
    max_tokens: 1024,
    messages: [
      {
        role: "user",
        content: "请用中文说明如何在Node.js中调用Claude API。"
      }
    ]
  });

  console.log(response.content[0].text);
}

main().catch((error) => {
  console.error("调用Claude API失败:", error);
});

运行:

node index.js

十、Node.js封装调用方法

为了方便在业务项目中复用,可以封装一个通用方法。

完整源码:claudeClient.js

require("dotenv").config();

const Anthropic = require("@anthropic-ai/sdk");

class ClaudeClient {
  constructor(options = {}) {
    this.apiKey = options.apiKey || process.env.ANTHROPIC_API_KEY;
    this.model = options.model || "claude-3-5-sonnet-20241022";

    if (!this.apiKey) {
      throw new Error("缺少 ANTHROPIC_API_KEY,请检查环境变量");
    }

    this.client = new Anthropic({
      apiKey: this.apiKey,
    });
  }

  async chat({
    message,
    systemPrompt = "",
    maxTokens = 1024,
    temperature = 0.7,
  }) {
    const params = {
      model: this.model,
      max_tokens: maxTokens,
      temperature,
      messages: [
        {
          role: "user",
          content: message,
        },
      ],
    };

    if (systemPrompt) {
      params.system = systemPrompt;
    }

    const response = await this.client.messages.create(params);

    if (!response.content || response.content.length === 0) {
      return "";
    }

    return response.content[0].text;
  }
}

module.exports = ClaudeClient;

使用示例 app.js

const ClaudeClient = require("./claudeClient");

async function run() {
  const claude = new ClaudeClient();

  const result = await claude.chat({
    message: "请帮我写一个Express接口示例,用于接收用户问题并返回AI回答。",
    systemPrompt: "你是一名资深Node.js后端工程师,回答要包含代码示例。",
    maxTokens: 1500,
  });

  console.log(result);
}

run().catch(console.error);

运行:

node app.js

十一、Node.js流式输出示例

流式输出在 Node.js 中同样非常实用,尤其适合 Web 服务中通过 SSE 或 WebSocket 转发给前端。

require("dotenv").config();

const Anthropic = require("@anthropic-ai/sdk");

const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

async function main() {
  const stream = await anthropic.messages.stream({
    model: "claude-3-5-sonnet-20241022",
    max_tokens: 1024,
    messages: [
      {
        role: "user",
        content: "请用中文写一段关于程序员职业发展的建议。",
      },
    ],
  });

  for await (const text of stream.textStream) {
    process.stdout.write(text);
  }
}

main().catch(console.error);

十二、在Express中接入Claude API

下面给出一个更贴近实际业务的例子:创建一个 HTTP 接口,前端传入问题,后端调用 Claude API 并返回结果。

安装依赖

npm install express cors dotenv @anthropic-ai/sdk

完整源码:server.js

require("dotenv").config();

const express = require("express");
const cors = require("cors");
const Anthropic = require("@anthropic-ai/sdk");

const app = express();

app.use(cors());
app.use(express.json());

const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

app.post("/api/chat", async (req, res) => {
  try {
    const { message } = req.body;

    if (!message) {
      return res.status(400).json({
        success: false,
        message: "message不能为空",
      });
    }

    const response = await anthropic.messages.create({
      model: "claude-3-5-sonnet-20241022",
      max_tokens: 1024,
      system: "你是一个中文AI助手,回答要准确、清晰、简洁。",
      messages: [
        {
          role: "user",
          content: message,
        },
      ],
    });

    const answer = response.content?.[0]?.text || "";

    res.json({
      success: true,
      data: {
        answer,
        usage: response.usage,
      },
    });
  } catch (error) {
    console.error("Claude API调用失败:", error);

    res.status(500).json({
      success: false,
      message: "服务器内部错误,Claude API调用失败",
    });
  }
});

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
  console.log(`服务已启动:http://localhost:${PORT}`);
});

启动服务:

node server.js

请求测试:

curl -X POST http://localhost:3000/api/chat \
  -H "Content-Type: application/json" \
  -d '{"message":"请解释一下什么是RESTful API"}'

十三、常见参数详解

1. model

model 表示使用哪个 Claude 模型。不同模型在性能、速度、成本、上下文长度方面可能不同。

示例:

"model": "claude-3-5-sonnet-20241022"

实际开发中建议将模型名称放到配置文件或环境变量中,方便后续切换。


2. max_tokens

max_tokens 表示模型最多生成多少 token。它不是字符数,也不是中文汉字数。

如果设置太小,回答可能会被截断;如果设置太大,成本可能增加。

"max_tokens": 1024

3. temperature

temperature 用于控制输出随机性。

  • 较低值:更稳定、更严谨,适合代码、法律、数据分析;
  • 较高值:更有创意,适合文案、故事、营销内容。

常见设置:

"temperature": 0.3

或:

"temperature": 0.8

4. system

system 是系统提示词,用来定义模型角色、输出格式和回答边界。

例如:

"system": "你是一名资深Java架构师,请用专业但易懂的方式回答问题。"

系统提示词非常重要,它可以明显提升输出质量。比如你希望模型固定返回 JSON,就可以在系统提示词中说明:

你只返回合法JSON,不要输出Markdown,不要添加解释文字。

十四、常见错误与解决方案

1. API Key无效

常见报错可能包括:

authentication_error

解决方法:

  • 检查 API Key 是否复制完整;
  • 确认环境变量是否生效;
  • 确认没有多余空格或换行;
  • 检查 Key 是否被删除或禁用。

2. 模型名称错误

如果模型名称填写错误,可能会出现模型不存在或无权限访问的错误。

解决方法:

  • 查看官方文档中的最新模型名称;
  • 确认当前账号是否有权限调用该模型;
  • 将模型名称配置化,避免硬编码。

3. 请求频率过高

如果短时间大量请求,可能触发限流。

解决方法:

  • 增加重试机制;
  • 使用指数退避策略;
  • 控制并发数量;
  • 对用户请求进行排队;
  • 缓存重复问题的回答。

4. 输出内容被截断

如果回答末尾突然停止,可能是 max_tokens 设置太小。

解决方法:

  • 增大 max_tokens
  • 让模型分段输出;
  • 对长任务拆分处理;
  • 使用流式输出提升体验。

十五、调用Claude API的最佳实践

1. 不要在前端直接暴露API Key

这是非常重要的一点。不要在浏览器端、App端、小程序端直接调用 Claude API,因为这样会导致 API Key 泄露。

正确做法是:

前端 -> 你的后端服务 -> Claude API

由后端统一保存 API Key,并对用户请求进行鉴权、限流和日志记录。


2. 对输入内容做校验

用户输入可能为空、过长,甚至包含恶意内容。建议在后端进行校验:

  • 判断是否为空;
  • 限制最大长度;
  • 过滤明显异常请求;
  • 根据业务场景做内容安全检查。

3. 控制上下文长度

多轮对话需要传入历史消息,但如果历史内容过多,会增加成本并降低响应速度。

建议:

  • 只保留最近若干轮对话;
  • 对历史对话做摘要;
  • 将长期记忆存入数据库或向量库;
  • 根据问题动态检索相关上下文。

4. 增加异常处理和重试

生产环境中,网络波动、限流、服务异常都可能导致请求失败。建议增加重试机制。

Python 简单重试示例:

import time

def retry_call(func, retries=3, delay=1):
    for i in range(retries):
        try:
            return func()
        except Exception as e:
            if i == retries - 1:
                raise e
            time.sleep(delay * (2 ** i))

5. 记录usage用于成本统计

Claude API 返回中通常包含 usage 字段,例如:

"usage": {
  "input_tokens": 100,
  "output_tokens": 300
}

建议在生产系统中记录:

  • 用户 ID;
  • 请求时间;
  • 输入 token;
  • 输出 token;
  • 使用模型;
  • 请求场景;
  • 请求是否成功。

这样可以帮助你分析成本、优化提示词和控制预算。


十六、完整项目目录建议

如果你要在真实项目中集成 Claude API,可以参考下面的目录结构。

Python项目结构

claude-python-project/
├── .env
├── requirements.txt
├── main.py
├── claude_client.py
└── README.md

requirements.txt 示例:

anthropic
python-dotenv

Node.js项目结构

claude-node-project/
├── .env
├── package.json
├── server.js
├── claudeClient.js
└── README.md

十七、总结

本文从零开始介绍了 Claude API 的调用方法,并给出了 curl、Python、Node.js、Express 后端接口、流式输出等多种源码示例。

整体接入流程可以概括为:

  1. 注册 Anthropic 账号;
  2. 创建 API Key;
  3. 将 API Key 保存到环境变量;
  4. 选择合适的模型;
  5. 构造 messages 请求;
  6. 调用 Claude API;
  7. 解析 content[0].text
  8. 在业务系统中加入异常处理、限流、日志和成本统计。

对于个人开发者,可以先用 Python 或 Node.js 快速测试;对于企业项目,建议通过后端服务统一封装 Claude API,并结合鉴权、权限控制、日志审计、上下文管理和费用监控,构建稳定可靠的 AI 应用。

只要掌握了本文中的示例代码,你就可以很快把 Claude API 集成到自己的聊天机器人、AI 写作工具、代码助手或企业知识库系统中。

目录结构
全文