Zum Inhalt springen
InfercomInfercomInfercom Documentation

Funktionen

Anthropic-kompatible Funktionen implementieren - Entwicklerhandbuch

Verwenden Sie das Anthropic SDK und die Messages API mit der Infercom API. Drop-in-kompatibel - ändern Sie nur die Base-URL und den API-Schlüssel für EU-souveräne Inferenz.

Die Infercom API unterstützt das Anthropic Messages API-Format (/v1/messages), sodass Sie das Anthropic Python SDK und kompatible Tools mit Infercom-Modellen verwenden können. Dies ist nützlich für Anwendungen und Frameworks, die auf der Anthropic API aufbauen, wie Claude Code, LangChains Anthropic-Provider oder eigene agentenbasierte Workflows.

Terminal-Fenster
pip install anthropic

Setzen Sie die base_url auf die Infercom API und geben Sie Ihren Infercom API-Schlüssel an.

import anthropic
client = anthropic.Anthropic(
base_url="https://api.infercom.ai",
api_key="ihr-infercom-api-schluessel"
)
import anthropic
client = anthropic.Anthropic(
base_url="https://api.infercom.ai",
api_key="ihr-infercom-api-schluessel"
)
message = client.messages.create(
model="gpt-oss-120b",
max_tokens=1024,
messages=[
{"role": "user", "content": "Was ist die Hauptstadt von Deutschland?"}
]
)
print(message.content[0].text)
import anthropic
client = anthropic.Anthropic(
base_url="https://api.infercom.ai",
api_key="ihr-infercom-api-schluessel"
)
with client.messages.stream(
model="gpt-oss-120b",
max_tokens=1024,
messages=[
{"role": "user", "content": "Schreibe ein Haiku über KI."}
]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

Verwenden Sie den system-Parameter, um dem Modell Anweisungen zu geben.

message = client.messages.create(
model="gpt-oss-120b",
max_tokens=1024,
system="Du bist ein hilfreicher Assistent, der wie ein Pirat spricht.",
messages=[
{"role": "user", "content": "Hallo!"}
]
)
message = client.messages.create(
model="gpt-oss-120b",
max_tokens=1024,
messages=[
{"role": "user", "content": "Mein Name ist Thomas."},
{"role": "assistant", "content": "Freut mich, Thomas!"},
{"role": "user", "content": "Wie ist mein Name?"}
]
)

Die Anthropic Messages API unterstützt Tool-Verwendung für Modelle mit Funktionsaufruf-Fähigkeiten.

import anthropic
client = anthropic.Anthropic(
base_url="https://api.infercom.ai",
api_key="ihr-infercom-api-schluessel"
)
message = client.messages.create(
model="gpt-oss-120b",
max_tokens=200,
tools=[
{
"name": "get_weather",
"description": "Holt das aktuelle Wetter für einen bestimmten Ort",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Die Stadt und das Land, z.B. München, Deutschland"
}
},
"required": ["location"]
}
}
],
messages=[
{"role": "user", "content": "Wie ist das Wetter in München?"}
]
)
print(message.content)

Wenn das Modell sich entscheidet, das Tool zu verwenden, enthält die Antwort einen tool_use-Inhaltsblock:

[
{
"type": "tool_use",
"id": "call_abc123",
"name": "get_weather",
"input": {"location": "München, Deutschland"}
}
]

Nach der Ausführung des Tools senden Sie das Ergebnis zurück, um die Konversation fortzusetzen:

message = client.messages.create(
model="gpt-oss-120b",
max_tokens=200,
tools=[
{
"name": "get_weather",
"description": "Holt das aktuelle Wetter für einen bestimmten Ort",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
],
messages=[
{"role": "user", "content": "Wie ist das Wetter in München?"},
{
"role": "assistant",
"content": [
{
"type": "tool_use",
"id": "call_abc123",
"name": "get_weather",
"input": {"location": "München, Deutschland"}
}
]
},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": "call_abc123",
"content": "Sonnig, 22°C"
}
]
}
]
)
print(message.content[0].text)
import anthropic
import asyncio
async def main():
client = anthropic.AsyncAnthropic(
base_url="https://api.infercom.ai",
api_key="ihr-infercom-api-schluessel"
)
message = await client.messages.create(
model="gpt-oss-120b",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hallo!"}
]
)
print(message.content[0].text)
asyncio.run(main())

