Im April haben wir Teams mehr Kontrolle über Agenten im Produktivbetrieb gegeben. Runs lassen sich vor kritischen Tool-Calls für eine menschliche Freigabe pausieren, private Services über Bridge erreichen und beliebige OpenAI-kompatible KI-Modelle anbinden. Tool Hooks und Live-Logs machen zusätzlich sichtbar, was im Anwendungscode passiert.
Human-in-the-Loop Approvals
Für manche Tool-Calls ist eine manuelle Freigabe vorgesehen. Das neue Approval-System kann einen Agenten vor jedem Aufruf eines als sensibel markierten Tools pausieren. Ein Mensch muss den Call anschließend im Dashboard genehmigen oder ablehnen.
approval:
tools:
- order_tools.cancel_order # always
- order_tools.process_refund: param.amount > 50 # conditional
timeout: 600
message: "This order action requires manager approval."
on_rejection: continue # let the agent adapt instead of failing- •Conditional Gates: Eine Freigabe nur anfordern, wenn eine Bedingung zutrifft, etwa ein Rückerstattungsbetrag über einem Grenzwert oder ein Aufrufer ohne Admin-Rechte
- •Timeouts: Trifft keine rechtzeitige Entscheidung ein, schlägt der Run fehl. Mit
on_rejection: continuewird die Ablehnung an den Agenten zurückgegeben, damit er sich anpassen kann - •on_rejection: Legt fest, ob eine Ablehnung den Run beendet (Standard) oder an den Agenten zurückgegeben wird, damit er einen anderen Weg wählen kann
- •Approvals Page: Eine eigene Dashboard-Ansicht listet alle ausstehenden Requests mit Tool-Name und Parametern, direktem Link zum Agenten und Aktionen zum Genehmigen oder Ablehnen
Den vollständigen Ablauf erklärt Human-in-the-loop Approvals für KI-Agenten.
Bridge: jetzt für Custom Tools und private Services
Connic Bridge war bisher nur für Verbindungen vorgesehen. Jetzt ist sie für sämtlichen Code in einem Projekt verfügbar: Custom Tools, Middleware, Tool Hooks, Custom Guardrails und eigene LLM-Provider. Damit sind Postgres, eine interne API oder ein selbst gehosteter Inference Endpoint in einem privaten Netzwerk erreichbar, ohne die Client Library zu ändern.
Private Services werden über einen speziellen Hostnamen adressiert; die Runtime tunnelt die Verbindung durch die benannte Bridge:
import psycopg
from connic import bridge_host
async def lookup_order(args, context):
# postgres-primary lives in a private VPC, only reachable via the bridge
dsn = f"postgresql://app:secret@{bridge_host('abc123', 'postgres-primary')}:5432/orders"
async with await psycopg.AsyncConnection.connect(dsn) as conn:
async with conn.cursor() as cur:
await cur.execute("SELECT * FROM orders WHERE id = %s", (args["order_id"],))
return await cur.fetchone()Projekte können auch mehrere benannte Bridges parallel betreiben, etwa eine pro Environment oder privatem Netzwerk. Einzelne Verbindungen und LLM-Provider wählen ihre jeweilige Bridge. Mehr Hintergründe bietet Connic Bridge: Agenten im privaten Netzwerk.
Tool Hooks
Mit Tool Hooks lässt sich vor und nach jedem Tool-Call eigener Code ausführen. Hooks können Parameter validieren oder ändern, Zugriffskontrollen durchsetzen, die Nutzung protokollieren oder Ergebnisse verändern, ohne die Tools selbst anzufassen.
from connic import AbortTool
async def before(tool_name, params, context):
# Block deletions for non-admin callers
if tool_name == "delete_order" and not context.get("is_admin"):
raise AbortTool({"error": "Permission denied"})
# Normalise IDs so the LLM can be sloppy
if "order_id" in params:
params["order_id"] = params["order_id"].upper()
return params
async def after(tool_name, params, result, context):
print(f"[hook] {tool_name}({params}) -> {result}")
return resultLege im Verzeichnis hooks/ eine Python-Datei mit dem Namen des Agenten ab, etwa hooks/order-manager.py, und das SDK erkennt sie. Verwende AbortTool in before, um den Call vollständig zu überspringen und eine strukturierte Antwort an das KI-Modell zurückzugeben.
Discoverable Tools
Dutzende selten genutzte Tools in jeden Prompt zu laden verbraucht Tokens und verleitet das KI-Modell zu falschen Entscheidungen. Mit Discoverable Tools listet die Konfiguration die immer verfügbaren Tools neben einem deutlich größeren Pool auf, der stattdessen für die Suche indexiert wird. Der Agent findet diese Tools zur Laufzeit über eine Suchanfrage in natürlicher Sprache.
tools:
- order_tools.lookup_order # always loaded
- order_tools.process_refund
discoverable_tools:
- reporting.* # 40 reporting helpers, indexed not preloaded
- support_tools.*
mcp_servers:
- name: github
discoverable: true # MCP server tools indexed for searchDiscoverable Tools verwenden dieselbe Syntax wie normale Tools, einschließlich Wildcards und Conditional Expressions. Sie funktionieren mit eigenen Funktionen ebenso wie mit Tools eines MCP-Servers.
KI-Dashboard-Builder
Eine Beschreibung des gewünschten Dashboards genügt, damit Connic es erstellt. Öffne ein Dashboard im Edit Mode und nutze die KI-Leiste am unteren Rand, um Widgets in normaler Sprache hinzuzufügen oder zu ändern. Zum Beispiel: „Zeige die P95-Dauer des order-manager-Agenten für die letzten 7 Tage“ oder „Gruppiere Runs nach customer_tier als Bar Chart“.
Jeder Prompt wird als eigener Bearbeitungsschritt gespeichert. So lässt sich das Dashboard schrittweise anpassen und die letzte Änderung mit Cmd+Z rückgängig machen, ohne das übrige Layout zu verlieren.
Eigene OpenAI-kompatible LLM-Provider
Beliebige KI-Modelle lassen sich anbinden. Jeder OpenAI-kompatible Endpoint lässt sich jetzt als Custom LLM Provider hinzufügen, darunter vLLM, Ollama, ein LiteLLM Proxy oder ein internes Inference Gateway. Öffne Projekt-Settings > LLM Provider, klicke auf Add Custom Provider, vergib ein eindeutiges Präfix und eine Base URL und nutze den Provider wie einen integrierten aus jedem Agenten:
# Custom provider configured with prefix "ollama"
model: ollama/llama3
# Custom provider configured with prefix "vllm"
model: vllm/mistral-7bLiegt der Endpoint in einem privaten Netzwerk, kombiniere ihn mit Bridge und wähle im Dropdown Route via Bridge des Providers eine Bridge. Anschließend wird jeder Request des Agenten automatisch getunnelt.
Live Logs aus Anwendungscode
Eigener Code ist keine Blackbox mehr. Alles, was ein Tool, eine Middleware, ein Hook oder Guardrail mit print ausgibt oder loggt, wird jetzt in Echtzeit in den Tab Logs des Projekts gestreamt. Ein Source-Tag zeigt, welche Komponente einen Eintrag erzeugt hat.
- •stdout, stderr und stdlib logging: Alle drei werden erfasst; spezielle SDK-Aufrufe sind nicht nötig
- •Tracebacks bei Abstürzen: Unbehandelte Exceptions in Anwendungscode werden mit vollständigem Traceback geloggt und lassen sich ohne Redeployment debuggen
- •Filtering: Der Tab Logs lässt sich nach Agenten, Log Level oder Source filtern
Weitere Verbesserungen
- •Overview-Dashboard für Projekte: Jedes Projekt erhält automatisch ein Dashboard Overview direkt auf der Projekt-Startseite, mit ausgewählten Health-Metriken, Charts und aktuellen Runs
- •Live-Streaming für Run Traces: Ein Live-Indikator zeigt laufende Runs, Trace-Schritte erscheinen während der Arbeit des Agenten und ein neuer Ablauf für kontrolliertes Beenden stoppt lange Runs
- •Flexible Run-Filter: Run-Tabellen und Dashboard Widgets lassen sich mit Expressions wie
context.customer == 'acme'oderoutput.sentiment == 'positive'filtern; Bar Charts können nach jedemrun_context-Feld gruppiert werden - •Dashboard-Reihenfolge & Navigation: Dashboards lassen sich in Projekt-Settings sortieren, in der Projekt-Seitenleiste hervorheben und über einen eigenen Drawer erstellen
- •Wildcard Tool Patterns: Ganze Module lassen sich in einer Zeile referenzieren, etwa
calculator.*für lokale Tools oderapi:my_api.users_*für API Spec Tools - •Git Monorepo Support: Lege eine Repository root directory in Projekt-Settings fest, damit Connic aus dem Unterverzeichnis mit den SDK-Dateien statt aus dem Repository-Root baut