# 使用 Anthropic SDK

使用官方 Anthropic Python SDK 调用 Genesis Messages API。本页说明 SDK 的认证参数和地址配置；它只适用于 Anthropic Messages 请求，不适用于 OpenAI Chat Completions 或 Responses API。

## 前提条件

- 已准备可用于 Genesis 的访问令牌。
- 已从[获取可用模型](../../api/genesis-model-api/getting-started/available-models.md)取得支持 Messages 的模型 ID。
- 已安装 Python 和官方 Anthropic Python SDK。

```bash
pip install anthropic
```

## 配置环境变量

控制台提供的 Genesis Base URL 通常以 `/v1` 结尾。Anthropic SDK 需要 Genesis 的 origin/root，并自行追加 `/v1/messages`，因此不要把完整的 OpenAI 兼容 Base URL 直接传给 SDK：

```bash
export GENESIS_BASE_URL='<Genesis Base URL copied from the console>'
export GENESIS_MESSAGES_ORIGIN="${GENESIS_BASE_URL%/v1}"
export GENESIS_ACCESS_TOKEN="<ACCESS_TOKEN>"
```

`GENESIS_MESSAGES_ORIGIN` 应为不包含 `/v1` 的地址。请以控制台当前提供的地址为准。

## 发送 Messages 请求

将令牌传给 `auth_token`。不要将 Genesis 访问令牌传给 `api_key`；该参数会使用 `X-Api-Key` 请求头，而 Genesis Messages 请求使用 `Authorization: Bearer <ACCESS_TOKEN>`。

```python
import os

from anthropic import Anthropic

client = Anthropic(
    auth_token=os.environ["GENESIS_ACCESS_TOKEN"],
    base_url=os.environ["GENESIS_MESSAGES_ORIGIN"],
)

message = client.messages.create(
    model="<MESSAGES_MODEL_ID>",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": "用一句话解释数据血缘。",
        }
    ],
)

for block in message.content:
    if block.type == "text":
        print(block.text)
```

调用成功后，SDK 返回 Messages 响应对象。输出可能包含多个内容块，因此应检查内容块类型后再读取 `text`。

## 使用 SDK 时的注意事项

| 项目 | 配置或处理方式 |
| --- | --- |
| 认证 | 使用 `auth_token`，由 SDK 发送 `Authorization: Bearer <ACCESS_TOKEN>`。 |
| 地址 | `base_url` 使用不含 `/v1` 的 Genesis origin/root。 |
| 模型 | 使用当前凭证可访问且支持 Messages 的模型 ID。 |
| 流式输出 | 在 Messages 请求中启用 `stream` 后，按 Anthropic Messages 事件处理增量内容。 |
| 图像输入 | 使用 Anthropic Messages 内容块格式，并先确认模型支持多模态输入。 |
| 工具调用 | 仅在端点、模型和当前服务配置均支持时使用。 |

`stream`、图像内容块和工具定义属于 Messages 请求参数。字段结构、SSE 处理与能力限制见[Anthropic Messages API](../../api/genesis-model-api/anthropic-compatible/anthropic-messages-api.md)。

## 常见问题

| 现象 | 先检查 | 下一步 |
| --- | --- | --- |
| `401` 或认证错误 | 是否使用了 `api_key`，以及请求 Header | 改用 `auth_token`，并检查访问令牌是否有效。 |
| 返回路径错误 | `base_url` 是否包含重复的 `/v1` | 将 `base_url` 设为不含 `/v1` 的 Genesis origin/root。 |
| 模型不可用 | 模型 ID 与当前凭证范围 | 从当前可用模型列表中重新选择模型。 |
| 结果没有预期文本 | 是否假设响应只包含一个文本内容块 | 遍历 `message.content`，按内容块的 `type` 读取结果。 |

## 下一步

- [查看 Anthropic Messages 请求、响应和流式调用](../../api/genesis-model-api/anthropic-compatible/anthropic-messages-api.md)
- [查看当前凭证可用的模型](../../api/genesis-model-api/getting-started/available-models.md)
- [管理 Genesis 访问凭据](../../../guides/genesis/api-keys.md)
