Runtime-Steuerung
Ausführungslimits, koordinierte parallele Runs, persistente Session-Verläufe und gemeinsame Konfigurationen für zusammengehörige Agenten.
Auf dieser Seite
Ausführungslimits und Wiederholungsversuche
max_concurrent_runs: 10
max_iterations: 50
timeout: 120
retry_options:
attempts: 5
initial_delay: 10
max_delay: 60
# Tool and sequential agents only:
rerun_middleware: truemax_concurrent_runsbegrenzt gleichzeitige Runs, bis zur Grenze des Abonnements.max_iterationsbegrenzt den LLM Loop, damit wiederholte Tool-Aufrufe nicht unbegrenzt laufen.timeoutlegt die maximale Ausführungszeit in Sekunden fest, mit mindestens fünf Sekunden und einer Obergrenze je nach Abonnement.retry_optionswiederholt den fehlgeschlagenen Vorgang. Bei LLM-Agenten wird nur die fehlgeschlagene KI-Modell-Anfrage wiederholt. Fehler aus Tool-Aufrufen werden an das KI-Modell zurückgegeben, ohne den Agenten von vorne zu starten. Bei Tool- und Sequential-Agenten wird der gesamte Vorgang erneut ausgeführt.attemptsschließt den ersten Versuch ein und ist auf 10 begrenzt.- KI-Modell-Anfragen verwenden begrenzten exponentiellen Backoff mit Jitter, sofern der Provider kein
Retry-Aftervorgibt.max_delaybegrenzt die automatisch berechnete Wartezeit. Gibt der Provider eine Wartezeit vor, wird diese vor einer weiteren Anfrage an dasselbe KI-Modell eingehalten. Das Gesamt-Timeout gilt weiterhin. rerun_middlewarewirkt sich nur auf Wiederholungsversuche auf Vorgangsebene bei Tool- und Sequential-Agenten aus; LLM-Agenten werden nie erneut ausgeführt.
Regeln zur Nebenläufigkeit
Regeln zur Nebenläufigkeit stellen sicher, dass pro eindeutigem Schlüssel immer nur ein Run aktiv ist. Verwende sie, wenn ein Agent Events für einen bestimmten Support-Prozess, Kunden oder Auftrag verarbeitet und eine parallele Verarbeitung zu Konflikten führen würde.
Queue-Modus (Standard)
Trifft ein weiteres Event für einen aktiven Schlüssel ein, wartet es, bis der erste Run beendet ist, und startet anschließend automatisch.
version: "1.0"
name: support-processor
type: llm
model: connic/gpt-5.6-terra
description: "Processes support tickets one at a time per process"
system_prompt: "You are a support agent. Process the incoming ticket."
# Only one run per process_id at a time. Additional runs wait in queue.
concurrency:
key: "process_id"
on_conflict: queueDrop-Modus
Trifft ein weiteres Event für einen aktiven Schlüssel ein, wird der neue Run sofort abgebrochen. Verwende diesen Modus, wenn doppelte Arbeit unnötig wäre.
version: "1.0"
name: notification-handler
type: tool
description: "Handles notifications, skipping duplicates"
tool_name: notifications.handle
# Drop duplicate runs for the same customer while one is active.
concurrency:
key: "data.customer_id"
on_conflict: dropSchlüssel extrahieren
key liest die Trigger-Payload in Punktnotation. Wenn ein Kafka-Payload {"data": {"customer_id": "abc"}} lautet, verwende data.customer_id. Existiert der Pfad nicht, wird die Nebenläufigkeitsregel für diesen Run übersprungen.
Zusammenspiel mit max_concurrent_runs
Beide Einschränkungen gelten. Mit max_concurrent_runs: 5 und concurrency.key: "process_id"können fünf Prozess-IDs parallel laufen, aber pro Prozess-ID kann nur ein Run aktiv sein.
Regeln zur Nebenläufigkeit werden bei Sequential-Agenten nicht unterstützt. Der Schlüssel wird aus der ursprünglichen Trigger-Payload gelesen. Das funktioniert für alle Trigger-Typen, darunter Kafka, HTTP, Cron, API und trigger_agent.
Persistente Sessions
Standardmäßig erstellt jede Anfrage eine isolierte Session. Persistente Sessions erhalten den Gesprächsverlauf über Anfragen, Neustarts und erneute Deployments hinweg.
version: "1.0"
name: support-bot
type: llm
model: connic/gpt-5.6-terra
description: "A support chatbot that remembers conversation history"
system_prompt: |
You are a helpful support agent. Use the conversation history
to provide contextual responses.
# Maintain persistent sessions keyed by chat ID from middleware
session:
key: context.chat_id
ttl: 86400 # Sessions expire after 24 hours of inactivity
# Keep long conversations within the model context window
context_compression:
enabled: true
# Optional model for compression summaries; defaults to the agent model
model: connic/gpt-5.6-luna
keep_recent_messages: 12
# Optional early compression based on model-reported prompt usage
max_prompt_tokens: 100000Session-Schlüssel
key identifiziert die Session und muss eines von zwei Präfixen verwenden:
context.<path>liest den Session-Schlüssel aus dem Middleware-Kontext. Die Middleware kann ihn auch aus den Anfragedaten ableiten.input.<path>liest den Session-Schlüssel direkt aus der Payload der Verbindung, bevor die Middleware ausgeführt wird. Die Payload muss gültiges JSON sein; auch verschachtelte Felder sind zugänglich.
Schlüssel in Middleware setzen
async def before(content: dict, context: dict) -> dict:
# Extract a stable identifier for this conversation from the connector payload.
payload = context.get("payload", {})
context["chat_id"] = payload.get("chat_id")
return contentInput-Schlüssel verwenden
# When the connector payload is JSON like {"user_id": "u123", "message": "..."}
session:
key: input.user_idTTL und Session-Verwaltung
Der optionale Wert ttl legt fest, nach wie vielen Sekunden ohne Aktivität eine Session abläuft. Das Minimum beträgt 60 Sekunden; ohne TTL laufen Sessions nie ab. Aktive Sessions lassen sich im Dashboard unter Storage > Sessions ansehen und löschen. Sessions gelten pro Environment.
Kontextkomprimierung
Füge context_compression hinzu, damit lange LLM-Sessions innerhalb des KI-Modell-Kontextfensters bleiben. Nach der Konfiguration lösen Kontextfensterfehler des Providers eine Komprimierung und einen automatischen Wiederholungsversuch aus. Lege context_compression.model fest, um ein separates KI-Modell für Zusammenfassungen zu verwenden; normale Agent-Aufrufe und ihre Wiederholungsversuche nutzen weiterhin das KI-Modell des Agenten. Lege max_prompt_tokens fest, um anhand der gemeldeten Prompt-Nutzung früher zu komprimieren. Verwende session_history.interval nur, wenn auch der gespeicherte Verlauf zwischen Runs komprimiert werden soll.
Wenn der Session-Schlüssel fehlt oder leer ist, schlägt der Run fehl. Stelle sicher, dass Middleware oder Payload ihn immer bereitstellen.
Kaskadierende Defaults mit _defaults.yaml
Füge _defaults.yaml in einem beliebigen Verzeichnis unter agents/ hinzu, um die Konfiguration mit Agenten auf dieser und darunterliegenden Ebenen zu teilen. Verwende die Datei für ein gemeinsames model, guardrails, Tools oder database.collections.
Connic kombiniert Standardwerte von der obersten zur tiefsten Ebene und wendet danach die Agent-Datei an, sodass deren Werte bei Konflikten Vorrang haben.
Zulässige Inhalte einer Defaults-Datei
Eine Defaults-Datei unterstützt dieselben Felder wie Agent YAML, muss aber nicht alle Pflichtfelder enthalten. Es gibt zwei Ausnahmen:
nameunddescriptionsind nicht erlaubt, da sie einen bestimmten Agenten identifizieren.versionist erlaubt, um die Schema-Version für das gesamte Projekt festzulegen. Die Agent-Datei muss sie dennoch zusammen mitnameunddescriptionfestlegen.
Merge-Regeln
- Skalare Werte wie
model,temperature,system_promptundtimeoutwerden durch die tiefere Ebene ersetzt. - Objekte wie
database,retrieval,retry_options,approval,sessionundguardrailswerden rekursiv nach Schlüssel zusammengeführt. - Listen werden zusammengeführt und dedupliziert:
tools,discoverable_toolsundapproval.toolswerden nach Tool-Referenz dedupliziert; eine tiefere Deklaration überschreibt den geerbten Eintrag.mcp_serverswerden nach Servernamen dedupliziert; eine tiefere vollständige Serverkonfiguration ersetzt die geerbte.guardrails.inputundguardrails.outputwerden, wenn vorhanden, nach Regelnamen dedupliziert und andernfalls angehängt.- Bei Sequential-Agenten werden in der Liste
agentsdoppelte Agentennamen entfernt.
Beispiel
version: "1.0"
type: llm
model: connic/gpt-5.6-terra
temperature: 0
guardrails:
input:
- type: prompt_injection
mode: block
output:
- type: system_prompt_leakage
mode: block
tools:
- audit.log_eventversion: "1.0"
name: refund-agent
description: "Issues refunds against the billing system."
system_prompt: "Refund only valid charges. Use the tools."
tools:
- billing.lookup_charge
- billing.issue_refund
approval:
tools:
- billing.issue_refund: param.amount > 50
timeout: 3600Der resultierende refund-agent erbt das KI-Modell, den Temperatur-Wert und beide Guardrails. Seine Tools werden zu [audit.log_event, billing.lookup_charge, billing.issue_refund].
Führe connic lint aus, um die zusammengeführte Konfiguration zu validieren. A/B-Test-Varianten namens <base>-test-<name>.yaml erben dieselben Standardwerte wie ihre Basis.
connic dev stellt eine Cloud-Entwicklungsumgebung mit Hot Reload bereit.