Pacchetto DBMS_CLOUD_AI

Il pacchetto DBMS_CLOUD_AI, con Select AI, facilita e configura la traduzione dei prompt in linguaggio naturale per generare, eseguire e spiegare le istruzioni SQL. Inoltre, consente la retrieval augmented generation e le interazioni basate sul linguaggio naturale, inclusa la chat con i LLM.

Prerequisiti

Una connettività in uscita deve essere stata configurata mediante un gateway NAT dall'amministratore della flotta, come descritto di seguito.
  • Crea un gateway NAT nella rete cloud virtuale (VCN) in cui risiedono le tue risorse di Autonomous Database seguendo le istruzioni riportate in Crea un gateway NAT nella documentazione di Oracle Cloud Infrastructure.
  • Dopo aver creato il gateway NAT, aggiungere una regola di instradamento e una regola di sicurezza di uscita a ogni subnet (nella VCN) in cui risiedono le risorse di Autonomous Database in modo che queste risorse possano utilizzare il gateway per ottenere una chiave pubblica dall'istanza di Azure AD:
    1. Andare alla pagina Dettagli subnet per la subnet.
    2. Nella scheda Informazioni subnet, fare clic sul nome della tabella di instradamento della subnet per visualizzare la relativa pagina Dettagli tabella di instradamento.
    3. Nella tabella delle regole di instradamento esistenti, verificare se esiste già una regola con le seguenti caratteristiche:
      • Data: 0.0.0.0/0
      • Tipo di destinazione: gateway NAT
      • Destinazione: il nome del gateway NAT appena creato nella VCN

      Se la regola non esiste, fare clic su Aggiungi regole di instradamento e aggiungere una regola di instradamento con queste caratteristiche.

    4. Tornare alla pagina Dettagli subnet per la subnet.
    5. Nella tabella Elenchi di sicurezza della subnet, fare clic sul nome della lista di sicurezza della subnet per visualizzare la relativa pagina Dettagli lista di sicurezza.
    6. Nel menu laterale, in Risorse, fare clic su Regole di uscita.
    7. Nella tabella delle regole di uscita esistenti, verificare se esiste già una regola con le seguenti caratteristiche:
      • Tipo di destinazione: CIDR
      • Data: 0.0.0.0/0
      • Protocollo IP: TCP
      • Intervallo porte di origine: 443
      • Intervallo di porte di destinazione: tutte

      Se una regola di questo tipo non esiste, fare clic su Aggiungi regole di uscita e aggiungere una regola di uscita con queste caratteristiche.

Le impostazioni del proxy HTTP nell'ambiente devono consentire al database di accedere al provider di servizi cloud.

Queste impostazioni vengono definite dall'amministratore della flotta durante la creazione dell'infrastruttura Exadata Cloud@Customer, come descritto in Uso della console per eseguire il provisioning di Exadata Database Service su Cloud@Customer.

Nota

La configurazione di rete, incluso il proxy HTTP, può essere modificata solo fino a quando lo stato dell'infrastruttura Exadata non è Richiede attivazione. Una volta attivato, non è possibile modificare tali impostazioni.

L'impostazione di un proxy HTTP per un'infrastruttura Exadata già fornita richiede una richiesta di servizio (SR) in My Oracle Support. Per informazioni dettagliate, vedere Create a Service Request in My Oracle Support.

Riepilogo dei sottoprogrammi DBMS_CLOUD_AI

In questa sezione vengono descritti i sottoprogrammi DBMS_CLOUD_AI forniti con Autonomous Database.

Sottoprogramma Descrizione

CREATE_PROFILE Procedura

Questa procedura crea un nuovo profilo AI per tradurre i prompt del linguaggio naturale nelle istruzioni SQL.

DISABLE_PROFILE Procedura

Questa procedura disabilita un profilo AI nel database corrente.

DROP_PROFILE Procedura

Questa procedura elimina un profilo AI esistente.

ENABLE_PROFILE Procedura

Questa procedura consente l'uso di un profilo AI nel database corrente.

Funzione GENERATE

Questa funzione genera un'istruzione SQL utilizzando AI per tradurre.

SET_ATTRIBUTE Procedura

