Paquete DBMS_CLOUD_AI

El paquete DBMS_CLOUD_AI, con Select AI, facilita y configura la traducción de peticiones de datos en lenguaje natural para generar, ejecutar y explicar sentencias SQL. Además, permite la generación aumentada de recuperación y las interacciones basadas en lenguaje natural, incluido el chat con LLM.

Requisitos

El administrador del conjunto debe haber configurado una conectividad saliente mediante un gateway de NAT, como se describe a continuación:
  • Cree un gateway de NAT en la red virtual en la nube (VCN) en la que residan los recursos de Autonomous Database siguiendo las instrucciones de Creación de un gateway de NAT de la Documentación de Oracle Cloud Infrastructure.
  • Después de crear el gateway de NAT, agregue una regla de ruta y una regla de seguridad de salida a cada subred (en la VCN) en la que residan los recursos de Autonomous Database para que estos recursos puedan utilizar el gateway para obtener una clave pública de la instancia de Azure AD:
    1. Vaya a la página Detalles de subred de la subred.
    2. En el separador Información de Subred, haga clic en el nombre de la Tabla de Direcciones de la subred para mostrar su página Detalles de Tabla de Direcciones.
    3. En la tabla de Reglas de ruta existentes, compruebe si ya hay una regla con las siguientes características:
      • Destino: 0.0.0.0/0
      • Tipo de destino: gateway de NAT
      • Destino: nombre del gateway de NAT que acaba de crear en la VCN

      Si dicha regla no existe, haga clic en Agregar reglas de ruta y agregue una regla de ruta con estas características.

    4. Vuelva a la página Detalles de subred de la subred.
    5. En la tabla Listas de seguridad de la subred, haga clic en el nombre de la lista de seguridad de la subred para mostrar su página Detalles de lista de seguridad.
    6. En el menú lateral, en Recursos, haga clic en Reglas de salida.
    7. En la tabla de Reglas de salida existentes, compruebe si ya hay una regla con las siguientes características:
      • Tipo de destino: CIDR
      • Destino: 0.0.0.0/0
      • Protocolo IP: TCP
      • Rango de puertos de origen: 443
      • Rango de puertos de destino: todos

      Si dicha regla no existe, haga clic en Agregar Reglas de Salida y agregue una regla de salida con estas características.

La configuración del proxy HTTP en el entorno debe permitir que la base de datos acceda al proveedor de servicios en la nube.

El administrador del conjunto define esta configuración al crear la infraestructura de Exadata Cloud@Customer, como se describe en Uso de la consola para aprovisionar Exadata Database Service on Cloud@Customer.

Note:

La configuración de red, incluido el proxy HTTP, solo se puede editar hasta que la infraestructura de Exadata tenga el estado Necesita activación. Una vez activada, no puede editar esa configuración.

La configuración de un proxy HTTP para una infraestructura de Exadata ya aprovisionada necesita una solicitud de servicio (SR) en My Oracle Support. Consulte Creación de una solicitud de servicio en My Oracle Support para obtener más información.

Resumen de subprogramas DBMS_CLOUD_AI

En esta sección se tratan los subprogramas DBMS_CLOUD_AI que proporciona Autonomous Database.

Subprograma Descripción

Procedimiento CREATE_PROFILE

Este procedimiento crea un nuevo perfil de AI para traducir peticiones de datos de lenguaje natural a sentencias SQL.

Procedimiento DISABLE_PROFILE

Este procedimiento desactiva un perfil de AI en la base de datos actual.

Procedimiento DROP_PROFILE

Este procedimiento borra un perfil AI existente.

Procedimiento ENABLE_PROFILE

Este procedimiento permite que un perfil AI se utilice en la base de datos actual.

GENERAR Función

Esta función genera una sentencia SQL mediante AI para traducir.

Procedimiento SET_ATTRIBUTE

Este procedimiento define los atributos del perfil de AI.

Procedimiento SET_PROFILE

Este procedimiento define el perfil de AI para la base de datos actual.

Procedimiento CREATE_PROFILE

El procedimiento crea un nuevo perfil de AI para traducir peticiones de datos de lenguaje natural a sentencias SQL.

Sintaxis

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

Parámetros

parámetro Descripción

profile_name

Un nombre para el perfil AI. El nombre de perfil debe seguir las reglas de nomenclatura del identificador SQL de Oracle. La longitud máxima del nombre de perfil es de 125 caracteres.

