APIMaster.ai

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

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

Claude API Python 教程

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

安装依赖

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)

多轮对话

history = []

def chat(user_input):
    history.append({"role": "user", "content": user_input})
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=history,
    )
    reply = response.content[0].text
    history.append({"role": "assistant", "content": reply})
    return reply

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

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

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:
    image_data = 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": image_data,
                    },
                },
                {"type": "text", "text": "描述这张截图里的内容,如果有代码请分析其功能。"},
            ],
        }
    ],
)
print(response.content[0].text)

工具调用(Function Calling)

tools = [
    {
        "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=tools,
    messages=[{"role": "user", "content": "查询今天新增的用户数量。"}],
)

if response.stop_reason == "tool_use":
    tool_call = next(b for b in response.content if b.type == "tool_use")
    print(f"Tool: {tool_call.name}")
    print(f"Args: {tool_call.input}")

异步调用(高并发场景)

import asyncio
import anthropic

async def batch_generate(prompts):
    client = anthropic.AsyncAnthropic(
        api_key="你的 APIMaster Key",
        base_url="https://apimaster.ai",
    )
    
    async def generate_one(prompt):
        resp = await client.messages.create(
            model="claude-haiku-4-5",  # 批量任务用最便宜的模型
            max_tokens=256,
            messages=[{"role": "user", "content": prompt}],
        )
        return resp.content[0].text
    
    results = await asyncio.gather(*[generate_one(p) for p in prompts])
    return results

prompts = ["总结:" + article for article in articles]
results = asyncio.run(batch_generate(prompts))

错误处理

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 100 万 Token

购买 Claude API → · 查看价格 →