Function Calling & Tool-Integration mit der innoGPT API
Mit der Responses API kannst du eigene Tools (Funktionen) definieren, die das KI-Modell während eines Gesprächs aufrufen kann. Das ist die Grundlage für Agenten, Workflows mit n8n, Datenbankabfragen, externe API-Aufrufe und vieles mehr.
💡 Funktioniert auch mit n8n, Make, Zapier und LangChain. Da die innoGPT API OpenAI-kompatibel ist, kannst du sie in jedem Tool nutzen, das OpenAI als Provider unterstützt. Die vollständige interaktive Doku zum Live-Testen liegt eingeloggt unter Einstellungen → API → Dokumentation.
Wie Function Calling funktioniert
Tools definieren — du beschreibst Funktionen mit JSON-Schema
Modell entscheidet — es analysiert die Anfrage und ruft ggf. ein Tool auf
Du führst aus — dein Code ruft die echte Funktion mit den Argumenten auf
Ergebnis zurück — das Modell baut das Ergebnis in seine Antwort ein
Beispiel: Wetter-Tool
curl -X POST https://app.innogpt.de/api/ext/v1/responses \
-H "Authorization: Bearer $INNOGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5",
"input": "Wie ist das Wetter in Berlin?",
"tools": [
{
"type": "function",
"name": "get_weather",
"description": "Aktuelles Wetter für einen Ort abrufen",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "Stadtname, z. B. Berlin, Paris"
},
"units": {
"type": "string",
"enum": ["celsius", "fahrenheit"]
}
},
"required": ["location"]
}
}
]
}'
Tool-Definition: Schema
Tool Choice steuern
Mit tool_choice legst du fest, wie aggressiv das Modell Tools nutzen soll:
Parallele Tool-Aufrufe
Standardmäßig kann das Modell mehrere Tools parallel ausführen:
{
"model": "gpt-5",
"input": "Wie ist das Wetter in Paris, Tokio und New York?",
"tools": [...],
"parallel_tool_calls": true
}
⚠️ Bekanntes Verhalten: Anthropic- und Google-Modelle halten sich bei komplexen Tool-Argumenten nicht immer perfekt an die OpenAI-Konvention (z. B. Escaping in Arrays). Für rein parallele Multi-Tool-Szenarien in n8n-Workflows sind GPT- und Mistral-Modelle in der Regel die zuverlässigste Wahl. Bei Problemen bitte das Support-Team kontaktieren.
Mit parallel_tool_calls: false werden Tools sequenziell ausgeführt.
Tool-Loop begrenzen
Verhindert „Tool-Runaways" durch fehlerhafte Modelllogik:
{
"model": "gpt-5",
"input": "Recherchiere zu Thema X",
"tools": [...],
"max_tool_calls": 5
}
Default ist 10 Tool-Aufrufe pro Response.
Praktische Beispiele
Datenbankabfrage
{
"type": "function",
"name": "query_orders",
"description": "Bestellungen aus der Datenbank abfragen",
"parameters": {
"type": "object",
"properties": {
"customer_id": {"type": "string"},
"status": {
"type": "string",
"enum": ["pending", "shipped", "delivered", "cancelled"]
},
"limit": {"type": "integer"}
},
"required": ["customer_id"]
}
}
Multi-Tool: Meeting buchen + Einladung versenden
{
"tools": [
{
"type": "function",
"name": "book_room",
"description": "Meeting-Raum buchen",
"parameters": {
"type": "object",
"properties": {
"room_id": {"type": "string"},
"date": {"type": "string", "format": "date"},
"time": {"type": "string"},
"duration_minutes": {"type": "integer"}
},
"required": ["room_id", "date", "time"]
}
},
{
"type": "function",
"name": "send_calendar_invite",
"description": "Kalender-Einladung versenden",
"parameters": {
"type": "object",
"properties": {
"attendees": {"type": "array", "items": {"type": "string"}},
"title": {"type": "string"},
"datetime": {"type": "string", "format": "date-time"}
},
"required": ["attendees", "title", "datetime"]
}
}
]
}
Best Practices
Klare Tool-Beschreibungen
Die description ist entscheidend dafür, wann das Modell ein Tool wählt:
{
"name": "search_knowledge_base",
"description": "Durchsucht die interne Wissensdatenbank nach Dokumentation, Richtlinien und Prozessen. Nutze dies bei Fragen zu Firmenprozessen, HR-Richtlinien oder internen Tools."
}
Präzise Parameter-Beschreibungen
{
"date": {
"type": "string",
"description": "Datum im ISO-8601-Format (YYYY-MM-DD), z. B. 2026-03-15"
}
}
Fehler sauber zurückgeben
{"error": "Kunde nicht gefunden", "customer_id": "12345"}
So kann das Modell auf den Fehler reagieren statt zu halluzinieren.
Webhooks für Echtzeit-Events
Wenn du auf API-Events reagieren willst (z. B. abgeschlossener Background-Job), nutze Webhooks:
# Webhook anlegen
curl -X POST https://app.innogpt.de/api/ext/v1/webhooks \
-H "Authorization: Bearer $INNOGPT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://deine-app.de/webhook", "events": ["response.completed"]}'
Weitere Endpunkte:
GET /webhooks— auflistenPOST /webhooks/{id}/test— Test-Delivery sendenPOST /webhooks/{id}/secret— Secret rotierenGET /webhooks/{id}/deliveries— Zustellverlauf prüfen