Guide Overview
KI & Incident Management
/
KI für Incident Response

KI-Assistent für die Planung von Bereitschaftsdiensten

Die Erstellung eines Dienstplans, der die Bedürfnisse des Teams ausbalanciert und gleichzeitig die Abdeckung aller erforderlichen Schichten sicherstellt, ist entscheidend für das Incident-Management. KI-Assistenten können diesen Prozess optimieren. Durch den Einsatz von KI-Assistenten werden komplexe Anforderungen an die Planung, wie etwa Follow-the-Sun-Rotationen, einfacher. Eine intuitive Chat-Oberfläche, die von einem LLM (Large Language Model) unterstützt wird, führt die Nutzer durch die Erstellung der Pläne und stellt gezielte Fragen, um spezifische Anforderungen und Präferenzen zu verstehen. Dieser KI-unterstützte Ansatz vereinfacht die Planung, macht sie weniger zeitaufwendig und besser auf die individuellen Dynamiken jedes Teams zugeschnitten.

Wir nutzen die Funktion „Function Calling“ von OpenAI innerhalb des Assistenten, die konversationelle KI-Fähigkeiten mit der programmgesteuerten Ausführung von Funktionen verbindet. Diese Funktion ermöglicht es dem Assistenten, Nutzereingaben nicht nur über natürliche Sprache zu verstehen und zu verarbeiten, sondern auch Funktionen basierend auf diesen Eingaben auszuführen und strukturierte Ausgaben wie JSON-Dokumente zu generieren. Hier ist eine Übersicht, wie wir die OpenAI Assistants API zusammen mit Function Calling bei der Erstellung eines Bereitschaftsplans einsetzen:

Schritt 1: Verstehen der Nutzereingaben

Der Prozess beginnt damit, dass der Assistent in einem Dialog mit dem Nutzer alle notwendigen Details für den Dienstplan erfasst. Dies beinhaltet Fragen zu den betroffenen Teammitgliedern, Rotationsarten und der Abdeckung von Zeiten. Die Fähigkeit des Assistenten, natürliche Sprache zu analysieren, ermöglicht es ihm, die Antworten der Nutzer zu verstehen und in strukturierte Daten zu kategorisieren, die in den nächsten Schritten verwendet werden können. Der Prompt für dieses Gespräch ist in den Anweisungen des Assistenten hinterlegt:


As an AI assistant, your primary function is to aid users in generating schedules for ilert using the `create_recurring_schedule` function.

Include the function only if all the requirements are met, otherwise follow the steps below if requirements are missing.

### Basic Requirements
// list of requirements

### Handling Missing Requirements
// instructions on how to handle missing requirements

### JSON Output
// instructions how to output the JSON document

### Additional Guidelines
// additional instructions (e.g. language, how to deal with prompts beyond this scope, etc)

Schritt 2: Ausführen von Funktionen zur Erstellung des Dienstplans


Sobald die Eingabedaten verarbeitet und organisiert sind, nutzt der Assistent die Funktion „Function Calling“, um eine benutzerdefinierte Funktion zur Erstellung des Bereitschaftsplans auszuführen. Diese Funktion verwendet die vorbereiteten Daten, um den Dienstplan zu berechnen und dabei sicherzustellen, dass alle Anforderungen und Einschränkungen berücksichtigt werden. Das Ergebnis dieses Prozesses ist die Erstellung eines JSON-Dokuments, das den finalen Dienstplan darstellt.

	
  	{
        "name": "create_recurring_schedule",
        "description": "create a recurring on-call",
        "parameters": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "the name of the schedule"
                },
                "timezone": {
                    "type": "string",
                    "description": "the ISO timezone e.g. Europe/Berlin"
                },
                "type": {
                    "type": "string",
                    "enum": [
                        "RECURRING"
                    ],
                    "description": "the type of the schedule"
                },
                "scheduleLayers": {
                    "type": "array",
                    "items": {
                        "type": "object",
                        "properties": {
                            "name": {
                                "type": "string",
                                "description": "name of this layer"
                            },
                            "startsOn": {
                                "type": "string",
                                "description": "start of the layer"
                            },
                            "endsOn": {
                                "type": "string",
                                "description": "end of the layer, null if the layer has no end"
                            },
                            "users": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "id": {
                                            "type": "number",
                                            "description": "the identifier of the user"
                                        }
                                    },
                                    "required": [
                                        "id"
                                    ]
                                }
                            },
                            "rotation": {
                                "type": "string",
                                "description": "ISO 8601 period, e.g. P1D"
                            },
                            "restrictionType": {
                                "type": "string",
                                "enum": [
                                    "TIMES_OF_WEEK"
                                ]
                            },
                            "restrictions": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "description": "Restrictions for each day",
                                    "properties": {
                                        "from": {
                                            "type": "object",
                                            "properties": {
                                                "dayOfWeek": {
                                                    "type": "string",
                                                    "enum": [
                                                        "MONDAY",
                                                        "TUESDAY",
                                                        "WEDNESDAY",
                                                        "THURSDAY",
                                                        "FRIDAY",
                                                        "SATURDAY",
                                                        "SUNDAY"
                                                    ]
                                                },
                                                "time": {
                                                    "type": "string",
                                                    "description": "start of the restriction e.g. 08:15 "
                                                }
                                            }
                                        },
                                        "to": {
                                            "type": "object",
                                            "properties": {
                                                "dayOfWeek": {
                                                    "type": "string",
                                                    "enum": [
                                                        "MONDAY",
                                                        "TUESDAY",
                                                        "WEDNESDAY",
                                                        "THURSDAY",
                                                        "FRIDAY",
                                                        "SATURDAY",
                                                        "SUNDAY"
                                                    ]
                                                },
                                                "time": {
                                                    "type": "string",
                                                    "description": "end of the parent restriction e.g. 17:15"
                                                }
                                            }
                                        }
                                    },
                                    "required": [
                                        "from",
                                        "to"
                                    ]
                                }
                            }
                        },
                        "required": [
                            "startsOn",
                            "users",
                            "rotation"
                        ]
                    }
                },
            },
            "required": [
                "name",
                "timezone",
                "type",
                "scheduleLayers"
            ]
        }
    }
  

Dieser Einsatz der “Function Calling”-Funktion von OpenAI zeigt die Fähigkeit des Assistenten, konversationelle Eingaben mit programmatischen Ausgaben zu verbinden. Dadurch wird die Automatisierung komplexer Aufgaben wie die Erstellung eines Dienstplans direkt innerhalb einer Chat-Oberfläche ermöglicht.


Nachfolgend finden Sie ein Beispiel für eine Unterhaltung mit der ilert KI zur Erstellung eines Follow-the-Sun-Plans:

Sind Sie bereit, Ihr Incident-Management zu verbessern?

Kostenlos starten