Skip to main content
POST
BaseURL: Die Standard-BaseURL ist https://direct.evolink.ai, die Textmodelle und langlebige Verbindungen besser unterstützt. https://api.evolink.ai ist der primäre Endpunkt für multimodale Dienste und dient als Ausweichadresse für Textmodelle.
Rufen Sie GLM im Responses-Format für Textgespräche, Streaming und Funktionsaufrufe auf. Bildverständnis und Websuche stehen je nach Modell zur Verfügung. Parameter und Modellunterschiede sind unten beschrieben.

Modelle und Parameterunterschiede

Wählen Sie ein GLM-Modell. Alle vier unterstützen Text an diesem Endpunkt. Optionale Funktionen sind modellabhängig. Responses verwendet reasoning.effort als verschachteltes Feld statt reasoning_effort oder thinking auf oberster Ebene. Denk-Tokens sind in output_tokens enthalten. Einfache Aufgaben können reasoning_tokens=0 zurückgeben; daraus folgt nicht, dass Denken deaktivierbar ist. Denkintensität; low wird empfohlen. Kompatibilitätsregeln für glm-5.3 / glm-5.3-flash / glm-5.3-flashx minimal und none deaktivieren das Denken der 5.3-Serie nicht. Denk-Tokens werden als Ausgabe berechnet. Unbekannte Werte bleiben ohne Kompatibilitätszuordnung unverändert; verwenden Sie die aufgeführten Werte. Diese Zuordnungen gelten nicht für glm-5.2. Bei diesem Endpunkt kann glm-5.2 auch mit none Denk-Tokens erzeugen. Der Wert garantiert keine Deaktivierung des Denkens.

System-Prompts und mehrere Gesprächsrunden

instructions: Systemanweisungen. glm-5.3-flash unterstützt dieses Feld bei input als String. Bei einem Nachrichtenarray gehört der System-Prompt in die erste Nachricht mit role=system.
Speichert die Antwort zur späteren Referenz. glm-5.3-flash und glm-5.3-flashx unterstützen mehrere Runden mit store=true und previous_response_id. glm-5.2 unterstützt keine Fortsetzung per Antwort-ID; store=true aktiviert diese Funktion nicht. Senden Sie stattdessen den vollständigen Verlauf in input. id der vorherigen Antwort auf oberster Ebene. glm-5.3-flash und glm-5.3-flashx unterstützen dies mit store=true und demselben Modell. Übergeben Sie die Antwort-ID unverändert, keine Element-ID aus output. glm-5.2 gibt für dieses Feld 400 zurück. Für modellübergreifende Gespräche das Feld weglassen und den vollständigen Verlauf in input senden.

Streaming-Antworten

Aktiviert SSE-Streaming. Lesen Sie den Antworttext aus delta in response.output_text.delta. Der erfolgreiche Abschluss ist response.completed. Beenden und behandeln Sie die Runde auch bei response.incomplete, response.failed oder error. Warten Sie nicht ausschließlich auf [DONE] oder das Schließen der Verbindung. Beenden Sie das Lesen nach einem Abschlussereignis. HTTP 200 bedeutet nur, dass der Stream aufgebaut wurde; prüfen Sie den endgültigen Ereignisstatus. Eine Werkzeugrunde kann mit response.completed enden, obwohl Ihre Anwendung noch eine Funktion ausführen und eine weitere Anfrage senden muss.

Funktionsaufrufe

Wählen Sie das Funktionsbeispiel im Anfragemenü. Responses verwendet flache Funktionsdefinitionen:
  1. response.output durchlaufen und alle Elemente mit type=function_call sammeln.
  2. Den JSON-String arguments parsen und validieren, danach die Funktionen in Ihrer Anwendung ausführen.
  3. Das gesamte vorherige output an den Verlauf anhängen. Für jeden Aufruf ein function_call_output mit ursprünglicher call_id und output als String ergänzen.
  4. Den aktualisierten Verlauf als input der nächsten Anfrage senden. Das Beispiel zur Ergebnisrückgabe zeigt diese Struktur.
parallel_tool_calls: Erlaubt mehrere Werkzeugaufrufe pro Runde. false garantiert nicht genau einen Funktionsaufruf. Clients sollten alle function_call-Elemente durchlaufen und verarbeiten.

Bilder, Suche und JSON-Ausgabe