Este parámetro es obligatorio.

attributes

Atributos de perfil en formato JSON. Consulte AI Profile Attributes para obtener más información.

El valor por defecto es NULL.

status

Estado del perfil.

El valor predeterminado es Activar.

description

Descripción del perfil AI.

El valor por defecto es NULL.

Ejemplo

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;
/

Procedimiento DROP_PROFILE

El procedimiento borra un perfil AI existente. Si el perfil no existe, el procedimiento devuelve un error.

Sintaxis

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

Parámetros

parámetro Descripción

profile_name

Nombre del perfil de AI

force

Si es TRUE, el procedimiento ignora los errores si el perfil AI no existe.

El valor por defecto de este parámetro es FALSE.

Ejemplo

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

Notas de uso

Utilice force para borrar un perfil e ignorar errores si el perfil AI no existe.

Procedimiento ENABLE_PROFILE

Este procedimiento activa el perfil AI que el usuario especifica. El procedimiento cambia el estado del perfil AI a ENABLED.

Sintaxis

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

Parámetros

parámetro Descripción

profile_name

Nombre del perfil AI que se va a activar

Este parámetro es obligatorio.

Ejemplo para activar el perfil AI

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

Procedimiento DISABLE_PROFILE

Este procedimiento desactiva el perfil de AI en la base de datos actual. Este procedimiento cambia el estado del perfil AI a DISABLED.

Sintaxis

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

Parámetros

parámetro Descripción

profile_name

Nombre del perfil AI.

Este parámetro es obligatorio.

Ejemplo

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

Procedimiento SET_ATTRIBUTE

Este procedimiento permite definir atributos de perfil de AI.

Sintaxis

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

Parámetros

Solo el propietario puede configurar o modificar los atributos del perfil de AI. Para ver una lista de atributos admitidos, consulte Profile Attributes.

parámetro Descripción

profile_name

Nombre del perfil de AI para el que desea definir los atributos.

Este parámetro es obligatorio.

attribute_name

Nombre del atributo de perfil AI

Este parámetro es obligatorio.

attribute_value

Valor del atributo del perfil.

El valor por defecto es NULL.

Ejemplo

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

Procedimiento SET_PROFILE

Este procedimiento define el perfil de AI para la sesión actual.

Después de definir un perfil de AI para la sesión de base de datos, cualquier sentencia SQL con el prefijo SELECT AI se considera una petición de datos de lenguaje natural. Según la acción especificada con el prefijo AI, se genera una respuesta mediante AI. Para utilizar el prefijo AI, consulte Use AI Keyword to Enter Prompts. Opcionalmente, es posible sustituir los atributos de perfil o modificar los atributos especificándolos en formato JSON. Consulte Procedimiento SET_ATTRIBUTE para definir los atributos.

El perfil AI solo se puede configurar para la sesión actual si el propietario del perfil AI es el usuario de la sesión.

Para definir un perfil de AI para todas las sesiones de un usuario de base de datos específico o todas las sesiones de usuario de la base de datos, considere utilizar un disparador de evento de base de datos para el evento AFTER LOGON en el usuario específico o en toda la base de datos. Consulte Sentencia CREATE TRIGGER en Referencia de lenguaje PL/SQL de base de datos 19c de Oracle Database o Referencia de lenguaje PL/SQL de base de datos Oracle Database 23ai para obtener más información.

Sintaxis

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

Parámetros

parámetro Descripción

profile_name

Un nombre para el perfil AI en la sesión actual.

Este parámetro es obligatorio.

Ejemplo


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

GENERAR Función

Esta función proporciona traducción de IA sin estado. Con su perfil de AI existente, puede utilizar esta función para realizar las acciones admitidas, como showsql, narrate o chat. La acción por defecto es showsql.

La sustitución de algunos o todos los atributos de perfil también es posible mediante esta función.

Sintaxis

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;

Parámetros

parámetro Descripción

prompt

El lenguaje natural requiere traducir usando IA.

La petición de datos puede incluir SELECT AI <action> como prefijo. La acción también se puede proporcionar por separado como un parámetro de "acción". El action proporcionado en la petición de datos sustituye el parámetro "action". La acción por defecto es showsql.

Este parámetro es obligatorio.

profile_name