Questa procedura imposta gli attributi del profilo AI.

SET_PROFILE Procedura

Questa procedura imposta il profilo AI per il database corrente.

CREATE_PROFILE Procedura

La procedura crea un nuovo profilo AI per tradurre i prompt del linguaggio naturale nell'istruzione SQL.

Sintassi

DBMS_CLOUD_AI.CREATE_PROFILE
   profile_name        IN  VARCHAR2,
   attributes          IN  CLOB      DEFAULT NULL,
   status              IN  VARCHAR2  DEFAULT NULL,
   description         IN  CLOB      DEFAULT NULL
);

Parametri

Parametro Descrizione

profile_name

Nome del profilo AI. Il nome del profilo deve seguire le regole di denominazione dell'identificativo Oracle SQL. La lunghezza massima del nome del profilo è 125 caratteri.

Questo è un parametro obbligatorio.

attributes

Attributi del profilo in formato JSON. Per ulteriori dettagli, vedere Attributi profilo AI.

Il valore predefinito è NULL.

status

Stato del profilo.

Il valore predefinito è Enable.

description

Descrizione del profilo AI.

Il valore predefinito è NULL.

Esempio

BEGIN
     DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name    => 'OpenAI,
          attributes      => JSON_OBJECT('provider' value 'openai',
                                         'credential_name' value 'openai_cred'),
          description     => 'AI profile to use OpenAI for SQL translation'
     );
END;
/

DROP_PROFILE Procedura

La procedura elimina un profilo AI esistente. Se il profilo non esiste, la procedura genera un errore.

Sintassi

DBMS_CLOUD_AI.DROP_PROFILE(
       profile_name        IN   VARCHAR2,
       force               IN   BOOLEAN DEFAULT FALSE
 );

Parametri

Parametro Descrizione

profile_name

Nome del profilo AI

force

Se TRUE, la procedura ignora gli errori se il profilo AI non esiste.

Il valore predefinito di questo parametro è FALSE.

Esempio

BEGIN
     DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'OPENAI');
END;
/

Note sull'uso

Utilizzare force per eliminare un profilo e ignorare gli errori se il profilo AI non esiste.

ENABLE_PROFILE Procedura

Questa procedura abilita il profilo AI specificato dall'utente. La procedura modifica lo stato del profilo AI in ENABLED.

Sintassi

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

Parametri

Parametro Descrizione

profile_name

Nome del profilo AI da abilitare

Questo parametro è obbligatorio.

Esempio per abilitare il profilo AI

BEGIN
     DBMS_CLOUD_AI.ENABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

DISABLE_PROFILE Procedura

Questa procedura disabilita il profilo AI nel database corrente. Lo stato del profilo AI viene modificato in DISABLED mediante questa procedura.

Sintassi

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

Parametri

Parametro Descrizione

profile_name

Nome del profilo AI.

Questo parametro è obbligatorio.

Esempio

BEGIN
     DBMS_CLOUD_AI.DISABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

SET_ATTRIBUTE Procedura

Questa procedura consente di impostare gli attributi del profilo AI.

Sintassi

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   CLOB
);

Parametri

Solo il proprietario può impostare o modificare gli attributi del profilo AI. Per un elenco degli attributi supportati, vedere Attributi profilo.

Parametro Descrizione

profile_name

Nome del profilo AI per il quale si desidera impostare gli attributi.

Questo parametro è obbligatorio.

attribute_name

Nome dell'attributo del profilo AI

Questo parametro è obbligatorio.

attribute_value

Valore dell'attributo di profilo.

Il valore predefinito è NULL.

Esempio

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OPENAI',
   attribute_name  => 'credential_name',
   attribute_value => 'OPENAI_CRED_NEW'
 );
END;
/

SET_PROFILE Procedura

Questa procedura imposta il profilo AI per la sessione corrente.

Dopo aver impostato un profilo AI per la sessione del database, qualsiasi istruzione SQL con il prefisso SELECT AI viene considerata un prompt del linguaggio naturale. A seconda dell'azione specificata con il prefisso AI, una risposta viene generata utilizzando AI. Per utilizzare il prefisso AI, vedere Utilizzare la parola chiave AI per immettere i prompt. Facoltativamente, è possibile sostituire gli attributi di profilo o modificarli specificandoli in formato JSON. Per l'impostazione degli attributi, vedere SET_ATTRIBUTE Procedura.

