---
title: "Anthropic SDK-Integration (Python / TypeScript)"
description: "1折AI über die offiziellen Anthropic-SDKs aufrufen: base_url auf https://1zheai.com setzen; nativer Support für Caching, Streaming, Tool-Aufrufe und Thinking."
headingIds: {"Installation":"section-1","Aufruf":"section-2","Streaming-Ausgabe":"section-3","Aufruf mit Caching":"section-4","Verwendung von Umgebungsvariablen":"section-5","Häufige Fragen":"section-6","Anfrage- und Antwortstruktur":"section-7"}
---

<aside className="docs-publication" data-pagefind-ignore>

Dokumentation gepflegt von [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Quellen und Korrekturen](https://1zheai.com/en/editorial/).

Fehler gefunden? [Support kontaktieren](mailto:support@1zheai.com) mit Seitenadresse und Beschreibung. Senden Sie keine API-Schlüssel oder Kontodaten.

</aside>
Die offiziellen Anthropic-SDKs nutzen das native `/v1/messages`; alle Parameter von Claude können direkt verwendet werden. Zu ändern sind nur `base_url` und `api_key`.

## Installation

<CodeGroup>
```bash title="Python"
pip install anthropic
```
```bash title="TypeScript / Node.js"
npm install @anthropic-ai/sdk
```
</CodeGroup>

## Aufruf

<CodeGroup>
```python title="Python"
import os
import anthropic

client = anthropic.Anthropic(
    base_url="https://1zheai.com",
    api_key=os.environ["ONEZHE_API_KEY"],
)

message = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "用一句话介绍你自己"}],
)
print(message.model)
print(message.content[0].text)
print(message.usage)
```
```typescript title="TypeScript"
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://1zheai.com",
  apiKey: process.env.ONEZHE_API_KEY,
});

const message = await client.messages.create({
  model: "claude-sonnet-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(message.model);
console.log(message.content);
console.log(message.usage);
```
</CodeGroup>

`base_url` mit der Basisadresse eintragen, ohne `/v1` anzuhängen.

## Streaming-Ausgabe

<CodeGroup>
```python title="Python"
with client.messages.stream(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "写一首四行的诗"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
```
```typescript title="TypeScript"
const stream = client.messages.stream({
  model: "claude-sonnet-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "写一首四行的诗" }],
});
stream.on("text", (text) => process.stdout.write(text));
await stream.finalMessage();
```
</CodeGroup>

## Aufruf mit Caching

Lange, unveränderliche Inhalte in `system` legen und `cache_control` hinzufügen:

```python title="Python"
message = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": LONG_PROJECT_CONTEXT,  # 每次都一样的长文本
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[{"role": "user", "content": "根据上面的说明回答：..."}],
)
print(message.usage.cache_creation_input_tokens, message.usage.cache_read_input_tokens)
```

Beim zweiten Aufruf bedeutet `cache_read_input_tokens` größer als 0 einen Cache-Treffer. Details siehe [Prompt Caching](/de/docs/prompt-caching/).

## Verwendung von Umgebungsvariablen

Die offiziellen SDKs lesen `ANTHROPIC_BASE_URL` und `ANTHROPIC_API_KEY`; beim Erstellen des Clients müssen keine Parameter übergeben werden:

```bash
export ANTHROPIC_BASE_URL="https://1zheai.com"
export ANTHROPIC_API_KEY="sk-你的Key"
```

Anschließend den Client ohne Parameter erstellen:

```python
client = anthropic.Anthropic()  # 自动读取上面两个变量
```

Falls auf diesem Rechner auch Claude Code diese beiden Variablen liest, werden beide auf 1折AI umgestellt – in der Regel genau das Gewünschte.

## Häufige Fragen

<AccordionGroup>
<Accordion title="404？">

In `base_url` wurde zu viel `/v1` eingetragen. Das Anthropic SDK fügt `/v1/messages` selbst zusammen.

</Accordion>
<Accordion title="401？">

API-Schlüssel (API key) prüfen; zusätzlich liest das SDK auch `ANTHROPIC_AUTH_TOKEN`, falls diese in der Umgebung vorhanden ist (z. B. ein alter, früher für Claude Code gesetzter Wert) – alten Wert löschen und erneut versuchen.

</Accordion>
</AccordionGroup>

## Anfrage- und Antwortstruktur

Für system, Inhaltsblöcke und Stopp-Gründe die Details der [Messages-Schnittstelle](/de/docs/api-messages/) einsehen. Ein vollständiges Programm sollte Text anhand des Blocktyps lesen und nicht annehmen, dass der erste Block immer text ist.