Nombre del perfil de AI. Este parámetro es opcional si ya hay un perfil AI definido en la sesión mediante DBMS_CLOUD_AI.SET_PROFILE.

El valor por defecto es NULL.

Se aplican las siguientes condiciones:
  • Si se define un perfil en la sesión actual, el usuario puede omitir el argumento profile_name en la función DBMS_CLOUD_AI.GENERATE.
  • Si el argumento profile_name se proporciona en la función DBMS_CLOUD_AI.GENERATE, sustituye cualquier valor definido en la sesión mediante el procedimiento DBMS_CLOUD_AI.SET_PROFILE.
  • Si no hay ningún perfil definido en la sesión mediante el procedimiento DBMS_CLOUD_AI.SET_PROFILE, el argumento profile_name se debe proporcionar en la función DBMS_CLOUD_AI.GENERATE.

Note:

Para Database Actions, puede especificar el argumento profile_name en DBMS_CLOUD_AI.GENERATE o puede ejecutar dos pasos como script PL/SQL: DBMS_CLOUD_AI.SET_PROFILE y 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;
Consulte Ejecución de sentencias SQL en el editor de códigos para obtener más información.
action

Acción para traducir la petición de datos natural mediante IA. Las acciones soportadas incluyen showsql (valor por defecto), narrate y chat. Las descripciones de las acciones se incluyen en Use AI Keywords to Enter Prompts.

Note:

Esta función no soporta la acción runsql. Si proporciona la acción runsql, devuelve el siguiente error:
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 Sustituya atributos de perfil de IA específicos proporcionando atributos en formato JSON. Consulte Atributos de perfil para obtener más información.

Ejemplos

Los siguientes ejemplos ilustran las acciones showsql, narrate y chat que se pueden utilizar con la función DBMS_CLOUD_AI.GENERATE.

Un ejemplo con la acción showsql es el siguiente:

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

Un ejemplo con la acción narrate es el siguiente:

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

Un ejemplo con la acción chat es el siguiente:

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

Atributos de Perfil

Los atributos de un perfil de AI ayudan a gestionar y configurar el comportamiento del perfil de AI. Algunos atributos son opcionales y tienen un valor por defecto.

Atributos

Nombre del atributo Descripción

azure_deployment_name

Nombre del modelo desplegado del servicio OpenAI de Azure. El nombre solo puede incluir caracteres alfanuméricos, guiones bajos (_) y guiones (-). El nombre no puede terminar con un guión bajo (_) ni un guión (-). Para saber cómo obtener azure_deployment_name, consulte Creación y despliegue de un recurso de servicio OpenAI de Azure.

azure_resource_name

Nombre del recurso de servicio OpenAI de Azure. El nombre del recurso solo puede incluir caracteres alfanuméricos y guiones, y no puede empezar ni terminar con un guion. Para saber cómo obtener azure_resource_name, consulte Creación y despliegue de un recurso de servicio OpenAI de Azure.

comments

Incluya comentarios de columna en los metadatos utilizados para traducir peticiones de datos de lenguaje natural mediante IA. El tipo de dato BOOLEAN está soportado. Los valores válidos son TRUE o FALSE para una cadena con el tipo de dato VARCHAR2.

Note:

Los valores booleanos no se aplican en el procedimiento DBMS_CLOUD_AI.SET_ATTRIBUTE al definir un solo atributo porque el parámetro attribute_value es del tipo de dato CLOB.

conversation

Atributo VARCHAR2 que indica si el historial de conversaciones está activado para un perfil. Solo OpenAI y el servicio OpenAI de Azure admiten el historial de conversaciones. Los valores válidos son true o false. El valor por defecto es false. Los valores no distinguen entre mayúsculas y minúsculas.

credential_name

Nombre de la credencial para acceder a las API del proveedor de AI.

La credencial que utiliza tokens de portador se puede crear utilizando el nombre de proveedor como nombre de usuario y el token de portador como contraseña.

Es un atributo obligatorio. Consulte CREATE_CREDENTIAL Procedimiento.

max_tokens

Indica el número de tokens que se deben predecir por generación. El valor por defecto es 1024. Consulte Tokens and Tokenizers para obtener más información.

model

Nombre del modelo de IA que se utiliza para generar respuestas.