Il profilo AI può essere impostato per la sessione corrente solo se il proprietario del profilo AI è l'utente della sessione.

Per impostare un profilo AI per tutte le sessioni di un utente di database specifico o per tutte le sessioni utente nel database, valutare la possibilità di utilizzare un trigger di evento di database per l'evento AFTER LOGON sull'utente specifico o sull'intero database. Per ulteriori dettagli, vedere CREATE TRIGGER Statement in Oracle Database 19c Database PL/SQL Language Reference o Oracle Database 23ai Database PL/SQL Language Reference.

Sintassi

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

Parametri

Parametro Descrizione

profile_name

Nome del profilo AI nella sessione corrente.

Questo parametro è obbligatorio.

Esempio


   BEGIN
        DBMS_CLOUD_AI.SET_PROFILE(
          profile_name    => 'OPENAI'
        );
   END;
   /

Funzione GENERATE

Questa funzione fornisce la traduzione AI senza conservazione dello stato. Con il profilo AI esistente, è possibile utilizzare questa funzione per eseguire le azioni supportate, ad esempio showsql, narrate o chat. L'azione predefinita è showsql.

Questa funzione consente anche di eseguire l'override di alcuni o di tutti gli attributi del profilo.

Sintassi

DBMS_CLOUD_AI.GENERATE(
    prompt          IN  CLOB,
    profile_name    IN  VARCHAR2 DEFAULT NULL,
    action          IN  VARCHAR2 DEFAULT NULL,
    attributes      IN  CLOB     DEFAULT NULL
) RETURN CLOB;

Parametri

Parametro Descrizione

prompt

Prompt del linguaggio naturale per la traduzione mediante l'intelligenza artificiale.

Il prompt può includere SELECT AI <action> come prefisso. L'azione può anche essere fornita separatamente come parametro "action". Il valore action fornito nel prompt sostituisce il parametro "action". L'azione predefinita è showsql.

Questo parametro è obbligatorio.

profile_name

Nome del profilo AI. Questo parametro è facoltativo se nella sessione è già impostato un profilo AI che utilizza DBMS_CLOUD_AI.SET_PROFILE.

Il valore predefinito è NULL.

Vengono applicate le condizioni riportate di seguito.
  • Se nella sessione corrente viene impostato un profilo, l'utente può omettere l'argomento profile_name nella funzione DBMS_CLOUD_AI.GENERATE.
  • Se l'argomento profile_name viene fornito nella funzione DBMS_CLOUD_AI.GENERATE, esegue l'override di qualsiasi valore impostato nella sessione utilizzando la procedura DBMS_CLOUD_AI.SET_PROFILE.
  • Se nella sessione non è stato impostato alcun profilo con la procedura DBMS_CLOUD_AI.SET_PROFILE, l'argomento profile_name deve essere specificato nella funzione DBMS_CLOUD_AI.GENERATE.

Nota

Per Database Actions, è possibile specificare l'argomento profile_name in DBMS_CLOUD_AI.GENERATE oppure eseguire due passi come script PL/SQL: DBMS_CLOUD_AI.SET_PROFILE e DBMS_CLOUD_AI.GENERATE.
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');

-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

------------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;
-------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;
Per ulteriori informazioni, vedere Esecuzione delle istruzioni SQL nell'editor di codice.
action

Azione per tradurre il prompt naturale utilizzando l'intelligenza artificiale. Le azioni supportate sono showsql (impostazione predefinita), narrate e chat. Le descrizioni delle azioni sono incluse in Usa parole chiave AI per immettere i prompt.

Nota

Questa funzione non supporta l'azione runsql. Se si fornisce l'azione runsql, viene restituito il seguente errore:
ORA-20000: runsql action is not supported by generate function ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line xxxx 
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_AI", line 2696 ORA-06512: at line x
attributes Sostituisci attributi profilo AI specifici fornendo attributi in formato JSON. Per ulteriori dettagli, vedere Attributi profilo.

