Zum Hauptinhalt springen

Documentation Index

Fetch the complete documentation index at: https://docs.infercom.ai/llms.txt

Use this file to discover all available pages before exploring further.

Die Responses API (POST /v1/responses) ist für agentenbasierte Workflows und werkzeugfähige Integrationen konzipiert. Sie strukturiert die Modellausgabe als typisierte Elemente—Nachrichten, Funktionsaufrufe und Reasoning—anstatt als einzelnes Textfeld, was ausgefeilte mehrstufige Agenten-Interaktionen ermöglicht.
Die Responses API ergänzt die Chat Completions API und ersetzt sie nicht. Verwenden Sie die Responses API für agentenbasierte Workflows und Tool-Aufrufe; verwenden Sie Chat Completions für einfachere Konversationsanwendungen.

Unterstützte Modelle

ModellReasoningFunction CallingHinweise
MiniMax-M2.5JaJaEmpfohlen für Agentic Coding
gpt-oss-120bJaJaSetzen Sie reasoning.effort: "high" für beste Tool-Aufrufe
Nicht alle Modelle unterstützen die Responses API. Modelle wie DeepSeek-V3.1 und Meta-Llama-3.3-70B-Instruct sind nur über Chat Completions verfügbar.

Hauptmerkmale

  • Strukturierte Ausgabe-Elemente: Antworten enthalten typisierte Elemente (message, function_call, reasoning) statt eines einzelnen Textfeldes
  • Zustandslos: Infercom speichert keinen Konversationszustand—liefern Sie den vollständigen Verlauf über input[] bei jeder Anfrage
  • Client-ausgeführte Tools: Wenn ein Tool benötigt wird, gibt das Modell ein function_call-Element zurück; Ihre Anwendung führt die Funktion aus und gibt das Ergebnis zurück
  • Streaming: Server-Sent Events mit typisierter Ereignishierarchie für Echtzeit-Ausgabe

Einfache Generierung

Die einfachste Verwendung übergibt eine Zeichenkette als Eingabe und erhält eine strukturierte Antwort.
from openai import OpenAI

client = OpenAI(
    base_url="https://api.infercom.ai/v1",
    api_key="ihr-infercom-api-schluessel"
)

response = client.responses.create(
    model="MiniMax-M2.5",
    input="Erkläre den Unterschied zwischen überwachtem und unüberwachtem Lernen."
)

# Textausgabe abrufen
print(response.output_text)

Antwortstruktur