Modelos soportados para:

  • OpenAI: gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo (por defecto), gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613
  • Cohere: comando (predeterminado), comando-nightly (experimental), comando-light y comando-light-nightly (experimental). Los modelos más pequeños y "ligeros" son más rápidos, mientras que los modelos más grandes funcionan mejor.Los modelos personalizados también se pueden proporcionar con su ID completo.
  • OCI Generative AI: para OCI Generative AI: cohere.command (por defecto). Los modelos previamente entrenados para OCI Generative AI son compatibles con Select AI. Los modelos personalizados también se pueden proporcionar con sus OCID completos.

    Para obtener más información sobre los modelos admitidos en OCI Generative AI, consulte Pretrained Foundational Models in Generative AI.

Note:

Este parámetro no se utiliza para Azure, ya que el modelo se determina al crear el despliegue en el portal Azure OpenAI Service.

object_list

Matriz de objetos JSON que especifica el propietario y los nombres de objeto elegibles para la traducción de lenguaje natural a SQL. Para incluir todos los objetos de un usuario determinado, omita el "nombre" y especifique solo la clave "propietario" en el objeto JSON.

Para traducir el lenguaje natural a SQL, el nombre del objeto, el propietario del objeto, las columnas del objeto y los comentarios se envían al proveedor de AI mediante solicitudes HTTPS. Evite especificar objetos con nombre de objeto confidencial, nombres de columna o comentarios en la lista de objetos.

Los proveedores de IA pueden tener un límite en el tamaño de los metadatos permitidos en las solicitudes de traducción. Considere limitar la lista de objetos adecuados para las peticiones de datos de lenguaje natural de los usuarios de la aplicación.

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

oci_compartment_id

Especifica el OCID del compartimento al que tiene permiso para acceder al llamar al servicio OCI Generative AI. El ID de compartimento puede contener caracteres alfanuméricos, guiones y puntos.

El valor por defecto es el ID de compartimento de Autonomous Database.

oci_endpoint_id

Estos atributos indican el OCID de punto final del cluster de alojamiento de IA dedicada de Oracle. El ID de punto final puede contener caracteres alfanuméricos, guiones y puntos. Para buscar el OCID de punto final, consulte Obtención de detalles de un punto final en IA generativa.

Cuando desee utilizar el cluster de IA dedicado de Oracle, debe proporcionar el OCID de punto final del cluster de alojamiento.

Por defecto, el ID de punto final está vacío y el modelo está bajo demanda en una infraestructura compartida.

oci_runtimetype

Este atributo indica el tipo de tiempo de ejecución del modelo proporcionado. Este atributo es necesario cuando se especifica el atributo model y se aplica a los modelos de generación de OCI.

Todos los valores permitidos se pueden encontrar en OCI Generative AI runtimeType. Consulte LlmInferenceRequest Reference.

Los valores soportados son:
  • COHERE
  • LLAMA

provider

Proveedor de IA para el perfil de IA.

Proveedores soportados:

  • openai
  • cohere
  • azul celeste
  • oci
  • google
  • antrópico
  • abrazo

Es un atributo obligatorio.

region

Este atributo indica la ubicación del cluster de IA generativa que desea utilizar. La región puede contener caracteres alfanuméricos y guiones.

Note:

El cluster de IA generativa de Oracle está disponible en las regiones de Chicago, Frankfurt y Londres. Consulte Pretrained Foundational Models in Generative AI.
La región por defecto es us-chicago-1.

stop_tokens

El texto generado se terminará al principio de la secuencia de parada más temprana. La secuencia se incorporará al texto. El valor de atributo debe ser una matriz válida de valores de cadena en formato JSON. stop_tokens toma una matriz JSON como entrada. Para obtener más información sobre los tokens de parada o las secuencias de parada, consulte la documentación OpenAI o Aquí.

temperature

El muestreo de los modelos Generate Text incorpora aleatoriedad, de modo que la misma petición de datos pueda producir salidas diferentes cada vez que pulse "generate". La temperatura es un número de flotador no negativo utilizado para ajustar el grado de aleatoriedad. Las temperaturas más bajas significan generaciones menos aleatorias. Consulte Temperatura para obtener más detalles. Este parámetro es aplicable a todos los proveedores de servicios soportados.

El siguiente ejemplo utiliza Cohere como proveedor y muestra atributos de perfil personalizados:
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;
/

En el siguiente ejemplo se muestran los atributos de perfil personalizados que utilizan OCI Generative AI:

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;                                                                         
/