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 '...';
}