Die Antwort enthält ein output-Array mit typisierten Elementen:
{
  "id": "resp_abc123",
  "object": "response",
  "status": "completed",
  "model": "MiniMax-M2.5",
  "output": [
    {
      "type": "reasoning",
      "id": "rs_xyz",
      "status": "completed",
      "content": [
        {
          "type": "reasoning_text",
          "text": "Der Benutzer fragt nach ML-Konzepten..."
        }
      ]
    },
    {
      "type": "message",
      "id": "msg_xyz",
      "role": "assistant",
      "status": "completed",
      "content": [
        {
          "type": "output_text",
          "text": "Überwachtes Lernen verwendet gelabelte Daten..."
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 45,
    "output_tokens": 120,
    "total_tokens": 165,
    "output_tokens_details": {
      "reasoning_tokens": 35
    }
  }
}

Systemanweisungen

Verwenden Sie den instructions-Parameter für Anweisungen auf Systemebene:
response = client.responses.create(
    model="MiniMax-M2.5",
    instructions="Du bist ein hilfreicher Assistent, der wie ein Pirat spricht.",
    input="Wie geht es dir heute?"
)

Mehrstufige Konversationen

Da die API zustandslos ist, fügen Sie den vollständigen Konversationsverlauf im input-Array ein:
# Runde 1
response_1 = client.responses.create(
    model="MiniMax-M2.5",
    input=[{"role": "user", "content": "Mein Name ist Thomas."}]
)

# Runde 2 - vorherige Nachrichten einbeziehen
response_2 = client.responses.create(
    model="MiniMax-M2.5",
    input=[
        {"role": "user", "content": "Mein Name ist Thomas."},
        response_1.output[0],  # Antwort des Assistenten einbeziehen
        {"role": "user", "content": "Wie ist mein Name?"}
    ]
)

print(response_2.output_text)  # "Dein Name ist Thomas..."

Function Calling

Die Responses API unterstützt Function Tools für agentenbasierte Workflows. Nur type: "function" Tools werden unterstützt.

Schritt 1: Tools definieren und erste Anfrage stellen

import json

tools = [{
    "type": "function",
    "name": "get_weather",
    "description": "Aktuelles Wetter für eine Stadt abrufen.",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {"type": "string", "description": "Stadtname"}
        },
        "required": ["city"]
    }
}]

response = client.responses.create(
    model="MiniMax-M2.5",
    input=[{"role": "user", "content": "Wie ist das Wetter in Berlin?"}],
    tools=tools
)

# Prüfen, ob das Modell eine Funktion aufrufen möchte
for item in response.output:
    if item.type == "function_call":
        print(f"Funktion: {item.name}")
        print(f"Argumente: {item.arguments}")

Schritt 2: Funktion ausführen und Ergebnis zurückgeben

# Funktion lokal ausführen
def get_weather(city: str) -> dict:
    # Ihr tatsächlicher Wetter-API-Aufruf hier
    return {"city": city, "temperature": "18°C", "condition": "Bewölkt"}

# Funktionsaufruf in der Antwort finden
tool_call = next(item for item in response.output if item.type == "function_call")
args = json.loads(tool_call.arguments)
result = get_weather(args["city"])

# Ergebnis an das Modell zurücksenden
follow_up = client.responses.create(
    model="MiniMax-M2.5",
    input=[
        {"role": "user", "content": "Wie ist das Wetter in Berlin?"},
        tool_call,  # Funktionsaufruf einbeziehen
        {
            "type": "function_call_output",
            "call_id": tool_call.call_id,
            "output": json.dumps(result)
        }
    ],
    tools=tools
)

print(follow_up.output_text)  # "Das Wetter in Berlin ist 18°C und bewölkt."

Tool-Auswahl

Steuern Sie, wann das Modell Tools verwendet, mit tool_choice:
WertVerhalten
"auto"Modell entscheidet, ob eine Funktion aufgerufen wird (Standard)
"none"Modell ruft keine Funktionen auf
"required"Modell muss mindestens eine Funktion aufrufen
{"type": "function", "name": "..."}Bestimmte Funktion erzwingen

Strukturierte Ausgabe (JSON-Modus)

Fordern Sie strukturierte JSON-Ausgabe mit dem text.format-Parameter an.

JSON-Objekt-Modus

response = client.responses.create(
    model="MiniMax-M2.5",
    input="Liste 3 europäische Hauptstädte auf",
    text={"format": {"type": "json_object"}}
)

import json
data = json.loads(response.output_text)

JSON-Schema-Modus

Für garantierte Struktur geben Sie ein JSON-Schema an:
response = client.responses.create(
    model="MiniMax-M2.5",
    input="Extrahiere Veranstaltungsdetails: SambaNova Launch am 1. Mai 2026 um 10 Uhr in San Francisco.",
    text={
        "format": {
            "type": "json_schema",
            "name": "event_extraction",
            "schema": {
                "type": "object",
                "properties": {
                    "title": {"type": "string"},
                    "date": {"type": "string"},
                    "time": {"type": "string"},
                    "location": {"type": "string"}
                },
                "required": ["title", "date", "time", "location"]
            }
        }
    }
)

import json
event = json.loads(response.output_text)
print(event)
# {"title": "SambaNova Launch", "date": "1. Mai 2026", "time": "10 Uhr", "location": "San Francisco"}

Reasoning

Reasoning-fähige Modelle zeigen ihren Denkprozess über reasoning-Ausgabe-Elemente. Steuern Sie die Reasoning-Tiefe mit reasoning.effort:
EffortVerhalten
"low"Schneller, weniger Tiefe
"medium"Ausgewogen (Standard)
"high"Tieferes Reasoning, höhere Token-Kosten
response = client.responses.create(
    model="MiniMax-M2.5",
    input="Was ist 15 * 23?",
    reasoning={"effort": "high"}
)

# Reasoning getrennt von der Antwort abrufen
for item in response.output:
    if item.type == "reasoning":
        print("Reasoning:", item.content[0].text)
    elif item.type == "message":
        print("Antwort:", item.content[0].text)
Wenn Sie gpt-oss-120b für Function Calling verwenden, setzen Sie reasoning.effort auf "high" für beste Ergebnisse.

Streaming

Aktivieren Sie Streaming für Echtzeit-Ausgabe mit stream: true. Die API sendet Server-Sent Events:
stream = client.responses.create(
    model="MiniMax-M2.5",
    input="Schreibe ein kurzes Gedicht über Geschwindigkeit.",
    stream=True
)

for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

Streaming-Ereignistypen

EreignisBeschreibung
response.createdAntwort initialisiert
response.in_progressGenerierung gestartet
response.output_item.addedNeues Ausgabe-Element erstellt
response.content_part.addedNeuer Inhaltsteil hinzugefügt
response.reasoning_text.deltaInkrementeller Reasoning-Abschnitt
response.reasoning_text.doneReasoning abgeschlossen
response.output_text.deltaInkrementeller Ausgabetext
response.output_text.doneAusgabetext abgeschlossen
response.function_call_arguments.deltaInkrementelle Funktionsargumente
response.function_call_arguments.doneFunktionsargumente abgeschlossen
response.content_part.doneInhaltsteil beendet
response.output_item.doneAusgabe-Element abgeschlossen
response.completedLetztes Ereignis mit Nutzungsstatistiken

Anfrageparameter

ParameterTypErforderlichBeschreibung
modelstringJaModell-ID (MiniMax-M2.5, gpt-oss-120b)
inputstring | arrayJaTexteingabe oder Konversations-Array
instructionsstringNeinSystemnachricht vor der Eingabe
streambooleanNeinSSE-Streaming aktivieren (Standard: false)
max_output_tokensintegerNeinMaximale zu generierende Tokens
temperaturenumberNeinZufälligkeit 0-2 (Standard: 0.7)
top_pnumberNeinNucleus Sampling 0-1 (Standard: 1)
top_kintegerNeinTop-K Sampling 1-100
toolsarrayNeinFunction Tool-Definitionen (max. 128)
tool_choicestring | objectNeinTool-Aufrufsteuerung
parallel_tool_callsbooleanNeinParallele Tool-Aufrufe erlauben (Standard: true)
text.formatobjectNeinAusgabeformat: text, json_object, json_schema
reasoning.effortstringNeinReasoning-Tiefe: low, medium, high

Antwortfelder

FeldTypBeschreibung
idstringEindeutige Antwort-ID
objectstringImmer "response"
statusstringcompleted, failed, in_progress, incomplete
modelstringVerwendete Modell-ID
outputarrayAusgabe-Elemente (Nachrichten, Reasoning, Funktionsaufrufe)
usageobjectToken-Nutzungsstatistiken
errorobjectFehlerdetails wenn status: "failed"

Nutzungsstatistiken

Das usage-Objekt enthält Performance-Metriken:
{
  "input_tokens": 45,
  "output_tokens": 120,
  "total_tokens": 165,
  "input_tokens_details": {"cached_tokens": 0},
  "output_tokens_details": {"reasoning_tokens": 35},
  "time_to_first_token": 0.084,
  "total_latency": 0.459,
  "output_tokens_per_sec": 261.4
}

Responses API vs Chat Completions

MerkmalResponses APIChat Completions
AusgabestrukturTypisierte Elemente (message, reasoning, function_call)Einzelne Nachricht mit Inhalt
Reasoning-SichtbarkeitSeparate reasoning-ElementeInline im Inhalt
Tool-ErgebnisseStrukturierte function_call_outputtool-Rollen-Nachrichten
Am besten fürAgentenbasierte Workflows, Coding-AgentenKonversationsanwendungen

Einschränkungen

  • Zustandslos: previous_response_id wird nicht unterstützt—liefern Sie den vollständigen Konversationsverlauf in input[]
  • Nur Function Tools: Eingebaute Tools (web_search, code_interpreter) werden nicht unterstützt
  • Nicht implementiert: frequency_penalty, presence_penalty, max_tool_calls, strict-Modus

Agentic Coding Integrationen

Die Responses API betreibt Agentic-Coding-Tools. Siehe Integrationsanleitungen:
  • OpenCode - Terminal-basierter Coding-Assistent
  • Cline - VS Code Erweiterung
  • Aider - Terminal Pair Programming

Nächste Schritte