Sie können die Messages API auch direkt mit curl aufrufen:

Terminal-Fenster
curl https://api.infercom.ai/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: ihr-infercom-api-schluessel" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "gpt-oss-120b",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hallo!"}
]
}'
Parameter Typ Beschreibung
model string Erforderlich. Das zu verwendende Modell (z.B. gpt-oss-120b)
messages array Erforderlich. Array von Nachrichtenobjekten mit role und content
max_tokens integer Erforderlich. Maximale Anzahl zu generierender Tokens
system string System-Prompt für das Modell
temperature number Sampling-Temperatur (0.0-2.0). Kein Standardwert, anders als bei der Anthropic API, die 1.0 verwendet.
top_p number Nucleus-Sampling-Parameter
top_k integer Top-k-Sampling-Parameter
stop_sequences array Benutzerdefinierte Stoppsequenzen
stream boolean Streaming-Antworten aktivieren
tools array Tool-Definitionen für Funktionsaufrufe
tool_choice object Tool-Verwendung steuern (auto, any oder spezifisches Tool)

Die folgenden Anthropic-spezifischen Funktionen werden nicht unterstützt:

  • Extended Thinking (thinking-Parameter)
  • Prompt-Caching (cache_control)
  • Vision/Bildeingaben
  • PDF-Dateieingaben
  • Zitate
  • Serverseitige Tools (Websuche, Code-Ausführung)
  • Batch-API
  • repetition_penalty (gibt auf diesem Endpunkt HTTP 400 zurück; verwenden Sie /v1/chat/completions)
Aspekt Anthropic Infercom
Modelle Claude (Opus, Sonnet, Haiku) Open-Source-Modelle (gpt-oss, Gemma, DeepSeek, Llama)
Base-URL https://api.anthropic.com https://api.infercom.ai
API-Schlüssel-Header x-api-key x-api-key (identisch)
Versions-Header Erforderlich: anthropic-version Unterstützt, aber optional
Fehlerstruktur Anthropic-Fehlerformat Anthropic-Fehlerformat (siehe unten)

/v1/messages gibt Fehler in der Anthropic-Struktur zurück, nicht in der OpenAI-Hülle der übrigen Infercom-Endpunkte. Der Body trägt ein "type": "error" auf oberster Ebene, und das error-Objekt enthält nur message und type:

{
"type": "error",
"error": {
"type": "not_found_error",
"message": "The model `nonexistent-model` does not exist or you do not have access to it."
},
"request_id": "req_6313f64378ad4a89b6005ab233a3f2a9"
}
Feld Hinweise
type (oberste Ebene) Immer error
error.type authentication_error, invalid_request_error oder not_found_error
error.message Für Menschen lesbare Erklärung
error.param / error.code Werden nicht zurückgegeben. Die OpenAI-kompatiblen Endpunkte liefern diese Felder, /v1/messages nicht
request_id Bei jedem Status vorhanden. Die meisten tragen das Präfix req_, bei der 401 fehlt es

Diese Struktur wird bei jedem Fehlerstatus zurückgegeben, darunter 400, 401, 404, 410 und 422. Die Strukturen der übrigen Endpunkte finden Sie unter API-Fehlercodes.

Wann Anthropic- vs. OpenAI-Kompatibilität verwenden

Abschnitt betitelt „Wann Anthropic- vs. OpenAI-Kompatibilität verwenden“
Anwendungsfall Empfohlene API
Bestehender Anthropic SDK-Code Anthropic Messages API (/v1/messages)
Claude Code, LangChain Anthropic Anthropic Messages API (/v1/messages)
OpenAI SDK-Code OpenAI Chat Completions API (/v1/chat/completions)
Agentenbasierte Workflows, Coding-Tools Responses API (/v1/responses)
Neue Projekte Beliebig - alle drei APIs funktionieren mit denselben Modellen