APIMaster.ai

Claude API Python 教程 2026 — 完整代码示例 | APIMaster.ai

用 Python 调用 Claude API 完整教程:安装、基础对话、流式输出、多轮对话、图片识别、工具调用。通过 APIMaster.ai 在国内,使用 Claude Python API。

Claude API Python 教程

本文提供使用 Python 调用 Claude API 的完整代码示例,覆盖基础用法到进阶功能。全部示例通过 APIMaster.ai 接入,国内可直连使用。

安装依赖

pip install anthropic   # Anthropic 官方 SDK
pip install openai      # OpenAI 兼容模式(可选)

初始化客户端

import anthropic

client = anthropic.Anthropic(
    api_key="你的 APIMaster Key",
    base_url="https://apimaster.ai",  # Anthropic SDK 不加 /v1
)

或使用 OpenAI 兼容模式(如果你有现成的 OpenAI 代码):

from openai import OpenAI

client = OpenAI(
    api_key="你的 APIMaster Key",
    base_url="https://apimaster.ai/v1",
)

基础对话

import anthropic

client = anthropic.Anthropic(
    api_key="你的 APIMaster Key",
    base_url="https://apimaster.ai",
)

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "用 Python 实现一个快速排序算法,并解释原理。"}
    ],
)

print(response.content[0].text)

System Prompt(角色设定)

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=512,
    system="你是一位资深 Python 工程师,回答简洁,优先提供可运行的代码示例。",
    messages=[
        {"role": "user", "content": "如何高效读取超大 CSV 文件?"}
    ],
)
print(response.content[0].text)

多轮对话

对话历史 = []

def 发送消息(用户输入):
    对话历史.append({"role": "user", "content": 用户输入})
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=对话历史,
    )
    回答 = response.content[0].text
    对话历史.append({"role": "assistant", "content": 回答})
    return 回答

print(发送消息("Python 里的装饰器是什么?"))
print(发送消息("能给我一个实际应用场景的例子吗?"))

流式输出(推荐用于生成长文本)

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "写一篇 500 字的技术博客:Python 异步编程入门。"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
print()  # 换行

图片识别(Vision)

import base64

# 读取本地图片
with open("screenshot.png", "rb") as f:
    图片数据 = base64.standard_b64encode(f.read()).decode("utf-8")

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=512,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": 图片数据,
                    },
                },
                {"type": "text", "text": "描述这张截图里的内容,如果有代码请分析其功能。"},
            ],
        }
    ],
)
print(response.content[0].text)

工具调用(Function Calling)

工具列表 = [
    {
        "name": "查询数据库",
        "description": "执行 SQL 查询并返回结果",
        "input_schema": {
            "type": "object",
            "properties": {
                "sql": {"type": "string", "description": "要执行的 SQL 语句"},
                "数据库": {"type": "string", "enum": ["用户库", "订单库", "商品库"]},
            },
            "required": ["sql", "数据库"],
        },
    }
]

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=256,
    tools=工具列表,
    messages=[{"role": "user", "content": "查询今天新增的用户数量。"}],
)

if response.stop_reason == "tool_use":
    工具调用 = next(b for b in response.content if b.type == "tool_use")
    print(f"要调用的工具:{工具调用.name}")
    print(f"参数:{工具调用.input}")

异步调用(高并发场景)

import asyncio
import anthropic

async def 批量生成(提示词列表):
    client = anthropic.AsyncAnthropic(
        api_key="你的 APIMaster Key",
        base_url="https://apimaster.ai",
    )
    
    async def 单次生成(提示词):
        resp = await client.messages.create(
            model="claude-haiku-4-5",  # 批量任务用最便宜的模型
            max_tokens=256,
            messages=[{"role": "user", "content": 提示词}],
        )
        return resp.content[0].text
    
    结果 = await asyncio.gather(*[单次生成(p) for p in 提示词列表])
    return 结果

提示词 = ["总结:" + 文章 for 文章 in 文章列表]
结果 = asyncio.run(批量生成(提示词))

错误处理

import anthropic

try:
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=256,
        messages=[{"role": "user", "content": "你好"}],
    )
except anthropic.AuthenticationError:
    print("API Key 无效,请检查控制台")
except anthropic.RateLimitError:
    print("请求太频繁,稍后重试")
except anthropic.APIStatusError as e:
    print(f"API 错误 {e.status_code}:{e.message}")

模型选择建议

场景 推荐模型 原因
客服机器人、简单问答 claude-haiku-4-5 最快最便宜
代码生成与审查 claude-sonnet-4-6 最佳性价比
复杂推理与研究 claude-opus-4-8 能力最强
文档分析(超长上下文) claude-sonnet-4-6 20 万 Token

购买 Claude API → · 查看价格 →