Esempi

Negli esempi riportati di seguito vengono illustrate le azioni showsql, narrate e chat che è possibile utilizzare con la funzione DBMS_CLOUD_AI.GENERATE.

Di seguito è riportato un esempio di azione showsql.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

Di seguito è riportato un esempio di azione narrate.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;

Di seguito è riportato un esempio di azione chat.

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;

Attributi di profilo

Gli attributi di un profilo AI consentono di gestire e configurare il funzionamento del profilo AI. Alcuni attributi sono facoltativi e hanno un valore predefinito.

Attributi

Nome attributo Descrizione

azure_deployment_name

Nome del modello distribuito di Azure OpenAI Service. Il nome può includere solo caratteri alfanumerici, il carattere di sottolineatura (_) e un trattino (-). Il nome non può terminare con un carattere di sottolineatura (_) o un trattino (-). Per informazioni su come ottenere azure_deployment_name, vedere Creare e distribuire una risorsa del servizio OpenAI di Azure.

azure_resource_name

Nome della risorsa OpenAI Service di Azure. Il nome della risorsa può includere solo caratteri alfanumerici e trattini e non può iniziare o terminare con un trattino. Per informazioni su come ottenere azure_resource_name, vedere Creare e distribuire una risorsa del servizio OpenAI di Azure.

comments

Includere i commenti delle colonne nei metadati utilizzati per tradurre i prompt in linguaggio naturale utilizzando l'intelligenza artificiale. Il tipo di dati BOOLEAN è supportato. I valori validi sono TRUE o FALSE per una stringa con tipo di dati VARCHAR2.

Nota

I valori booleani non sono applicabili nella procedura DBMS_CLOUD_AI.SET_ATTRIBUTE quando si imposta un singolo attributo perché il parametro attribute_value è di tipo dati CLOB.

conversation

Attributo VARCHAR2 che indica se la cronologia delle conversazioni è abilitata per un profilo. Solo OpenAI e Azure OpenAI Service supportano la cronologia delle conversazioni. I valori validi sono true o false. Il valore predefinito è false. I valori non fanno distinzione tra casi.

credential_name

Nome della credenziale per accedere alle API del provider AI.

La credenziale che utilizza i token bearer può essere creata utilizzando il nome del provider come nome utente e il token bearer come password.

Si tratta di un attributo obbligatorio. Vedere CREATE_CREDENTIAL Procedura.

max_tokens

Indica il numero di token da prevedere per generazione. Il valore predefinito è 1024. Per ulteriori dettagli, vedere Tokens and Tokenizers.

model

Nome del modello AI utilizzato per generare le risposte.

Modelli supportati per:

  • OpenAI: gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo (predefinito), gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613
  • Cohere: comando (predefinito), comando notturno (sperimentale), luce di comando e luce di comando-notte (sperimentale). I modelli più piccoli e "leggeri" sono più veloci, mentre i modelli più grandi offrono prestazioni migliori.È inoltre possibile fornire i modelli personalizzati con il relativo ID completo.
  • AI generativa OCI: per l'AI generativa OCI: cohere.command (impostazione predefinita). I modelli pre-addestrati per l'AI generativa OCI sono tutti supportati da Select AI. I modelli personalizzati possono anche essere forniti con i relativi OCID completi.

    Per ulteriori informazioni sui modelli supportati nell'AI generativa OCI, vedere Modelli di base predefiniti nell'AI generativa.

Nota

Questo parametro non viene utilizzato per Azure poiché il modello viene determinato quando si crea la distribuzione nel portale Servizio OpenAI di Azure.

object_list

Array di oggetti JSON che specifica i nomi di proprietario e oggetto idonei per la traduzione in linguaggio naturale in SQL. Per includere tutti gli oggetti di un determinato utente, omettere il "nome" e specificare solo la chiave "proprietario" nell'oggetto JSON.

Per la traduzione del linguaggio naturale in SQL, il nome dell'oggetto, il proprietario dell'oggetto, le colonne dell'oggetto e i commenti vengono inviati al provider AI utilizzando le richieste HTTPS. Evitare di specificare oggetti con nome oggetto riservato, nomi di colonna o commenti nell'elenco oggetti.