Bei glm-5.3-flash und glm-5.3-flashx können input_text und input_image im content-Array einer Benutzernachricht gemischt werden. image_url enthält eine öffentliche Bild-URL oder Base64 Data URL. Für glm-5.3 und glm-5.2 nur Text verwenden. Deklarieren Sie tools: [{"type":"web_search"}]. Die Suche läuft auf dem Server und liefert web_search_call-Elemente sowie Antworttext. Die Ausgabeelemente zeigen, ob gesucht wurde. Zusätzlich zu Tokenkosten können Gebühren pro Suche anfallen; es gelten die Modellpreise. Um das Gespräch nach einer Suche fortzusetzen, hängen Sie das gesamte vorherige output einschließlich web_search_call und message an input an und fügen anschließend Ihre neue Frage hinzu. Behalten Sie die ursprünglichen Felder wie id, status und action bei. Die Suche wurde bereits vom Server ausgeführt; erstellen Sie daher für web_search_call kein function_call_output. Siehe das Anfragebeispiel web_search_history. text.format.type: Ausgabeformat: text für Klartext, json_object für ein JSON-Objekt. Fordern Sie bei json_object im Prompt ausdrücklich gültiges JSON an und parsen und validieren Sie es im Client. Strikte JSON-Schema-Vorgaben werden nicht angeboten; json_schema oder strict=true garantieren keine vorgegebene Struktur.

Antworten und Nutzung

Geordnete Ausgabeelemente. Lesen Sie text aus content-Einträgen mit type=output_text innerhalb von Elementen mit type=message. reasoning kann vor dem Antworttext stehen; function_call-Runden können ohne Antworttext enden. Lesen Sie nicht immer output[0]. output_text: Optional zusammengefasster Antworttext; das Feld kann fehlen. Allgemeine Clients sollten output durchlaufen. output_text in message-Elementen; gegebenenfalls reasoning_text in reasoning-Elementen. Denktext kann auch als summary_text zurückkommen. Nicht jedes reasoning-Element besitzt content.
  • usage.input_tokens: Gesamte Eingabe-Tokens einschließlich Cache-Treffern. usage.input_tokens_details.cached_tokens: Im Cache gefundener Teil der Eingabe-Tokens; nicht nochmals zu input_tokens addieren. Präfix-Caching erfolgt automatisch und benötigt kein explizites cache_control. Maßgeblich ist der zurückgegebene Trefferwert.
  • usage.output_tokens: Gesamte Ausgabe-Tokens einschließlich Denk-Tokens. usage.output_tokens_details.reasoning_tokens: Für das Denken verwendeter Teil der Ausgabe-Tokens; nicht nochmals zu output_tokens zählen. Diese Angabe kann fehlen oder 0 sein.
status=incomplete mit incomplete_details.reason=max_output_tokens bedeutet, dass das Budget aufgebraucht ist. Es kann Denktext ohne Antwort geben; erhöhen Sie das Ausgabelimit.

Autorisierungen

Authorization
string
header
erforderlich

Übergeben Sie Bearer YOUR_API_KEY im Authorization-Header.

Body

application/json
model
enum<string>
Standard:glm-5.3-flash
erforderlich

Wählen Sie ein GLM-Modell. Alle vier unterstützen Text an diesem Endpunkt. Optionale Funktionen sind modellabhängig.

Verfügbare Optionen:
glm-5.3,
glm-5.3-flash,
glm-5.3-flashx,
glm-5.2
Beispiel:

"glm-5.3-flash"

input
erforderlich

Erforderlich. Textstring oder Array von Responses-Eingabeelementen. Arrays unterstützen Nachrichten, zurückgesendete Modellausgaben und function_call_output. Senden Sie für mehrere Gesprächsrunden jeweils den vollständigen Verlauf. Setzen Sie den System-Prompt an den Anfang als Nachricht mit role=system. Bilder verwenden input_image, nur mit glm-5.3-flash und glm-5.3-flashx. Verwenden Sie nicht das messages-/image_url-Blockformat von Chat Completions.

Beispiel:

"Stelle dich in einem Satz vor."

max_output_tokens
integer

Maximale Ausgabe-Tokens dieser Generierung einschließlich Denk-Tokens. Beginnen Sie bei 1024 und passen Sie den Wert an die Aufgabe an. Ein zu kleines Budget kann bereits beim Denken aufgebraucht werden, sodass nur reasoning-Elemente ohne Antworttext entstehen. Prüfen Sie status und incomplete_details. Der Parameter heißt max_output_tokens, nicht max_tokens.

Erforderlicher Bereich: x >= 1
Beispiel:

1024

stream
boolean
Standard:false

Aktiviert SSE-Streaming. Lesen Sie den Antworttext aus delta in response.output_text.delta. Der erfolgreiche Abschluss ist response.completed. Beenden und behandeln Sie die Runde auch bei response.incomplete, response.failed oder error. Warten Sie nicht ausschließlich auf [DONE] oder das Schließen der Verbindung.

