Source: https://ailoot.ai/docs/de/connect/openai-sdk/
Canonical: https://ailoot.ai/docs/de/connect/openai-sdk/
Language: de

[Anbindung](https://ailoot.ai/docs/de/) 

# OpenAI SDK

[Markdown](https://ailoot.ai/docs/de/connect/openai-sdk/index.md)

Die offiziellen OpenAI-Bibliotheken für Python und Node.js funktionieren mit Ailoot ohne Codeänderungen; nur Adresse und Schlüssel werden angepasst.

## [](https://ailoot.ai/docs/de/connect/openai-sdk/#install)Installation

```bash
pip install openai
```

```bash
npm install openai
```

## [](https://ailoot.ai/docs/de/connect/openai-sdk/#client)Anbindung

Geben Sie die Basisadresse `https://api.ailoot.ai/v1` an. Entweder im Code oder über die Variablen `OPENAI_BASE_URL` und `OPENAI_API_KEY` — dann muss der Code überhaupt nicht geändert werden.

```python
from openai import OpenAI
import os

client = OpenAI(max_retries=0, 
    base_url="https://api.ailoot.ai/v1",
    api_key=os.environ["AILOOT_API_KEY"],
)

resp = client.chat.completions.create(
    model="claude-sonnet-5-5",
    messages=[{"role": "user", "content": "Erkläre in zwei Sätzen, was eine API ist."}],
)
print(resp.choices[0].message.content)
```

```js
import OpenAI from "openai";

const client = new OpenAI({ maxRetries: 0,
  baseURL: "https://api.ailoot.ai/v1",
  apiKey: process.env.AILOOT_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "claude-sonnet-5-5",
  messages: [{ role: "user", content: "Erkläre in zwei Sätzen, was eine API ist." }],
});
console.log(resp.choices[0].message.content);
```

## [](https://ailoot.ai/docs/de/connect/openai-sdk/#responses)Responses API

Das neue OpenAI-Format. Verfügbar bei Modellen, für die im Katalog das Responses-Format angegeben ist (53 Kennungen, darunter Claude, GPT, DeepSeek, Qwen, Kimi und GLM).

```python
resp = client.responses.create(
    model="gpt-6.1-sol",
    instructions="Antworte kurz und sachlich.",
    input="Was unterscheidet TCP von UDP?",
)
print(resp.output_text)
```

```js
const resp = await client.responses.create({
  model: "gpt-6.1-sol",
  instructions: "Antworte kurz und sachlich.",
  input: "Was unterscheidet TCP von UDP?",
});
console.log(resp.output_text);
```

## [](https://ailoot.ai/docs/de/connect/openai-sdk/#tools)Tools (function calling)

```python
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Wetter in der Stadt",
        "parameters": {
            "type": "object",
            "properties": {"city": {"type": "string"}},
            "required": ["city"],
        },
    },
}]

import json

messages = [{"role": "user", "content": "Wie ist das Wetter in Kasan?"}]
# Deaktivieren Sie automatische Wiederholungen: Prüfen Sie nach einem Timeout zuerst die Request ID in Ihrem Nutzungsverlauf.
client = client.with_options(max_retries=0)
for turn in range(4):
    resp = client.chat.completions.create(
        model="claude-sonnet-5-5", messages=messages, tools=tools,
    )
    message = resp.choices[0].message
    messages.append(message.model_dump(exclude_none=True))
    if not message.tool_calls:
        print(message.content)
        break
    for call in message.tool_calls:
        if call.function.name != "get_weather":
            raise ValueError("Unexpected function")
        arguments = json.loads(call.function.arguments)
        # Ersetzen Sie dies durch Ihre eigene Wetterfunktion; dieses Beispiel verwendet ausdrücklich Demodaten.
        result = {"city": arguments["city"], "temperature_c": 20, "demo": True}
        messages.append({"role": "tool", "tool_call_id": call.id,
                         "content": json.dumps(result, ensure_ascii=False)})
else:
    raise RuntimeError("Tool loop limit reached")
```

## [](https://ailoot.ai/docs/de/connect/openai-sdk/#embeddings)Embeddings

```python
emb = client.embeddings.create(
    model="nvidia/nemotron-3-embed-1b",
    input=["Erstes Dokument", "Zweites Dokument"],
)
print(len(emb.data), len(emb.data[0].embedding))
```

## [](https://ailoot.ai/docs/de/connect/openai-sdk/#vision)Bilder als Eingabe

```python
resp = client.chat.completions.create(
    model="gpt-6.1-sol",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "Was ist auf diesem Bild?"},
            {"type": "image_url", "image_url": {"url": "https://example.com/photo.jpg"}},
        ],
    }],
)
```

## [](https://ailoot.ai/docs/de/connect/openai-sdk/#errors)Fehlerbehandlung

Ailoot-Fehler entsprechen dem OpenAI-Format und lassen sich deshalb mit den Standardausnahmen des SDKs abfangen. Der Text enthält die Request ID.

```python
import openai

try:
    resp = client.chat.completions.create(model="claude-sonnet-5-5", messages=[{"role": "user", "content": "Hallo"}])
except openai.APIStatusError as e:
    print(e.status_code, e.response.json()["error"]["code"])
    print(e.response.headers.get("x-request-id"))
```

```js
try {
  await client.chat.completions.create({ model: "claude-sonnet-5-5", messages: [{ role: "user", content: "Hallo" }] });
} catch (err) {
  if (err instanceof OpenAI.APIError) {
    console.log(err.status, err.code, err.headers?.["x-request-id"]);
  }
}
```

OpenAI- und Anthropic-SDKs wiederholen Netzwerkfehler und 5xx gewöhnlich automatisch. Deaktivieren Sie dies bei Generierungen (`max_retries=0`) und prüfen Sie `X-Should-Retry` vor einem neuen Versuch. Eine verlorene Antwort bedeutet nicht, dass die Anfrage nicht ausgeführt wurde.

Noch Fragen? Senden Sie uns die Request ID und eine Beschreibung, damit wir Ihnen weiterhelfen können.[Support kontaktieren](mailto:support@ailoot.ai)

## Ailoot · Das Unternehmen und sein Projektportfolio





Ailoot baut auf bewährte Betriebserfahrung, einen großen Kundenstamm, stabilen Service und kontinuierliche KPI-Kontrolle.





Das Unternehmen und sein Projektportfolio: Millionen von Kunden; monatliche Umsätze in Milliardenhöhe.





Ailoot nutzt diese Betriebserfahrung für den API-Zugang zu KI-Funktionen in Kundenprodukten, Agenten, Anwendungen und Automatisierungen.