I provider AI possono avere un limite alla dimensione dei metadati consentiti nelle richieste di traduzione. Si consideri la possibilità di limitare la lista di oggetti adatti ai prompt di linguaggio naturale da parte degli utenti dell'applicazione.

Formato:
[
  {"owner": "SH", "name": "SALES",
  {"owner": "TEST_USER"}
]

oci_compartment_id

Specifica l'OCID del compartimento a cui è consentito accedere quando si chiama il servizio AI generativa OCI. L'ID compartimento può contenere caratteri alfanumerici, trattini e punti.

L'impostazione predefinita è l'ID compartimento di Autonomous Database.

oci_endpoint_id

Questo attributo indica l'OCID endpoint del cluster di hosting AI dedicato Oracle. L'ID endpoint può contenere caratteri alfanumerici, trattini e punti. Per trovare l'OCID dell'endpoint, vedere Recupero dei dettagli di un endpoint nell'AI generativa.

Quando si desidera utilizzare il cluster AI dedicato Oracle, è necessario fornire l'OCID endpoint del cluster di hosting.

Per impostazione predefinita, l'ID endpoint è vuoto e il modello è su richiesta in un'infrastruttura condivisa.

oci_runtimetype

Questo attributo indica il tipo di runtime del modello fornito. Questo attributo è obbligatorio quando viene specificato l'attributo model ed è applicabile ai modelli di generazione OCI.

Tutti i valori consentiti sono disponibili nell'AI generativa OCI runtimeType. Vedere LlmInferenceRequest Riferimento.

I valori supportati sono i seguenti:
  • COHERE
  • LLAMA

provider

Provider AI per il profilo AI.

Provider supportati:

  • openai
  • cohere
  • azzurro
  • oci
  • google
  • antropico
  • huggingface

Si tratta di un attributo obbligatorio.

region

Questo attributo indica la posizione del cluster AI generativa che si desidera utilizzare. L'area può contenere caratteri alfanumerici e trattini.

Nota

Il cluster Oracle Generative AI è disponibile nelle aree di Chicago, Francoforte e Londra. Vedere Modelli di base pre-addestrati nell'AI generativa.
L'area predefinita è us-chicago-1.

stop_tokens

Il testo generato verrà terminato all'inizio della prima sequenza di arresto. La sequenza verrà incorporata nel testo. Il valore dell'attributo deve essere un array valido di valori stringa in formato JSON. stop_tokens accetta un array JSON come input. Per ulteriori informazioni sui token di arresto o sulle sequenze di arresto, consulta la documentazione OpenAI o Cohere.

temperature

Il campionamento dai modelli Genera testo incorpora la casualità, in modo che lo stesso prompt possa produrre output diversi ogni volta che si preme "generare". La temperatura è un numero float non negativo utilizzato per sintonizzare il grado di casualità. Temperature più basse significano generazioni meno casuali. Per ulteriori dettagli, vedere Temperatura. Questo parametro è applicabile a tutti i provider di servizi supportati.

Nell'esempio seguente viene utilizzato Cohere come provider e vengono visualizzati gli attributi di profilo personalizzati:
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'COHERE',
     attributes =>
      '{"provider": "cohere",
        "credential_name": "COHERE_CRED",
        "object_list": [{"owner": "ADB_USER"}],
        "max_tokens":512,
        "stop_tokens": [";"],
        "model": "command-nightly",
        "temperature": 0.5,
        "comments": true
       }');
END;
/

L'esempio riportato di seguito mostra gli attributi del profilo personalizzato che utilizzano l'AI generativa OCI.

BEGIN                                                                        
  DBMS_CLOUD_AI.CREATE_PROFILE(                                              
      profile_name => 'GENAI',                                                             
      attributes => '{"provider": "oci",                                                                   
        "credential_name": "GENAI_CRED",                                     
        "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
        "oci_compartment_id": "ocid1.compartment.oc1...",
	"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
	"region": "us-chicago-1",
	"model": "cohere.command-light",
	"oci_runtimetype": "COHERE"            
       }');                                                                  
END;                                                                         
/