Cortex Code Agent SDK-Referenz – Python¶
Unter diesem Thema finden Sie die vollständige API-Referenz für das Cortex Code Agent SDK für Python, einschließlich aller Funktionen, Klassen und Typen.
Installation¶
Erfordert Python 3.10 oder höher. Abhängigkeiten: anyio, mcp, typing_extensions. Importieren Sie das Paket als cortex_code_agent_sdk. Das SDK erwartet, dass die Cortex Code CLI separat installiert wird. Wenn diese sich nicht in Ihrem PATH befindet, legen Sie CORTEX_CODE_CLI_PATH=/path/to/cortex fest oder übergeben Sie den cli_path in CortexCodeAgentOptions.
Funktionen¶
query()¶
Die Primärfunktion für die Interaktion mit Cortex Code. Gibt einen asynchronen Iterator zurück, der Meldungen sofort ausgibt, sobald sie eintreffen.
Parameter
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Benutzer-Eingabeaufforderungszeichenfolge oder asynchrones Iterations-Objekt aus Message-Dicts für die Streaming-Eingabe |
|
|
Konfigurationsoptionen. Die Standardeinstellung ist |
|
|
Kundenspezifischer Transport. Standardmäßig wird Subprozess-CLI-Transport verwendet |
Rückgabewerte
Ein asynchroner Iterator, der Message-Objekte ausgibt (AssistantMessage, ResultMessage, UserMessage, SystemMessage, StreamEvent).
Beispiel
CortexCodeSDKClient¶
Für interaktive Multi-Turn-Konversationen. Unterstützt das asynchrone Kontextmanagerprotokoll.
Methoden¶
Methode |
Beschreibung |
|---|---|
|
Stellt eine Verbindung zum CLI-Prozess her und hält die Sitzung für später offen |
|
Sendet eine Eingabeaufforderung an den Agenten |
|
Gibt alle Meldungen des Agenten aus |
|
Ausgabe von Meldungen bis zu einem |
|
Sendet ein Interrupt-Signal |
|
Ändert den Berechtigungsmodus für spätere Konversations-Turns |
|
Ändert das Modell während der Konversation |
|
Stoppt eine laufende Subagentenaufgabe |
|
Trennt die Verbindung zum CLI-Prozess |
Optionen¶
Konfiguration, die an query() oder CortexCodeSDKClient übergeben wird.
Option |
Typ |
Standard |
Beschreibung |
|---|---|---|---|
|
|
|
Arbeitsverzeichnis für die Sitzung |
|
|
|
Zu verwendendes Modell. Verwenden Sie |
|
|
|
Snowflake-Verbindungsname von Snowflake CLI-Verbindungseinstellungen, normalerweise |
|
|
|
Profilname (wird aus |
|
|
|
|
|
|
|
Sicherheitsflag, erforderlich bei Verwendung von |
|
|
|
Tools zur automatischen Genehmigung ohne Eingabeaufforderung |
|
|
|
Tools, um immer abzulehnen |
|
|
|
Begrenzt die Anzahl der Agent-Turns pro Abfrage |
|
|
|
Effort-Level (Aufwandsstufe) des Modells: |
|
|
|
Kundenspezifische System-Eingabeaufforderung. Übergeben Sie eine Zeichenfolge für eine vollständige Überschreibung oder |
|
|
|
Setzt die letzte Sitzung fort, anstatt eine neue zu beginnen |
|
|
|
Sitzungs-ID, um eine frühere Konversation fortzusetzen |
|
|
|
Wechselt beim Fortsetzen zu einer neuen Sitzungs-ID, anstatt die vorherige Sitzung fortzusetzen |
|
|
|
Zusätzliche Verzeichnisse, die dem Kontext des Agenten hinzugefügt werden sollen |
|
|
|
Umgebungsvariablen, die an den CLI-Prozess übergeben werden |
|
|
|
Plugin-Konfigurationen. Unterstützt derzeit lokale Plugins: |
|
|
|
Ein :py:klasse:`asyncio.Event`, das, wenn es gesetzt ist, eine Unterbrechung an den ausgeführten Agenten sendet. Die Sitzung bleibt für weitere Eingabeaufforderungen bestehen. Python-Äquivalent von |
|
|
|
Externe MCP-Serverkonfigurationen. Übergeben Sie ein dict, das Servernamen zu stdio, HTTP- oderSSE-Konfigurationen zuordnet. Der aktuelle SDK-Transport unterstützt nur dict-basierte MCP-Konfiguration. |
|
|
|
Hook-Ereignis-Handler (siehe Hooks) |
|
|
|
Kundenspezifischer Berechtigungs-Callback für Tools (siehe Tool-Berechtigungen) |
|
|
|
Schließt Streaming-Ereignisse auf Token-Ebene ein ( |
|
|
|
Strukturiertes Ausgabeformat. Beispiel: |
|
|
|
Deaktiviert MCP-Server |
|
|
|
Explizite Sitzungs-ID verwenden |
|
|
|
Einstellen der zu ladenden Quellen: |
|
|
|
Pfad zu CLI-Binärdateien. Beim Weglassen überprüft das SDK zuerst |
|
|
|
Zusätzliche CLI-Flags als Schlüssel-Wert-Paare. Verwenden Sie den |
|
|
|
Callback, der mit jeder Zeile der CLI-Ausgabe „stderr“ aufgerufen wird. |
Meldungstyp¶
AssistantMessage¶
Wird ausgegeben, wenn der Agent eine Antwort erzeugt. Enthält einen oder mehrere Inhaltsblöcke.
AssistantMessageError ist einer der folgenden Werte: "authentication_failed", "billing_error", "rate_limit", "invalid_request", "server_error", "unknown".
ResultMessage¶
Wird ausgegeben, wenn der Agent einen Turn beendet hat. Überprüfen Sie subtype und is_error auf Erfolg oder Misserfolg.
UserMessage¶
Wird als Echo zurückgegeben, wenn eine Benutzermeldung verarbeitet wird.
SystemMessage¶
Systemereignisse wie Sitzungsinitialisierung und Aufgabenaktualisierungen.
Das SDK bietet auch spezielle Unterklassen für aufgabenbezogene Systemmeldungen:
Unterklasse |
Beschreibung |
|---|---|
|
Wird ausgegeben, wenn eine Subagentenaufgabe gestartet wird. Felder: |
|
Wird ausgegeben, während eine Aufgabe ausgeführt wird. Felder: |
|
Wird ausgegeben, wenn eine Aufgabe abgeschlossen ist, fehlschlägt oder gestoppt wird. Felder: |
Diese Unterklassen erweitern SystemMessage, sodass vorhandene isinstance(msg, SystemMessage)-Überprüfungen weiterhin übereinstimmen.
StreamEvent¶
Teilweise Meldungsaktualisierung beim Streaming auf Token-Ebene. Erfordert include_partial_messages=True.
StreamEvent wird für Teiltext- und Denkblöcke ausgegeben. Vollständige Toolaufrufe gehen weiterhin als AssistantMessage-Inhaltsblöcke ein, und die Ergebnisse des Tools kommen immer noch als UserMessage-Inhaltsblöcke an.
Inhaltsblöcke¶
Typ |
Felder |
|---|---|
|
|
|
|
|
|
|
|
Hooks¶
Mit Hooks können Sie Lebenszyklusereignisse für die Protokollierung, Validierung oder kundenspezifisches Verhalten abfangen.
Konfigurieren von -Hooks¶
Hooks werden über die Option hooks unter CortexCodeAgentOptions konfiguriert. Jedes Hook-Ereignis wird einer Liste von HookMatcher-Objekten zugeordnet.
Signatur des Hook-Callbacks¶
Eingabe: Stark typisierte Hook-Eingabe (siehe Tabelle unten)
tool_use_id: Optionaler Bezeichner für die Toolverwendung
Kontext:
HookContextmit einemsignal-Feld (reserviert für zukünftige Unterstützung von Abbruchsignaturen)
Hook-Ereignisse¶
Ereignis |
Input Type |
Beschreibung |
|---|---|---|
|
|
Bevor ein Tool ausgeführt wird. Felder: |
|
|
Nachdem ein Tool abgeschlossen ist. Felder: |
|
|
Wenn der Benutzer eine Eingabeaufforderung übermittelt. Felder: |
|
|
Wenn der Agent stoppt. Felder: |
|
|
Wenn ein Subagent beendet ist. Felder: |
|
|
Bei Benachrichtigungsereignissen. Felder: |
|
|
Wenn ein Tool eine Berechtigung anfragt. Felder: |
|
|
Vor der Kontextkomprimierung. Felder: |
Alle Hook-Eingaben enthalten Basisfelder: session_id, transcript_path, cwd und optional permission_mode.
Hook-Ausgabe¶
Hook-Callbacks geben ein synchrones Ausgabeobjekt zurück:
Bemerkung
Das Python-SDK verwendet continue_ (mit einem nachstehenden Unterstrich), um einen Konflikt mit dem Python-Schlüsselwort zu vermeiden. Dies wird beim Senden an die CLI automatisch in continue umgewandelt.
Tool-Berechtigungen¶
Mit dem can_use_tool-Callback können Sie die Berechtigungen von Tools programmgesteuert steuern.
Bei vielen normalen Tool-Berechtigungsprüfungen enthält die Callback-Eingabe Felder wie {"action": ..., "resource": ...}. Für diese Prüfungen werden das Zulassen/Ablehnen-Ergebnis und die optionale Ablehnungsmeldung verwendet. updated_input wird für SDK-Routing-Pseudo-Tools wie AskUserQuestion und``ExitPlanMode`` verwendet, die Tool-spezifische Felder enthalten.
Typen
MCP-Serverkonfiguration¶
Die Option mcp_servers akzeptiert ein „dict“, das Servernamen externen MCP-Serverkonfigurationen zuordnet:
Konfigurationstyp |
Beschreibung |
|---|---|
|
Externer Prozess über stdio. Felder: |
|
Vom Server gesendete Ereignisse. Felder: |
|
HTTP-Transport. Felder: |
Beispiel
Fehlerbehandlung¶
Fehlertypen¶
Ausnahme |
Beschreibung |
|---|---|
|
Basisausnahme für alle SDK-Fehler |
|
CLI-Binärdatei nicht in PATH gefunden |
|
Eine Verbindung zu oder Kommunikation mit CLI ist fehlgeschlagen |
|
CLI-Prozess wurde unerwartet beendet |
|
Parsen von JSON aus CLI-Ausgabe ist fehlgeschlagen |
Rechtliche Hinweise¶
Wenn Ihre Cortex Code-Konfiguration ein Modell verwendet, das im Rahmen der Modell- und Service-Pass-Through-Bedingungen bereitgestellt wurde, unterliegt Ihre Nutzung dieses Modells zusätzlich den Bedingungen für dieses Modell auf dieser Seite.
Die Datenklassifizierung der Eingaben und Ausgaben ist in der folgenden Tabelle aufgeführt.
Klassifizierung von Eingabedaten |
Klassifizierung von Ausgabedaten |
Benennung |
|---|---|---|
Usage Data |
Kundendaten |
Abgedeckte AI-Features [1] |
Weitere Informationen dazu finden Sie unter KI und ML in Snowflake.