Eigene Funktionen definieren

Um dem Chatbot eigene Funktionen zur Verfügung zu stellen, muss die conf.json des Chatbot-Seitentyps (beispielsweise in pub/theme/THEME/site/chatbot/admin/conf.json) um extend_tools erweitert werden. Die Felder name und description auf erster Ebene werden für die Anzeige im Backend verwendet.

Wird die responses-API von OpenAI verwendet, muss zusätzlich für jede eigene Funktion extend_responses_tools definiert werden.

Das kann dann beispielsweise wie folgt aussehen:

{ "chatbot": { "extend_tools": [{ "type": "function", "name": "Event-Suche", "description": "Führt eine Suche durch und gibt die aktuellsten 5 Events zurück.", "function": { "name": "get_events", "description": "Retrieves relevant events based on a search query and an optional time period.\n\n- Use this function when information about events is needed.\n- The `start` and `end` parameters should be used to specify time constraints instead of embedding dates in the `query`.", "parameters": { "type": "object", "properties": { "query": { "type": "string", "description": "The search query used to retrieve relevant events." }, "start": { "type": "string", "description": "The start date of the requested time period, formatted as YYYY-MM-DD. If no time period is required use `*`." }, "end": { "type": "string", "description": "The end date of the requested time period, formatted as YYYY-MM-DD. If no time period is required use `*`." } }, "required": ["query", "start", "end"], "additionalProperties": false }, "strict": true } }], "extend_responses_tools": [{ "type": "function", "name": "get_events", "description": "Retrieves relevant events based on a search query and an optional time period.\n\n- Use this function when information about events is needed.\n- The `start` and `end` parameters should be used to specify time constraints instead of embedding dates in the `query`.", "parameters": { "type": "object", "properties": { "query": { "type": "string", "description": "The search query used to retrieve relevant events." }, "start": { "type": "string", "description": "The start date of the requested time period, formatted as YYYY-MM-DD. If no time period is required use `*`." }, "end": { "type": "string", "description": "The end date of the requested time period, formatted as YYYY-MM-DD. If no time period is required use `*`." } }, "required": ["query", "start", "end"], "additionalProperties": false } }] } }

Zusätzlich muss in var/lib/chatbot/functions.php eine Funktion mit dem selben Namen definiert werden. Der Rückgabewert dieser Funktion wird dann dem Chatbot zur Verfügung gestellt.

function get_events($arguments): string { // ... return '...'; }