Benutzeroberfläche in natürlicher Sprache zu Oracle APEX-Anwendung hinzufügen
Einführung
Wir betreiben die Website Database Expert Resources (DBExpert Toolkit), die vergleichende Informationen und interaktive Tools bereitstellt, mit denen Benutzer den besten Oracle Database Cloud Service für ihre Anwendungsfälle identifizieren können. Wir haben kürzlich eine natürliche Sprachschnittstelle zu unserer Website hinzugefügt, damit Benutzer auch Fragen zu den Cloud-Services stellen können.
Unsere Website ist eine Oracle Application Express-(Oracle APEX-)Instanz, die auf einer Oracle Autonomous Transaction Processing Serverless-Datenbank ausgeführt wird. Wir haben gesehen, dass die neue Oracle Autonomous Database Select AI verfügbar war, um Interaktionen in natürlicher Sprache mit unseren Daten zu ermöglichen.
Um nicht nur inhaltliche Fragen, sondern auch Anfragen nach Hilfe zu bearbeiten und Benutzerfeedback zu akzeptieren, haben wir Oracle Digital Assistant als Frontend für die Abfragen in natürlicher Sprache ausgewählt.
In diesem Tutorial werden die Aufgaben beschrieben, die zum Hinzufügen der Benutzeroberfläche in natürlicher Sprache ausgeführt wurden.
Ziele
- Richten Sie eine Oracle Digital Assistant-Schnittstelle in einer Oracle APEX-Anwendung ein, um eine natürliche Sprachschnittstelle zum Abfragen von Daten in der Oracle Autonomous Database der Anwendung bereitzustellen.
Voraussetzungen
-
Installationen von Oracle Digital Assistant und Oracle APEX und damit vertraut.
-
Die Oracle APEX-Anwendung muss eine Oracle Database-Version aufweisen, die Oracle Autonomous Database Select AI unterstützt.
-
Ein Account mit Zugangsdaten für ein Large Language Model (LLM), das die SQL basierend auf der Benutzereingabe generiert. Weitere Informationen zu dieser Voraussetzung finden Sie im Blog Select AI – Natural Language to SQL Generation in Autonomous Database von Mark Hornick.
Aufgabe 1: Oracle Autonomous Database Select AI mit Ihrem LLM verbinden
Führen Sie in Ihrem APEX-Workspace unter SQL Workshop -> SQL-Befehle den folgenden Code aus, um ein KI-Profil (Artificial Intelligence) zu erstellen, um Schemas und Datenbankobjekte anzugeben, die mit Select AI verwendet werden. Das Profil wird in Aufgabe 2 verwendet.
Für dieses Tutorial haben wir OpenAI als LLM verwendet.
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'OPENAI_CRED',
username => 'OPENAI',
password => '...' );
END;
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE(
profile_name => 'OPENAI_PROFILE',
attributes => '{ "provider": "openai",
"credential_name": "OPENAI_CRED",
"comments":"true",
"object_list": [{"owner": "DB_SCHEMA", "name":"OBJECT_NAME"}]
}',
description => 'AI profile to use OpenAI for SQL translation'
);
END;
Um die Oracle Autonomous Database Select AI-Konfiguration zu prüfen, führen Sie Folgendes aus:
select dbms_cloud_ai.generate(
prompt => 'How many employees work at Oracle?',
action => 'SHOWSQL',
profile_name => 'OPENAI_PROFILE'
)
FROM DUAL;
Von diesem Befehl erhalten Sie eine SQL-Abfrage als Ausgabe, in der die Konfiguration überprüft wird.
Aufgabe 2: REST-API integrieren
Wenn Oracle Autonomous Database Select AI mit Ihren Datenbankobjekten funktioniert, erstellen Sie einen REST POST-Endpunkt, der in Oracle Digital Assistant integriert wird. Um dies in Oracle APEX zu erstellen, öffnen Sie SQL Workshop -> RESTful Data Services, und erstellen Sie ein Modul mit einem POST-Handler. Der Modulname und der POST-Handler-Name werden in Aufgabe 3 zur Konfiguration von Oracle Digital Assistant verwendet.
Der POST-Handler empfängt die Fragen in natürlicher Sprache von Oracle Digital Assistant und ruft eine SQL-Abfrage ab. Die resultierende SQL-Abfrage wird ausgeführt, und die Ausgabe wird zur Anzeige an den digitalen Assistenten zurückgegeben. Fügen Sie den folgenden Code in den POST-Handler für das erstellte Modul ein:
Tipp: Weitere Informationen zu RESTful-Services mit Oracle APEX finden Sie unter Datenaustausch mit RESTful-Services aktivieren.
DECLARE
l_response CLOB;
l_sql CLOB;
l_prompt VARCHAR2 (4000);
l_cursor NUMBER := DBMS_SQL.open_cursor;
l_profile_name user_cloud_ai_profiles.profile_name%TYPE := 'YOUR_PROFILE'; -- the LLM profile you created per (link to Select AI setup)
p_refcursor SYS_REFCURSOR;
l_result CLOB;
BEGIN
/*
The variable name for the 'prompt' parameter below must match the variable used in the
Oracle Digital Assistant Flow, in the State that calls the REST endpoint
*/
l_sql :=
dbms_cloud_ai.generate (prompt => :l_prompt,
action => 'showsql',
profile_name => l_profile_name);
-- check if SQL could be generated.
BEGIN
DBMS_SQL.PARSE (l_cursor, l_sql, DBMS_SQL.native);
l_response := l_sql;
parse_cursor (l_sql, p_refcursor, l_result);
if l_result is not null then
:status := 200;
else
raise_application_error(-20987,'No records found');
end if;
EXCEPTION
WHEN OTHERS
THEN
:status := 400;
l_result := 'Something went wrong while processing...';
END;
APEX_UTIL.PRN (l_result, FALSE);
END;
Führen Sie in Oracle APEX SQL Workshop -> SQL Commands Folgendes aus, um die Prozedur zu erstellen, mit der die von Oracle Autonomous Database Select AI empfangene SQL-Abfrage ausgeführt wird:
CREATE OR REPLACE PROCEDURE parse_cursor (p_query IN VARCHAR2,
cur IN OUT SYS_REFCURSOR,
p_result OUT CLOB)
AS
curs INT;
cols INT;
d DBMS_SQL.desc_tab2;
val VARCHAR2 (32767);
l_row_count INTEGER := 0;
BEGIN
OPEN cur FOR p_query;
curs := DBMS_SQL.to_cursor_number (cur);
DBMS_SQL.describe_columns2 (curs, cols, d);
p_result := p_result || '<table> <tr>';
FOR i IN 1 .. cols
LOOP
DBMS_SQL.define_column (curs,
i,
val,
32767);
p_result := p_result || '<th>' || d (i).col_name || '</th>';
END LOOP;
p_result := p_result ||'</tr>';
WHILE DBMS_SQL.fetch_rows (curs) > 0
LOOP
p_result := p_result ||'<tr>';
FOR i IN 1 .. cols
LOOP
DBMS_SQL.COLUMN_VALUE (curs, i, val);
p_result := p_result ||'<td>' || val || '</td>';
END LOOP;
p_result := p_result ||'</tr>';
l_row_count := l_row_count + 1;
END LOOP;
p_result := p_result ||'</table>';
IF l_row_count = 0
THEN
p_result := NULL;
END IF;
DBMS_SQL.close_cursor (curs);
END;
/
Die Ausgabe wird in einer Tabelle zur Verwendung mit Oracle Digital Assistant formatiert. Die JSON-Ausgabe wäre eine weitere Option für verschiedene Anwendungen.
Hinweis: Dieser Endpunkt kann von mehreren Oracle Digital Assistants (oder ähnlichen Anwendungen) verwendet werden, um die von Oracle Autonomous Database Select AI ausgeführten Daten und Verarbeitungsvorgänge zu nutzen.
Aufgabe 3: Oracle Digital Assistant konfigurieren
In unserer Oracle Digital Assistant-Instanz haben wir einen Ablauf für Fragen zu unseren Daten erstellt. Zusätzliche Abläufe verarbeiten Anfragen nach Hilfe, Smalltalk und Feedback. Die folgenden Screenshots zeigen die Orte im Oracle Digital Assistant, an denen wir die Informationen zum REST-Endpunkt verwendet haben, den wir in Aufgabe 2 erstellt haben, um den Chatbot mit dem REST-Service zu verbinden.
Tipp: Dieses Tutorial behandelt nicht das Erstellen und Konfigurieren eines Oracle Digital Assistant. Weitere Informationen finden Sie unter Oracle Digital Assistant.
Dieser Ablauf übergibt die Benutzereingabe zur Verarbeitung an den REST-Endpunkt.
Aufgabe 4: Daten für Oracle Autonomous Database Select AI vorbereiten
Unser Schema enthält mehrere Tabellen, die mit Zuordnungstabellen verknüpft sind. Anstatt all diese an das LLM zu übergeben, haben wir eine View erstellt, die den relevanten Tabellen beitritt und unser Domainwissen verwendet, um eine Tabelle mit allen (und nur) notwendigen Daten zu senden. Diese View wird regelmäßig aus den Quelltabellen aktualisiert, um auf dem neuesten Stand zu bleiben.
Polnisch die Erfahrung mit Retrieval Augmented Generation (RAG)
Wir stellten schnell fest, dass, obwohl wir unsere vollständigen und vertrauenswürdigen Daten an das LLM senden, mehr Informationen für unsere Anwendung benötigt wurden, um gute Ergebnisse zu erzielen. (Wir haben gelernt, dass prompt engineering nicht bedeutet, schnell zu codieren!) Mit der retrieval augmented generation (RAG) konnten wir unsere Ergebnisse verbessern. Beispielsweise sind die in unseren Daten dargestellten Oracle-Paketanwendungen durch verschiedene Abkürzungen und Akronyme bekannt, die wir nun in Kommentaren zu den relevanten Spalten angeben. Sie können diese Art von Aktion in Betracht ziehen, um Ihre Ergebnisse zu verbessern.
Aufgabe 5: Oracle Digital Assistant in die Oracle APEX-Anwendung integrieren
Die Anwendung ist eine Oracle APEX-Instanz, die auf einer Oracle Autonomous Database-Instanz gehostet wird. Oracle Digital Assistant in die Anwendung integrieren
-
Gehen Sie in der Oracle APEX-Anwendung zu Gemeinsam verwendete Komponenten und Statische Anwendungsdateien.
Diese statischen Anwendungsdateien werden für die Konfiguration und den Aufruf des Chatbots verwendet.
settings.js
web-sdk.js
chatbot_style.css
Hinweis: Laden Sie diese Oracle Digital Assistant-Vorlagen von hier herunter: Oracle Digital Assistant (ODA) und Oracle Mobile Cloud (OMC) Downloads.
-
settings.js
: Diese Datei ist für die Oracle Digital Assistant-Konfiguration vorgesehen. Aktualisieren Sie die folgenden Werte.- URL: Geben Sie die URL der Oracle Digital Assistant-Instanz ein.
- Name: Geben Sie den Namen des Bots ein, der im Oracle APEX-Anwendungsereignis Auf Seite laden auf Seite 0 referenziert wird.
- Kanal-ID: Geben Sie die aus der Oracle Digital Assistant-Anwendung kopierte Kanal-ID ein.
- Um Oracle APEX-Anwendungsbenutzersessions mit einer Botinstanz zu verknüpfen, die über verschiedene Anwendungsseiten hinweg verwaltet wird, während der Benutzer navigiert.
- userId:
document.getElementById("pInstance").value
.
- userId:
-
web-idk.js
: Diese Datei muss nicht geändert werden. Sie muss jedoch für jedes neue Release der Oracle Digital Assistant-Plattform aktualisiert werden, damit sie der Version von Oracle Digital Assistant entspricht. -
chatbot_style.css
: Erstellen Sie eine völlig neue CSS-Datei, um das Chatbot-Symbol anzupassen.
-
Um die zu verwendende Anwendung zu konfigurieren, laden Sie die Datei in Statische Anwendungsdateien hoch. Gehen Sie zu Gemeinsam verwendete Komponenten, Benutzeroberflächenattribute, JavaScript, und geben Sie die URLs für
settings.js
undweb-sdk.js
ein. -
Gehen Sie zur Registerkarte CSS, und geben Sie die URL für die CSS-Datei ein.
-
Fügen Sie auf der globalen Seite 0 der Anwendung ein Ereignis hinzu, das beim Laden der Seite ausgelöst wird, um die Funktion
initSdk
in der Dateisettings.js
aufzurufen.
Führen Sie die Oracle APEX-Anwendung aus, und das Chatbotsymbol sollte unten rechts auf dem Bildschirm angezeigt werden. Es ist bereit für Benutzer, Fragen in natürlicher Sprache zu stellen!
Nächste Schritte
Natural Language Queries aktivieren, um Ihren Daten einen Mehrwert zu bieten
Durch die Kombination von drei strategischen Oracle Technologien haben Sie schnell nützliche und erweiterbare KI-Funktionen in Ihre Anwendung mit einem neuen Chatbot eingeführt, der in anderen Anwendungen und Websites verwendet werden kann. Sie können den Umfang der mit Oracle Autonomous Database Select AI verarbeiteten Daten erweitern und zusätzliche Informationsquellen für neue Oracle Digital Assistant-Abläufe integrieren.
Rufen Sie die Datenbankexpertenressourcen auf, testen Sie die natürliche Sprachschnittstelle, und geben Sie uns Feedback.
Verwandte Links
Danksagungen
-
Autoren - Burt Clouse, Omar Gallardo
-
Mitwirkende – Marty Gubar, Mark Hornick, Yuoko Watari
Weitere Lernressourcen
Lernen Sie andere Übungen auf docs.oracle.com/learn kennen, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube Channel zu. Außerdem können Sie education.oracle.com/learning-explorer besuchen, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Add a Natural Language Interface to Oracle APEX Application
G11963-04
October 2024