Zum Hauptinhalt springen

Server für das Web-Service-Modul

Verwenden Sie Serverless Functions wie eine Google Cloud Function, um Daten aus Ihrem KI-Agenten zu verarbeiten und die Ergebnisse wieder in den Agenten einzuspeisen.

Warum sollte ich eine Google Cloud Function verwenden?​

Eine Google Cloud Function bietet eine sichere Ausführungsumgebung, um beliebigen Code auszuführen. Sie gibt Ihnen außerdem Zugriff auf APIs der Google-Cloud-Umgebung wie die Google Vision API oder den Google Cloud Datastore.

Sie könnten auch einen anderen Cloud-Anbieter wie AWS oder Azure verwenden, um dasselbe Ergebnis zu erzielen.

Bereitstellen der Cloud Function​

Zuerst erstellen Sie im Google Cloud Console eine neue Cloud Function. Wählen Sie einen Namen, der Ihre Funktion beschreibt.

Sie müssen nicht authentifizierte Aufrufe der Funktion erlauben. Die Authentifizierung behandeln wir im Funktionscode selbst. Die Funktions-URL wird durch die Verwendung in LoyJoy nicht veröffentlicht.

Allow unauthenticated

Als Nächstes können Sie den Code Ihrer Funktion eingeben. In diesem Beispiel haben wir die Node.js-16-Runtime gewählt.

Dies ist der Beispielcode für die Datei index.js:

const functions = require('@google-cloud/functions-framework');

// you can test your function using curl:
// curl -d '{"params":{"paramkey": "paramvalue"},"variables":{"length": "12", "width": "1.5"}, "process_definition_id": "6b3431a0-b0ee-4fcd-bfdd-c769239e835c"}' http://localhost:8091/ -H "Authorization: Bearer TTYz6n6q7tu8MhBV7TCp" -H "Content-type: application/json"
functions.http('exampleFunction', (req, res) => {
const {
authorization
} = req.headers;

// set this authorization header in the module
if (authorization !== 'Bearer TTYz6n6q7tu8MhBV7TCp') {
res.sendStatus(403);
} else {
// req.body contains:
// req.body.params - params set in the web service module config
// req.body.variables - variables of the process instance / customer
// req.body.process_definition_id - ID of the agent / BPMN process the request comes from
// req.body.process_instance_id

const vars = req && req.body ? req.body.variables : null;

if (!vars || !vars.length || !vars.width) {
res.sendStatus(400);
} else {
const length = parseFloat(vars.length);
const width = parseFloat(vars.width);

const area = length * width;

const response = {
'data': {
'variables': {
// following variables will be set in the process
'area': area
}
}
};

res.setHeader('Content-type', 'application/json');
res.send(response);
}
}
});

Der Beispielcode prüft die Agent-Variablen length und width und multipliziert ihre Werte. Er gibt das Ergebnis als Variable area zurück, die in der weiteren Ausführung des KI-Agenten verwendet wird.

Sie müssen diesen Code außerdem in die Datei package.json eintragen:

{
"name": "<NAME>",
"version": "1.0.0",
"description": "",
"private": true,
"main": "index.js",
"scripts": {
"start": "npx functions-framework --target=exampleFunction --signature-type=http --port 8091"
},
"author": "<YOUR NAME>",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
}
}

Der Einstiegspunkt (Entry Point) muss auf den Namen der Funktion in der Datei index.js gesetzt werden. Im Beispiel ist das exampleFunction.

Entry point

vorsicht

Wenn Ihr Code einen JavaScript-Syntaxfehler enthält, erhalten Sie eine Warnung, dass der Einstiegspunkt nicht gefunden werden konnte.

Authentifizierung​

Die Authentifizierung in der Funktion erfolgt über diese Zeile:

if (authorization !== 'Bearer TTYz6n6q7tu8MhBV7TCp') {

Wir setzen das Bearer-Token in LoyJoy. Sie sollten für diesen Zweck eine eigene zufällige Token-Zeichenfolge erstellen.

Die Cloud Function in Ihren KI-Agenten integrieren​

Sie können die Cloud Function mit dem Web Service-Modul in LoyJoy integrieren. Dazu kopieren Sie die Funktions-URL aus dem Abschnitt Trigger im Google Cloud Console. Sie müssen außerdem die Autorisierung aus dem Funktionscode in das Web Service-Modul kopieren.

Web service module config

Auf welche Daten kann ich innerhalb der Cloud Function zugreifen?​

LoyJoy speichert Daten in Variablen. Diese Variablen sind Schlüssel-Wert-Paare, bei denen ein String-Wert mit einem zugehörigen String-Schlüssel gespeichert wird.

Die Variablen des KI-Agenten sind der Cloud Function im Objekt req.body.variables verfügbar.

Auf Nutzerbilder/-dateien aus dem KI-Agenten zugreifen​

Bilder und andere Dateien werden nicht direkt im String-Wert der Variable gespeichert. Stattdessen wird die ID des Speicherobjekts der Datei im LoyJoy-Speicher gespeichert. Um die Datei abzurufen, wird eine zusätzliche Variable mit dem Schlüssel <key>_url erstellt. Der Wert der Variable <key>_url gibt Ihnen eine URL, unter der Sie die Dateidaten abrufen können.

Um eine Anfrage an die URL stellen zu können, müssen Sie ein im LoyJoy-Backend erstelltes API-Token als Bearer-Authentifizierung verwenden.

Zum Beispiel:

fetch("http://stable.loyjoy.com/api/variable/data/2e8eba13-8384-402e-94f2-aa2b7e044933", {
headers: {
'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhb...Jvk3yc4OiZSyzW3xiUDqHNNoPutqjO8glkE'
}
})