欢迎光临
我们一直在努力

【weelinking系列Claude教程】 02 - Claude API 开发实战

02 – Claude API 开发实战

从零开始调用 Claude API,包含完整可运行的代码示例。 weelinking企业级API中转站


1. 环境准备

1.1 获取 API Key

weelinking解决方案(国内直连)
  • 访问 weelinking

  • 注册 / 登录账号

  • 进入 密钥管理 页面,点击 创建密钥 密钥管理 默认一键创建

  • 复制并妥善保存你的 Key(以 sk-ant- 开头)

  • Anthropic官方办法(需要极高的网络环境=纯净美国IP)
  • 访问 Anthropic Console
  • 注册 / 登录账号
  • 进入 API Keys 页面,点击 Create Key
  • 复制并妥善保存你的 Key(以 sk-ant- 开头)
  • 1.2 安装 SDK

    # Python SDK
    pip install anthropic

    # JavaScript/TypeScript SDK
    npm install @anthropic-ai/sdk

    1.3 配置 API Key

    # 方式一:环境变量(推荐)

    # Windows PowerShell 临时生效
    $env:ANTHROPIC_BASE_URL = "https://api.weelinking.com"
    #复制你刚刚创建的密钥替换
    $env:ANTHROPIC_API_KEY = "sk你刚刚创建的密钥复制替换这个字符串"

    # Windows PowerShell 永久生效 #每个命令要执行5秒钟,不是卡了
    [System.Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://api.weelinking.com", [System.EnvironmentVariableTarget]::User)
    #复制你刚刚创建的密钥替换
    [System.Environment]::SetEnvironmentVariable("ANTHROPIC_AUTH_TOKEN", "sk替换成你创建的密钥", [System.EnvironmentVariableTarget]::User)

    # Windows CMD
    set ANTHROPIC_BASE_URL = "https://api.weelinking.com"
    set ANTHROPIC_API_KEY=sk替换成你创建的密钥

    # Linux / macOS
    export ANTHROPIC_BASE_URL = "https://api.weelinking.com"
    export ANTHROPIC_API_KEY="sk-ant-xxxxx"

    # 方式二:在代码中直接传入(不推荐用于生产环境)
    # client = Anthropic(api_key="sk-ant-xxxxx", base_url="https://api.weelinking.com")


    2. 第一个 API 调用

    完整代码见 examples/api_hello.py

    2.1 最简单的调用

    from anthropic import Anthropic

    client = Anthropic()

    message = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    messages=[
    {"role": "user", "content": "用一句话介绍你自己。"}
    ]
    )

    print(message.content[0].text)
    # 输出示例:我是 Claude,由 Anthropic 开发的 AI 助手,擅长分析、写作和编程。

    2.2 Messages API 核心参数

    参数必需说明
    model 模型 ID,如 claude-sonnet-4-5-20250514
    max_tokens 最大输出 token 数
    messages 对话消息列表
    system System Prompt,设定 Claude 的角色和行为
    temperature 随机性,0~1(0 = 确定性,1 = 随机)
    top_p 核采样参数
    stop_sequences 自定义停止序列

    2.3 响应结构

    # message 对象的关键属性
    message.id # 消息 ID
    message.content # 内容块列表(TextBlock, ToolUseBlock 等)
    message.model # 使用的模型
    message.role # "assistant"
    message.stop_reason # "end_turn" | "max_tokens" | "tool_use"
    message.usage # token 使用统计
    .input_tokens # 输入 token 数
    .output_tokens # 输出 token 数


    3. System Prompt — 控制 Claude 的行为

    System Prompt 是你给 Claude 的"角色说明书",放在 system 参数中:

    message = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    system="你是一位资深 Python 开发者,回答简洁专业,必要时给出代码示例。",
    messages=[
    {"role": "user", "content": "Python 中 list 和 tuple 的核心区别?"}
    ]
    )

    System Prompt 最佳实践:

    • 明确角色和专业领域
    • 指定输出格式和风格
    • 设定约束条件(如字数限制、语言)
    • 提供背景信息

    4. 多轮对话

    Claude 通过 messages 数组中交替的 user 和 assistant 消息来维护对话历史:

    conversation = [
    {"role": "user", "content": "什么是递归?"},
    {"role": "assistant", "content": "递归是函数调用自身的编程技术…"},
    {"role": "user", "content": "给我一个 Python 例子。"}
    ]

    message = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    messages=conversation
    )

    注意事项:

    • 消息必须以 user 开头
    • user 和 assistant 必须交替出现
    • 每轮对话都会消耗输入 token(包括历史消息)
    • 长对话注意 token 用量控制

    💡 国内访问 Claude和Codex: weelinking – 直连、稳定、不折腾

    5. Streaming(流式输出)

    完整代码见 examples/api_streaming.py

    流式输出让 Claude 逐 token 返回结果,适合聊天界面等需要实时显示的场景:

    with client.messages.stream(
    model="claude-sonnet-4-5-20250514",
    max_tokens=512,
    messages=[{"role": "user", "content": "写一首关于编程的小诗"}]
    ) as stream:
    for text in stream.text_stream:
    print(text, end="", flush=True)

    流式 vs 非流式:

    特性非流式流式
    等待时间 等待全部生成完 立即开始接收
    用户体验 一次性显示 逐字显示(打字机效果)
    适用场景 批处理、后台任务 聊天界面、实时交互
    代码复杂度 简单 稍复杂

    6. Tool Use(工具调用)

    完整代码见 examples/api_tool_use.py

    Tool Use 让 Claude 调用你定义的函数,与外部世界交互。

    6.1 工作流程

    用户请求 → Claude 判断需要工具 → 返回 tool_use
    → 你的代码执行工具 → 结果发回 Claude → Claude 生成最终回答

    6.2 定义工具

    tools = [
    {
    "name": "get_weather",
    "description": "获取指定城市的当前天气信息",
    "input_schema": {
    "type": "object",
    "properties": {
    "city": {
    "type": "string",
    "description": "城市名称,如:北京"
    }
    },
    "required": ["city"]
    }
    }
    ]

    6.3 处理工具调用

    response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    tools=tools,
    messages=messages,
    )

    if response.stop_reason == "tool_use":
    for block in response.content:
    if block.type == "tool_use":
    # block.name = "get_weather"
    # block.input = {"city": "北京"}
    # block.id = "toolu_xxx"
    result = your_function(**block.input)
    # 将结果发回 Claude…

    6.4 实战:天气查询 + 数学计算

    运行 examples/api_tool_use.py 可以看到 Claude 如何:

    • 识别用户意图并选择合适的工具
    • 一次调用多个工具
    • 组合工具结果生成最终回答

    7. Extended Thinking(扩展思维)

    完整代码见 examples/api_extended_thinking.py

    让 Claude 在回复前进行深度思考,显著提升复杂推理的准确度:

    response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=16000,
    thinking={
    "type": "enabled",
    "budget_tokens": 8000 # 思考预算
    },
    messages=[{"role": "user", "content": "你的复杂问题…"}]
    )

    # 响应包含 thinking 块和 text 块
    for block in response.content:
    if block.type == "thinking":
    print("思考过程:", block.thinking)
    elif block.type == "text":
    print("最终回答:", block.text)

    思考预算建议:

    任务复杂度建议预算示例场景
    中等 4,000~8,000 数学计算、简单推理
    较高 8,000~16,000 代码审查、逻辑分析
    极高 16,000~32,000 复杂数学、架构设计

    8. 多模态(Vision & PDF)

    完整代码见 examples/api_multimodal.py

    8.1 图片分析

    import base64

    # 读取图片并转为 base64
    with open("image.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

    response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    messages=[{
    "role": "user",
    "content": [
    {
    "type": "image",
    "source": {
    "type": "base64",
    "media_type": "image/png",
    "data": image_data,
    },
    },
    {"type": "text", "text": "描述这张图片。"}
    ],
    }],
    )

    8.2 PDF 分析

    with open("document.pdf", "rb") as f:
    pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")

    response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=4096,
    messages=[{
    "role": "user",
    "content": [
    {
    "type": "document",
    "source": {
    "type": "base64",
    "media_type": "application/pdf",
    "data": pdf_data,
    },
    },
    {"type": "text", "text": "总结这份文档的要点。"}
    ],
    }],
    )


    9. Prompt Caching(提示缓存)

    对于重复使用相同 System Prompt 的场景,缓存可大幅降低成本:

    response = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    system=[
    {
    "type": "text",
    "text": "你是一个专业的法律顾问…" * 100, # 长 System Prompt
    "cache_control": {"type": "ephemeral"} # 启用缓存
    }
    ],
    messages=[{"role": "user", "content": "问题…"}]
    )

    # 查看缓存效果
    print(f"缓存读取 tokens: {response.usage.cache_read_input_tokens}")
    print(f"缓存创建 tokens: {response.usage.cache_creation_input_tokens}")

    缓存有效期: 5 分钟(短期),可配置为 1 小时(长期)


    10. 错误处理

    from anthropic import (
    Anthropic,
    APIError,
    AuthenticationError,
    RateLimitError,
    )

    client = Anthropic()

    try:
    message = client.messages.create(
    model="claude-sonnet-4-5-20250514",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}]
    )
    except AuthenticationError:
    print("API Key 无效,请检查 ANTHROPIC_API_KEY")
    except RateLimitError:
    print("请求过于频繁,请稍后重试")
    except APIError as e:
    print(f"API 错误: {e.status_code}{e.message}")


    11. 实战代码文件清单

    💡 国内访问 Claude和Codex: weelinking – 直连、稳定、不折腾

    文件说明运行命令
    api_hello.py 基础调用、System Prompt、多轮对话 python examples/api_hello.py
    api_streaming.py 流式输出、事件流、交互式聊天 python examples/api_streaming.py
    api_tool_use.py 工具调用、多工具联合使用 python examples/api_tool_use.py
    api_extended_thinking.py 扩展思维、代码审查、逻辑推理 python examples/api_extended_thinking.py
    api_multimodal.py 图片分析、PDF 解析 python examples/api_multimodal.py

    上一篇: 01-Claude 模型全解析 下一篇: 03-Prompt Engineering 实战指南

    赞(0)
    未经允许不得转载:171主机测评 » 【weelinking系列Claude教程】 02 - Claude API 开发实战
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址