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

  1. Tools definieren — du beschreibst Funktionen mit JSON-Schema

  2. Modell entscheidet — es analysiert die Anfrage und ruft ggf. ein Tool auf

  3. Du führst aus — dein Code ruft die echte Funktion mit den Argumenten auf

  4. 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

FeldTypPflichtBeschreibung

type

string

Muss "function" sein

name

string

a-z, 0-9, Underscores, max. 64 Zeichen

description

string

Klare Beschreibung — entscheidet, wann das Modell das Tool wählt

parameters

object

JSON-Schema für die Argumente


Tool Choice steuern

Mit tool_choice legst du fest, wie aggressiv das Modell Tools nutzen soll:

WertVerhalten

"auto" (Default)

Modell entscheidet selbst

"none"

Keine Tools verwenden

"required"

Mindestens ein Tool muss aufgerufen werden

{"type": "function", "name": "..."}

Bestimmtes Tool erzwingen


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 — auflisten

  • POST /webhooks/{id}/test — Test-Delivery senden

  • POST /webhooks/{id}/secret — Secret rotieren

  • GET /webhooks/{id}/deliveries — Zustellverlauf prüfen