LLM- Transformations-Handler
Jeder Provider verfügt über ein eigenes Format für die Anforderungs-, Antwort- und Fehler-Payloads. Aus diesem Grund können der LLM-Provider und Oracle Digital Assistant nicht direkt kommunizieren. Um den Austausch zwischen dem Skill und seinen LLM-Providern zu erleichtern, müssen Sie diese Payloads in die gemeinsame LLM-Schnittstelle von Oracle Digital Assistant und wieder zurück transformieren.
transformRequestPayload
-, transformResponsePayload
- und transformErrorResponsePayload
-Methoden die Payload-Transformationen ausführen. Diese Transformationsmethoden haben zwei Signaturen:
event
: Die für dieses Objekt verwendeten Eigenschaften hängen vom Ereignistyp ab (transformRequestPayload
,transformResponsePayload
,transformErrorResponsePayload
).context
: Verweist auf die KlasseLlmTransformationContext
, die Zugriff auf Convenience-Methoden bietet, mit denen Sie die Ereignis-Handler-Logik erstellen können.
LLM-Transformations-Handler erstellen
- Klicken Sie in der linken Navigationsleiste auf Komponenten.
- Klicken Sie auf +New-Service.
- Füllen Sie das Dialogfeld "Service erstellen" aus:
- Name: Geben Sie den Dienstnamen ein.
- Servicetyp: Eingebetteter Container
- Komponentenservicepakettyp: Neue Komponente
- Komponententyp: LLM-Transformation
- Komponentenname: Geben Sie einen einfach identifizierbaren Namen für den Entity-Event-Handler ein. Sie referenzieren diesen Namen, wenn Sie den LLM-Service für den Skill erstellen.
- Vorlage: Wir stellen Vorlagen für Skills bereit, die Cohere direkt oder über den generativen KI-Service von Oracle aufrufen. Sie müssen diese Vorlagen nicht bearbeiten. Wenn Ihr Skill ein Nicht-Cohere/Oracle Generative AI-Modell aufruft, wie Azure Open AI, müssen Sie den entsprechenden Code hinzufügen.
Die Templates für Oracle Generative AI Cohere (Textgenerierung und -zusammenfassung) und Llama (Textzusammenfassung) sind im Vorlagenlistenmenü unter Generative AI sortiert. Die Vorlage für den direkten Zugriff auf Cohere befindet sich unter Andere. Um auf die Vorlage zuzugreifen, die den Startcode für andere Modelle enthält, wählen Sie Benutzerdefiniert (die sich auch unter "Sonstige" befindet).
- Klicken Sie auf Erstellen, um den Event Handler-Code zu generieren.
- Blenden Sie nach Abschluss des Deployments den Service ein, und wählen Sie den Transformations-Handler aus, um die Eigenschaftenseite zu öffnen. Auf dieser Seite werden die drei LLM-Provider-CLMI-Transformationsmethoden (
transformRequestPayload
,transformResponsePayload
undtransformErrorResponsePayload
) aufgeführt.Wenn Sie einen Cohere-Service oder einen Oracle Generative AI-Service erstellen, der auf demselben Mandanten wie Ihre Digital Assistant-Instanz gehostet wird, ist der Handler-Code vollständig.
- Wenn Sie einen Oracle Generative AI-Service erstellen, der in einem anderen OCI-Mandanten gehostet wird, klicken Sie auf Bearbeiten, um das Dialogfeld "Komponente bearbeiten" zu öffnen und die Variable
event.compartmentId
durch die Compartment-ID des OCI-Mandanten zu ersetzen, in dem der Generative AI-Service abonniert ist. - Wenn Sie die benutzerdefinierte Vorlage verwenden, klicken Sie auf Bearbeiten, um das Dialogfeld "Komponente bearbeiten" zu öffnen, und aktualisieren Sie dann den folgenden Platzhaltercode mit dem providerspezifischen Code:
Methode Speicherort im Editor (benutzerdefinierte Vorlage) Platzhaltercode (benutzerdefinierte Vorlage) transformRequestPayload
Zeilen 23-25 transformRequestPayload: async (event, context) => { return event.payload; },
transformResponsePayload
Zeilen 33-35 transformResponsePayload: async (event, context) => { return event.payload; },
transformErrorResponsePayload
Zeilen 44-46 transformErrorResponsePayload: async (event, context) => { return event.payload; }
- Prüfen Sie die Sytnax Ihrer Aktualisierungen, indem Sie auf Validieren klicken. Beheben Sie gegebenenfalls Validierungsfehler, und klicken Sie auf Speichern. Klicken Sie auf Schließen.
Beispiele für LLM-Providertransformationscode
Azure OpenAI
Methode | Ereignis-Handler-Transformationscode |
---|---|
Anforderung |
|
Antwort (Nicht-Streaming) | Wenn Streaming aktiviert ist, wird der Response-Transformationsereignis-Handler in Batches mit 20 gestreamten Nachrichten aufgerufen. Dieses Batcharray mit gestreamten Antworten wird unter dem Schlüssel responseItems gespeichert.
|
Fehler |
|
Oracle Generativer KI-Service - Cohere
Die Befehlsmodelle wurden eingezogen. Es wird empfohlen, zum Endpunkt
/chat
zu migrieren. Dabei wird ein aktuelleres Chatmodell deklariert und die befehlsspezifischen Parameter durch chatspezifische Parameter ersetzt.
Methode | Event-Handler-Code |
---|---|
Anforderung |
|
Response |
|
Fehler |
|
Oracle Generative KI - Lama
Die Befehlsmodelle wurden veraltet. Es wird empfohlen, dass Sie zum Endpunkt
/chat
migrieren. Dabei wird das Chatmodell deklariert und die befehlsspezifischen Parameter durch chat-spezifische Parameter ersetzt.
Methode | Event-Handler-Code |
---|---|
Anforderung |
|
Response |
|
Fehler |
|
Oracle Generative KI – Zusammenfassung
Die Befehlsmodelle wurden eingezogen. Es wird empfohlen, zum Endpunkt
/chat
zu migrieren. Dabei wird ein aktuelleres Chatmodell deklariert und die befehlsspezifischen Parameter durch chatspezifische Parameter ersetzt.
Methode | Event-Handler-Code |
---|---|
Anforderung |
|
Response |
|
Fehler |
|
Cohere (Befehlsmodell) - Direkter Zugang zu Cohere
/generate
-API und das zugehörige Cohere.command
-Modell, nicht die /chat
-API, die für das cohere.command.R
-Modell verwendet wird. Wenn Sie zum Endpunkt /chat
migrieren, müssen Sie die Anforderungs- und Antwort-Payloads sowie die generierte Codevorlage manuell aktualisieren.
Methode | Event-Handler-Code |
---|---|
Anforderung | Dieser Handler verwaltet die Unterhaltungshistorie, um den Unterhaltungskontext zu verwalten.
|
Response |
|
Fehler |
|
Die gemeinsame LLM-Schnittstelle
Jeder LLM-Provider hat sein eigenes Format für seine Anforderungs- und Antwort-Payloads. Mit der Common LLM Interface (CLMI) kann die Komponente invokeLLM diese proprietären Anforderungs- und Antwort-Payloads verarbeiten.
- Eine Anforderungstextangabe.
- Eine Spezifikation für den Body der Erfolgsantwort, die anwendbar ist, wenn der LLM-REST-Aufruf einen HTTP 200-Status zurückgibt.
- Eine Spezifikation für den Fehlerantwortbody, die anwendbar ist, wenn der LLM-REST-Aufruf einen anderen HTTP-Status als 200 zurückgibt, der Aufruf des LLM-Service jedoch weiterhin erfolgreich war.
Hinweis
Bei nicht erfolgreichen Aufrufen verarbeitet die Komponente invokeLLM die Fehler 401 (nicht autorisiert) oder 500 (interner Serverfehler).
CLMI Anforderungsbody - Spezifikation
Eigenschaft | Typ | Standardwert | Beschreibung | Erforderlich? |
---|---|---|---|---|
messages |
Ein Array von Nachrichtenobjekten | N/V | Eine Liste der Nachrichten. Die erste Nachricht ist die Eingabeaufforderung, bei der die Eigenschaft role auf system gesetzt ist. Wenn das LLM eine Multiturn-Unterhaltung unterstützt, sodass die LLM-Antwort verfeinert oder erweitert werden kann, sind die nachfolgenden Nachrichten Nachrichtenpaare aus den Rollen user und assistant . Die Benutzernachricht enthält die Nachsorgeanweisungen oder -fragen für das LLM. Die Assistentennachricht enthält die LLM-Antwort auf die Benutzernachricht (Abschluss). Wenn das LLM keine Multiturn-Unterhaltungen unterstützt, enthält das Array messages nur eine Systemnachricht mit der Eingabeaufforderung.
|
Ja |
streamResponse |
boolean | false |
Bestimmt, ob die LLM-Antwort zurück an die LLM-Komponente gestreamt wird. Wenn Sie diese Eigenschaft auf true setzen, wird die Benutzererfahrung verbessert, da das Streaming es der LLM-Komponente ermöglicht, partielle Antwortnachrichten an Benutzer zurückzusenden, sodass sie nicht warten müssen, bis das LLM die Antwort abgeschlossen hat.
Setzen Sie |
Nein |
maxTokens |
Ganzzahl | 1024 |
Das Modell generiert Token für die Wörter in den Ergebnissen. Token können als Wortteile betrachtet werden. 100 Token entsprechen etwa 75 Wörter in Englisch. Diese Eigenschaft begrenzt die Größe des vom Modell generierten Inhalts, indem die maximale Anzahl von Token festgelegt wird, die für die Antwort generiert werden. | Nein |
temperature |
Nummer | 0 |
Das Modell verwendet Temperatur, um die Zufälligkeit - und damit die Kreativität - seiner Reaktionen zu messen. Sie legen diesen Wert zwischen 0 (vorhersehbare Ergebnisse) und 1 (zusätzlich randomisierte Ergebnisse) fest. 0 bedeutet, dass das Modell dieselben Ergebnisse an eine bestimmte Eingabeaufforderung sendet. 1 bedeutet, dass die Ergebnisse des Modells zu einer Antwort sehr unterschiedlich sein können. Verwenden Sie einen Event Handler, um einen Multiplikator anzuwenden, wenn der LLM-Provider einen anderen Bereich als 0-1 unterstützt.
|
Nein |
user |
Zeichenfolge | N/V | Eine eindeutige Kennung für Ihren Endbenutzer, die zur Überwachung und Erkennung missbräuchlicher Sprache verwendet werden kann. | Nein |
providerExtension |
Objekt | N/V | Aktiviert LLM-providerspezifische Konfigurationsoptionen, die nicht als Teil von CLMI definiert sind. | Nein |
Die Struktur des Nachrichtenobjekts
Eigenschaft | Typ | Beschreibung | Erforderlich? |
---|---|---|---|
role |
Zeichenfolge | Der Nachrichtenersteller. Die Werte lauten system , user und assistant .
|
Ja |
content |
Zeichenfolge | Der Nachrichtencontent | Ja |
turn |
Ganzzahl | Eine Zahl, die den aktuellen Verfeinerungswechsel des Chatnachrichtenaustauschs angibt. Wenn die erste Eingabeaufforderung an die LLM gesendet wird, ist die Umdrehung 1. | Ja |
retry |
boolean | Kennzeichen, das angibt, ob die Nachricht an das LLM gesendet wird, um einen Fehler in der Antwort zu beheben | Nein (Standard ist false )
|
tag |
Zeichenfolge | Ein benutzerdefiniertes Tag, das eine bestimmte Eingabeaufforderung markiert. Wenn Sie die LLM-Antwort mit Rekursive Kritik und Verbesserung (RCI) verbessern, können Sie die benutzerdefinierte Logik im validateResponsePayload -Handler aktivieren, um den aktuellen Schritt des RCI-Prozesses zu ermitteln, indem Sie das Tag auf "criticize" oder "improve" setzen.
|
Nein |
Text der Erfolgsantwort - Spezifikation
Eigenschaft | Typ | Beschreibung | Erforderlich? |
---|---|---|---|
candidates |
Ein Array von candidate -Objekten |
Eine Liste der vom LLM zurückgegebenen Kandidatennachrichten | Ja |
Kandidatenobjekte
Eigenschaft | Typ | Beschreibung | Erforderlich? |
---|---|---|---|
content |
Zeichenfolge | Der Nachrichtencontent | Ja |
Spezifikation des Fehlerantwortbodys
Eigenschaft | Typ | Beschreibung | Erforderlich? |
---|---|---|---|
errorCode |
Zeichenfolge |
|
Ja |
errorMessage |
Zeichenfolge | Die LLM-Provider-spezifische Fehlermeldung. Dies kann ein mit einer Zeichenfolge versehenes JSON-Objekt sein. | Ja |