reasoning
object

Responses verwendet reasoning.effort als verschachteltes Feld statt reasoning_effort oder thinking auf oberster Ebene. Denk-Tokens sind in output_tokens enthalten. Einfache Aufgaben können reasoning_tokens=0 zurückgeben; daraus folgt nicht, dass Denken deaktivierbar ist.

instructions
string

Systemanweisungen. glm-5.3-flash unterstützt dieses Feld bei input als String. Bei einem Nachrichtenarray gehört der System-Prompt in die erste Nachricht mit role=system.

tools
object[]

Unterstützt clientseitige function-Werkzeuge und serverseitiges web_search. Funktionen werden mit flachen Feldern name / description / parameters definiert, nicht als verschachteltes function-Objekt wie bei Chat Completions. Ihre Anwendung führt function_call aus und sendet Ergebnisse zurück. web_search läuft auf dem Server; tatsächliche Suchen können neben Tokens auch pro Aufruf berechnet werden. Es gelten die Modellpreise.

tool_choice

auto lässt das Modell wählen; none deaktiviert Werkzeuge; required verlangt einen Werkzeugaufruf. Für eine bestimmte Funktion: {"type":"function","name":"get_temperature"}. Das Verhalten einer erzwungenen Auswahl ist nicht für alle Modell-Werkzeug-Kombinationen gleich garantiert.

Verfügbare Optionen:
auto,
none,
required
Beispiel:

"auto"

parallel_tool_calls
boolean

Erlaubt mehrere Werkzeugaufrufe pro Runde. false garantiert nicht genau einen Funktionsaufruf. Clients sollten alle function_call-Elemente durchlaufen und verarbeiten.

text
object

Ausgabeformat. Beispiele verwenden json_object; HTTP 200 garantiert keine Einhaltung eines JSON-Schemas.

store
boolean

Speichert die Antwort zur späteren Referenz. glm-5.3-flash und glm-5.3-flashx unterstützen mehrere Runden mit store=true und previous_response_id. glm-5.2 unterstützt keine Fortsetzung per Antwort-ID; store=true aktiviert diese Funktion nicht. Senden Sie stattdessen den vollständigen Verlauf in input.

previous_response_id
string

id der vorherigen Antwort auf oberster Ebene. glm-5.3-flash und glm-5.3-flashx unterstützen dies mit store=true und demselben Modell. Übergeben Sie die Antwort-ID unverändert, keine Element-ID aus output. glm-5.2 gibt für dieses Feld 400 zurück. Für modellübergreifende Gespräche das Feld weglassen und den vollständigen Verlauf in input senden.

Beispiel:

"Antwort-ID aus der vorherigen Runde"

metadata
object

Benutzerdefinierte Metadaten als String-Schlüssel-Wert-Paare, abrufbar in metadata der Antwort. Keine Schlüssel oder vertraulichen Daten eintragen.

Beispiel:
temperature
number

Sampling-Parameter. Gültiger Bereich und Wirkung hängen vom Modell ab. Garantiert keine deterministische Ausgabe und kann bei Denkaufgaben entfallen.

top_p
number

Sampling-Parameter. Gültiger Bereich und Wirkung hängen vom Modell ab. Kann üblicherweise entfallen.

Antwort

Generierung abgeschlossen oder Ergebnis unvollständig; status prüfen. Streaming liefert text/event-stream.

id
string

ID dieser Antwort. Unverändert als previous_response_id übergeben.

Beispiel:

"response_demo"

object
string
Allowed value: "response"
created_at
integer

Erstellungszeit in Unix-Sekunden.

model
string
Beispiel:

"glm-5.3-flash"

status
enum<string>

completed beendet die Generierung dieser Runde, gegebenenfalls nur mit Werkzeugaufrufen. incomplete kennzeichnet eine unvollständige Ausgabe. Prüfen Sie output und error.

Verfügbare Optionen:
completed,
incomplete,
failed,
in_progress,
queued
output
object[]

Geordnete Ausgabeelemente. Lesen Sie text aus content-Einträgen mit type=output_text innerhalb von Elementen mit type=message. reasoning kann vor dem Antworttext stehen; function_call-Runden können ohne Antworttext enden. Lesen Sie nicht immer output[0].

output_text
string

Optional zusammengefasster Antworttext; das Feld kann fehlen. Allgemeine Clients sollten output durchlaufen.

usage
object
error
object | null

Antwortfehler; bei Erfolg normalerweise null.

incomplete_details
object
metadata
object | null