add selectai
This commit is contained in:
43
lab/selectai/01_profiles.sql
Normal file
43
lab/selectai/01_profiles.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
EXEC DBMS_CLOUD_AI.DROP_PROFILE('PROFILE_LLAMA_4_17B');
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_AI.CREATE_PROFILE(
|
||||
profile_name => 'PROFILE_LLAMA_4_17B',
|
||||
attributes => JSON_OBJECT(
|
||||
'provider' VALUE 'oci',
|
||||
'credential_name' VALUE 'OCI$RESOURCE_PRINCIPAL',
|
||||
'model' VALUE 'meta.llama-4-maverick-17b-128e-instruct-fp8',
|
||||
'region' VALUE 'us-chicago-1',
|
||||
'oci_compartment_id' VALUE 'ocid1.compartment.oc1..aaaaaaaa33ogmhasyvcqzuvkrfzo5mavh3q2le7mgwmy74yzpyqi7byxgrlq',
|
||||
'temperature' VALUE 0,
|
||||
'max_tokens' VALUE 4096
|
||||
));
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
EXEC DBMS_CLOUD_AI.DROP_PROFILE('PROFILE_GPT-5.5');
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_AI.CREATE_PROFILE(
|
||||
profile_name => 'PROFILE_GPT-5.5',
|
||||
attributes => JSON_OBJECT(
|
||||
'provider' VALUE 'oci',
|
||||
'credential_name' VALUE 'OCI$RESOURCE_PRINCIPAL',
|
||||
'model' VALUE 'openai.gpt-5.5',
|
||||
'region' VALUE 'us-chicago-1',
|
||||
'oci_compartment_id' VALUE 'ocid1.compartment.oc1..aaaaaaaa33ogmhasyvcqzuvkrfzo5mavh3q2le7mgwmy74yzpyqi7byxgrlq',
|
||||
'temperature' VALUE 1,
|
||||
'max_tokens' VALUE 8192
|
||||
));
|
||||
END;
|
||||
/
|
||||
|
||||
set define off
|
||||
var response CLOB
|
||||
exec :response := DBMS_CLOUD_AI.GENERATE(prompt => 'Hola', profile_name => 'PROFILE_GPT-5.5', action => 'chat');
|
||||
print :response
|
||||
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
EXEC DBMS_CLOUD_AI.DROP_PROFILE('PROFILE_GPT-5.5');
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_AI.CREATE_PROFILE(
|
||||
profile_name => 'PROFILE_GPT-5.5',
|
||||
attributes => JSON_OBJECT(
|
||||
'provider' VALUE 'oci',
|
||||
'credential_name' VALUE 'OCI$RESOURCE_PRINCIPAL',
|
||||
'model' VALUE 'openai.gpt-5.5',
|
||||
'region' VALUE 'us-chicago-1',
|
||||
'oci_compartment_id' VALUE 'ocid1.compartment.oc1..aaaaaaaa33ogmhasyvcqzuvkrfzo5mavh3q2le7mgwmy74yzpyqi7byxgrlq',
|
||||
'temperature' VALUE 1,
|
||||
'max_tokens' VALUE 8192
|
||||
));
|
||||
END;
|
||||
/
|
||||
|
||||
set define off
|
||||
var response CLOB
|
||||
exec :response := DBMS_CLOUD_AI.GENERATE(prompt => 'Olá', profile_name => 'PROFILE_GPT-5.5', action => 'chat');
|
||||
print :response
|
||||
|
||||
297
lab/selectai/02_annotations.sql
Normal file
297
lab/selectai/02_annotations.sql
Normal file
@@ -0,0 +1,297 @@
|
||||
set define off
|
||||
|
||||
-- ============================================================================
|
||||
-- Lab: Annotations para SELECT AI
|
||||
-- ============================================================================
|
||||
-- Este script documenta tablas relacionales generadas desde una JSON COLLECTION
|
||||
-- TABLE y la JSON Relational Duality View que recompone el documento.
|
||||
--
|
||||
-- SELECT AI usa nombres, relaciones y metadatos para generar SQL. Las
|
||||
-- annotations ayudan a explicar el significado de tablas y columnas con
|
||||
-- lenguaje de negocio, sinonimos y pistas de uso.
|
||||
--
|
||||
-- Nota: para ejecutar el lab mas de una vez, cambie ADD por REPLACE en las
|
||||
-- annotations que ya existan.
|
||||
-- ============================================================================
|
||||
|
||||
-- ============================================================================
|
||||
-- T_ROOT: tabla raiz del documento JSON
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE t_root ANNOTATIONS (
|
||||
ADD display_name 'Documento de promocion',
|
||||
ADD business_description 'Tabla raiz de cada promocion extraida desde markdown. Une promocion, medios de pago, cuotas, reintegro, exclusiones y listas hijas.',
|
||||
ADD select_ai_hint 'Use esta tabla como punto de partida cuando la pregunta sea sobre una promocion completa o sobre condiciones generales.',
|
||||
ADD example_questions 'Que promociones existen? Cuales son las exclusiones? Que banco emite la promocion?'
|
||||
);
|
||||
|
||||
ALTER TABLE t_root MODIFY "_id" ANNOTATIONS (
|
||||
ADD display_name 'Identificador del documento',
|
||||
ADD business_description 'Clave tecnica RAW que identifica un documento JSON de promocion.',
|
||||
ADD select_ai_hint 'No mostrar al usuario final salvo que pida identificadores tecnicos.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_root MODIFY exclusoes ANNOTATIONS (
|
||||
ADD display_name 'Exclusiones de la promocion',
|
||||
ADD business_description 'Lista JSON con reglas, restricciones y condiciones que excluyen compras o situaciones del beneficio.',
|
||||
ADD synonyms 'restricciones, condiciones, limitaciones, no aplica, fuera de promocion',
|
||||
ADD select_ai_hint 'Cuando el usuario pregunte que no aplica o que esta excluido, consulte este campo JSON.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_root MODIFY titulo_t_promocao ANNOTATIONS (
|
||||
ADD display_name 'Titulo de la promocion',
|
||||
ADD business_description 'Referencia al titulo principal de la promocion.',
|
||||
ADD relationship_hint 'Clave foranea hacia T_PROMOCAO.TITULO.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_root MODIFY emissor_t_medios_pago ANNOTATIONS (
|
||||
ADD display_name 'Emisor del medio de pago',
|
||||
ADD business_description 'Banco o entidad emisora usada para enlazar los medios de pago aceptados.',
|
||||
ADD relationship_hint 'Clave foranea hacia T_MEDIOS_PAGO.EMISSOR.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_root MODIFY maximo_sin_intereses_t_cuotas ANNOTATIONS (
|
||||
ADD display_name 'Maximo de cuotas sin intereses',
|
||||
ADD business_description 'Valor usado para enlazar las condiciones de cuotas sin intereses.',
|
||||
ADD unit 'cuotas',
|
||||
ADD relationship_hint 'Clave foranea hacia T_CUOTAS.MAXIMO_SIN_INTERESES.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_root MODIFY prazo_dias_habiles_t_acreditacao_reintegro ANNOTATIONS (
|
||||
ADD display_name 'Plazo de acreditacion del reintegro',
|
||||
ADD business_description 'Cantidad de dias habiles usada para enlazar la regla de acreditacion del reintegro.',
|
||||
ADD unit 'dias habiles',
|
||||
ADD relationship_hint 'Clave foranea hacia T_ACREDITACAO_REINTEGRO.PRAZO_DIAS_HABILES.'
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- T_PROMOCAO y T_VIGENCIA: datos principales de la promocion
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE t_promocao ANNOTATIONS (
|
||||
ADD display_name 'Promocion',
|
||||
ADD business_description 'Datos principales de la oferta bancaria, incluyendo titulo y vigencia.',
|
||||
ADD select_ai_hint 'Use esta tabla para responder preguntas sobre el nombre de la promocion y sus fechas.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_promocao MODIFY titulo ANNOTATIONS (
|
||||
ADD display_name 'Titulo',
|
||||
ADD business_description 'Nombre oficial de la promocion segun el documento markdown.',
|
||||
ADD synonyms 'nombre de promocion, campana, oferta'
|
||||
);
|
||||
|
||||
ALTER TABLE t_promocao MODIFY data_inicio_t_vigencia ANNOTATIONS (
|
||||
ADD display_name 'Fecha de inicio',
|
||||
ADD business_description 'Fecha inicial de vigencia enlazada con T_VIGENCIA.',
|
||||
ADD relationship_hint 'Parte de la clave compuesta hacia T_VIGENCIA.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_promocao MODIFY data_fim_t_vigencia ANNOTATIONS (
|
||||
ADD display_name 'Fecha de fin',
|
||||
ADD business_description 'Fecha final de vigencia enlazada con T_VIGENCIA.',
|
||||
ADD relationship_hint 'Parte de la clave compuesta hacia T_VIGENCIA.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_vigencia ANNOTATIONS (
|
||||
ADD display_name 'Vigencia',
|
||||
ADD business_description 'Rango de fechas en que la promocion esta activa.',
|
||||
ADD example_questions 'La promocion sigue vigente? Cuando termina la promocion?'
|
||||
);
|
||||
|
||||
ALTER TABLE t_vigencia MODIFY data_inicio ANNOTATIONS (
|
||||
ADD display_name 'Inicio de vigencia',
|
||||
ADD business_description 'Primer dia en que la promocion puede ser aplicada.',
|
||||
ADD unit 'fecha'
|
||||
);
|
||||
|
||||
ALTER TABLE t_vigencia MODIFY data_fim ANNOTATIONS (
|
||||
ADD display_name 'Fin de vigencia',
|
||||
ADD business_description 'Ultimo dia en que la promocion puede ser aplicada.',
|
||||
ADD unit 'fecha'
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- T_MEDIOS_PAGO: tarjetas, QR, ecommerce y billeteras
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE t_medios_pago ANNOTATIONS (
|
||||
ADD display_name 'Medios de pago',
|
||||
ADD business_description 'Condiciones de pago aceptadas por la promocion, como tarjetas, red, QR, ecommerce y billeteras electronicas.',
|
||||
ADD select_ai_hint 'Use esta tabla para preguntas sobre como pagar para recibir el beneficio.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_medios_pago MODIFY emissor ANNOTATIONS (
|
||||
ADD display_name 'Emisor',
|
||||
ADD business_description 'Entidad emisora aceptada para participar de la promocion.',
|
||||
ADD synonyms 'banco, entidad, issuer'
|
||||
);
|
||||
|
||||
ALTER TABLE t_medios_pago MODIFY rede ANNOTATIONS (
|
||||
ADD display_name 'Red de tarjeta',
|
||||
ADD business_description 'Red o marca de tarjeta aceptada por la promocion.',
|
||||
ADD synonyms 'marca, red, network'
|
||||
);
|
||||
|
||||
ALTER TABLE t_medios_pago MODIFY qr_permitido ANNOTATIONS (
|
||||
ADD display_name 'QR permitido',
|
||||
ADD business_description 'Indica si el pago por QR participa de la promocion.',
|
||||
ADD select_ai_hint 'Campo booleano: true significa que QR esta permitido.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_medios_pago MODIFY ecommerce_permitido ANNOTATIONS (
|
||||
ADD display_name 'Ecommerce permitido',
|
||||
ADD business_description 'Indica si compras online o ecommerce participan de la promocion.',
|
||||
ADD select_ai_hint 'Campo booleano: true significa que ecommerce esta permitido.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_medios_pago MODIFY tarjetas_aceitas ANNOTATIONS (
|
||||
ADD display_name 'Tarjetas aceptadas',
|
||||
ADD business_description 'Array JSON con las tarjetas o productos de tarjeta que califican.',
|
||||
ADD synonyms 'tarjetas validas, tarjetas admitidas, tarjetas participantes',
|
||||
ADD select_ai_hint 'Use funciones JSON cuando necesite filtrar por una tarjeta especifica.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_medios_pago MODIFY billeteras_electronicas ANNOTATIONS (
|
||||
ADD display_name 'Billeteras electronicas',
|
||||
ADD business_description 'Array JSON con billeteras digitales aceptadas por la promocion.',
|
||||
ADD synonyms 'wallets, billeteras, monederos digitales',
|
||||
ADD select_ai_hint 'Use funciones JSON cuando el usuario pregunte por una billetera especifica.'
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- T_CUOTAS: informacion de financiamiento
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE t_cuotas ANNOTATIONS (
|
||||
ADD display_name 'Cuotas',
|
||||
ADD business_description 'Reglas de financiamiento sin intereses para la promocion.',
|
||||
ADD example_questions 'Cuantas cuotas sin intereses permite la promocion? El cliente debe pedir las cuotas?'
|
||||
);
|
||||
|
||||
ALTER TABLE t_cuotas MODIFY maximo_sin_intereses ANNOTATIONS (
|
||||
ADD display_name 'Maximo sin intereses',
|
||||
ADD business_description 'Cantidad maxima de cuotas sin intereses permitidas.',
|
||||
ADD unit 'cuotas'
|
||||
);
|
||||
|
||||
ALTER TABLE t_cuotas MODIFY requer_solicitacao_cliente ANNOTATIONS (
|
||||
ADD display_name 'Requiere solicitud del cliente',
|
||||
ADD business_description 'Indica si el cliente debe solicitar expresamente el pago en cuotas.',
|
||||
ADD select_ai_hint 'Campo booleano: true significa que el cliente debe solicitarlo.'
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- T_ACREDITACAO_REINTEGRO: como se acredita el beneficio
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE t_acreditacao_reintegro ANNOTATIONS (
|
||||
ADD display_name 'Acreditacion del reintegro',
|
||||
ADD business_description 'Reglas de acreditacion del reintegro: plazo, porcentaje acreditado y tipo de cuenta.',
|
||||
ADD select_ai_hint 'Use esta tabla para preguntas sobre cuando y donde se acredita el reintegro.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_acreditacao_reintegro MODIFY prazo_dias_habiles ANNOTATIONS (
|
||||
ADD display_name 'Plazo en dias habiles',
|
||||
ADD business_description 'Cantidad de dias habiles hasta acreditar el reintegro.',
|
||||
ADD unit 'dias habiles',
|
||||
ADD synonyms 'plazo, demora, tiempo de acreditacion'
|
||||
);
|
||||
|
||||
ALTER TABLE t_acreditacao_reintegro MODIFY percentual_creditado ANNOTATIONS (
|
||||
ADD display_name 'Porcentaje acreditado',
|
||||
ADD business_description 'Porcentaje del reintegro que sera acreditado al cliente.',
|
||||
ADD unit 'porcentaje'
|
||||
);
|
||||
|
||||
ALTER TABLE t_acreditacao_reintegro MODIFY tipo_conta ANNOTATIONS (
|
||||
ADD display_name 'Tipo de cuenta',
|
||||
ADD business_description 'Cuenta o producto donde se acredita el reintegro.',
|
||||
ADD synonyms 'cuenta destino, producto, cuenta de acreditacion'
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- T_COMERCIOS: comercios participantes
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE t_comercios ANNOTATIONS (
|
||||
ADD display_name 'Comercios participantes',
|
||||
ADD business_description 'Lista de comercios que participan de la promocion, con categoria y procesador de pago.',
|
||||
ADD select_ai_hint 'Use esta tabla para preguntas sobre donde comprar, rubros participantes o procesadores de pago.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_comercios MODIFY name ANNOTATIONS (
|
||||
ADD display_name 'Nombre del comercio',
|
||||
ADD business_description 'Nombre del comercio tal como aparece en el documento original.',
|
||||
ADD synonyms 'tienda, local, merchant, comercio'
|
||||
);
|
||||
|
||||
ALTER TABLE t_comercios MODIFY category ANNOTATIONS (
|
||||
ADD display_name 'Categoria del comercio',
|
||||
ADD business_description 'Rubro o seccion del markdown donde aparece el comercio.',
|
||||
ADD synonyms 'rubro, segmento, categoria, grupo'
|
||||
);
|
||||
|
||||
ALTER TABLE t_comercios MODIFY payment_processor ANNOTATIONS (
|
||||
ADD display_name 'Procesador de pago',
|
||||
ADD business_description 'Procesador asociado al comercio, por ejemplo upay o bancard.',
|
||||
ADD synonyms 'procesadora, adquirente, payment processor'
|
||||
);
|
||||
|
||||
ALTER TABLE t_comercios MODIFY "_id_t_root" ANNOTATIONS (
|
||||
ADD display_name 'Documento de origen',
|
||||
ADD business_description 'Clave tecnica que enlaza el comercio con el documento raiz de la promocion.',
|
||||
ADD relationship_hint 'Clave foranea hacia T_ROOT."_id".'
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- T_BENEFICIOS_POR_NIVEL: reglas de reintegro por nivel
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE t_beneficios_por_nivel ANNOTATIONS (
|
||||
ADD display_name 'Beneficios por nivel',
|
||||
ADD business_description 'Lista de niveles de cliente y sus reglas de reintegro, compra minima y tope maximo.',
|
||||
ADD select_ai_hint 'Use esta tabla para comparar beneficios entre niveles.'
|
||||
);
|
||||
|
||||
ALTER TABLE t_beneficios_por_nivel MODIFY nivel ANNOTATIONS (
|
||||
ADD display_name 'Nivel del cliente',
|
||||
ADD business_description 'Nivel o segmento del cliente dentro de la promocion.',
|
||||
ADD synonyms 'segmento, nivel, categoria de cliente'
|
||||
);
|
||||
|
||||
ALTER TABLE t_beneficios_por_nivel MODIFY percentual_reintegro ANNOTATIONS (
|
||||
ADD display_name 'Porcentaje de reintegro',
|
||||
ADD business_description 'Porcentaje de reintegro ofrecido para el nivel.',
|
||||
ADD unit 'porcentaje'
|
||||
);
|
||||
|
||||
ALTER TABLE t_beneficios_por_nivel MODIFY monto_compra_minimo_gs ANNOTATIONS (
|
||||
ADD display_name 'Compra minima',
|
||||
ADD business_description 'Monto minimo de compra requerido para aplicar el beneficio.',
|
||||
ADD unit 'guaranies'
|
||||
);
|
||||
|
||||
ALTER TABLE t_beneficios_por_nivel MODIFY reintegro_maximo_gs ANNOTATIONS (
|
||||
ADD display_name 'Tope maximo de reintegro',
|
||||
ADD business_description 'Monto maximo de reintegro que puede recibir el cliente en guaranies.',
|
||||
ADD unit 'guaranies',
|
||||
ADD synonyms 'tope, limite, maximo de devolucion'
|
||||
);
|
||||
|
||||
ALTER TABLE t_beneficios_por_nivel MODIFY "_id_t_root" ANNOTATIONS (
|
||||
ADD display_name 'Documento de origen',
|
||||
ADD business_description 'Clave tecnica que enlaza el beneficio por nivel con el documento raiz de la promocion.',
|
||||
ADD relationship_hint 'Clave foranea hacia T_ROOT."_id".'
|
||||
);
|
||||
|
||||
-- ============================================================================
|
||||
-- V_PARSED_MARKDOWN_FILES: vista JSON Relational Duality
|
||||
-- ============================================================================
|
||||
|
||||
ALTER VIEW v_parsed_markdown_files ANNOTATIONS (
|
||||
ADD display_name 'Documento JSON de promocion',
|
||||
ADD business_description 'JSON Relational Duality View que presenta las tablas normalizadas como un unico documento JSON consultable y actualizable.',
|
||||
ADD select_ai_hint 'Use esta vista cuando el usuario pregunte por el documento completo o quiera ver la estructura JSON de la promocion.',
|
||||
ADD example_questions 'Muestre el JSON completo de la promocion. Que comercios aparecen dentro del documento? Que condiciones tiene la promocion?'
|
||||
);
|
||||
|
||||
123
lab/selectai/03_select.sql
Normal file
123
lab/selectai/03_select.sql
Normal file
@@ -0,0 +1,123 @@
|
||||
set serveroutput on
|
||||
set long 9999999
|
||||
set pagesize 1000
|
||||
set linesize 200
|
||||
-- ============================================================================
|
||||
-- Profile especializado para el lab de SELECT AI con annotations
|
||||
-- ============================================================================
|
||||
-- Este profile limita el contexto de SELECT AI a las tres tablas del ejercicio.
|
||||
-- La opcion annotations=true envia las annotations de tablas y columnas al modelo.
|
||||
-- enforce_object_list=true evita que el modelo use otras tablas accesibles.
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_AI.DROP_PROFILE(
|
||||
profile_name => 'PROFILE_GPT_5_5_SELECTAI',
|
||||
force => TRUE
|
||||
);
|
||||
END;
|
||||
/
|
||||
|
||||
BEGIN
|
||||
DBMS_CLOUD_AI.CREATE_PROFILE(
|
||||
profile_name => 'PROFILE_GPT_5_5_SELECTAI',
|
||||
attributes => JSON_OBJECT(
|
||||
'provider' VALUE 'oci',
|
||||
'credential_name' VALUE 'OCI$RESOURCE_PRINCIPAL',
|
||||
'model' VALUE 'openai.gpt-5.5',
|
||||
'region' VALUE 'us-chicago-1',
|
||||
'oci_compartment_id' VALUE 'ocid1.compartment.oc1..aaaaaaaa33ogmhasyvcqzuvkrfzo5mavh3q2le7mgwmy74yzpyqi7byxgrlq',
|
||||
'temperature' VALUE 1,
|
||||
'max_tokens' VALUE 8192,
|
||||
'annotations' VALUE 'true',
|
||||
'object_list_mode' VALUE 'all',
|
||||
'enforce_object_list' VALUE 'true',
|
||||
'object_list' VALUE JSON_ARRAY(
|
||||
JSON_OBJECT('owner' VALUE USER, 'name' VALUE 'T_ROOT'),
|
||||
JSON_OBJECT('owner' VALUE USER, 'name' VALUE 'T_COMERCIOS'),
|
||||
JSON_OBJECT('owner' VALUE USER, 'name' VALUE 'T_BENEFICIOS_POR_NIVEL')
|
||||
)
|
||||
),
|
||||
description => 'Profile para SELECT AI usando annotations y solamente T_ROOT, T_COMERCIOS y T_BENEFICIOS_POR_NIVEL.'
|
||||
);
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- Lab: Consultas SELECT AI usando annotations
|
||||
-- ============================================================================
|
||||
-- Este script contiene ejemplos didacticos de SELECT AI.
|
||||
--
|
||||
-- La accion SHOWSQL muestra el SQL que el modelo genera. Esto ayuda a ver como
|
||||
-- las annotations de display_name, business_description, synonyms y
|
||||
-- relationship_hint guian la seleccion de tablas, columnas y joins.
|
||||
|
||||
|
||||
-- SELECT AI modes:
|
||||
-- showsql: cuando quieres obtener el SQL generado, revisarlo, auditarlo, registrarlo en logs o ejecutarlo después con control propio.
|
||||
-- runsql: cuando aceptas que la base de datos genere y ejecute la consulta directamente.
|
||||
-- narrate: cuando quieres una respuesta en lenguaje natural basada en el resultado.
|
||||
-- explainsql: cuando quieres explicar el SQL generado.
|
||||
-- chat: conversación general con el modelo, no necesariamente sobre SQL.
|
||||
|
||||
-- ============================================================================
|
||||
|
||||
EXEC DBMS_CLOUD_AI.SET_PROFILE('PROFILE_GPT_5_5_SELECTAI');
|
||||
|
||||
-- ============================================================================
|
||||
-- Ejemplo 1: sinonimos de comercios y categorias
|
||||
-- ============================================================================
|
||||
-- Las annotations indican que T_COMERCIOS representa "Comercios participantes"
|
||||
-- y que NAME tambien puede ser entendido como tienda, local, merchant o comercio.
|
||||
-- El prompt usa lenguaje de negocio, no nombres tecnicos de columnas.
|
||||
|
||||
-- select ai
|
||||
SELECT AI runsql Muestra los locales participantes por rubro, indicando el comercio, la categoria y la procesadora de pago.;
|
||||
|
||||
|
||||
SELECT JSON_SERIALIZE(
|
||||
DBMS_CLOUD_AI.GENERATE(
|
||||
prompt => 'Muestra los locales participantes por rubro, indicando el comercio, la categoria y la procesadora de pago.',
|
||||
profile_name => 'PROFILE_GPT_5_5_SELECTAI',
|
||||
action => 'runsql'
|
||||
) returning CLOB pretty);
|
||||
|
||||
|
||||
|
||||
-- dbms_cloud_ai
|
||||
DECLARE
|
||||
l_response CLOB;
|
||||
BEGIN
|
||||
l_response := DBMS_CLOUD_AI.GENERATE(
|
||||
prompt => 'Muestra los locales participantes por rubro, indicando el comercio, la categoria y la procesadora de pago.',
|
||||
profile_name => 'PROFILE_GPT_5_5_SELECTAI',
|
||||
action => 'showsql'
|
||||
);
|
||||
|
||||
DBMS_OUTPUT.PUT_LINE(DBMS_LOB.SUBSTR(l_response, 4000, 1));
|
||||
END;
|
||||
/
|
||||
|
||||
-- ============================================================================
|
||||
-- Ejemplo 2: beneficio por segmento, compra minima y tope
|
||||
-- ============================================================================
|
||||
-- Las annotations explican que "nivel" tambien puede significar segmento o
|
||||
-- categoria de cliente, y que "tope" es el reintegro maximo en guaranies.
|
||||
-- El prompt usa esos sinonimos para mostrar como SELECT AI entiende el negocio.
|
||||
|
||||
SELECT AI runsql
|
||||
Para cada segmento de cliente, lista el porcentaje de reintegro,
|
||||
la compra minima requerida y el tope maximo de devolucion en guaranies.
|
||||
;
|
||||
|
||||
-- ============================================================================
|
||||
-- Ejemplo 3: pregunta de negocio cruzando comercios y niveles
|
||||
-- ============================================================================
|
||||
-- Este ejemplo combina tres tablas. Las relationship_hint de T_ROOT, T_COMERCIOS
|
||||
-- y T_BENEFICIOS_POR_NIVEL ayudan al modelo a entender que ambas listas hijas
|
||||
-- pertenecen al mismo documento de promocion.
|
||||
|
||||
SELECT AI runsql
|
||||
Combine los comercios participantes con los beneficios por nivel de cliente del mismo documento.
|
||||
Muestra rubro, comercio, procesadora, nivel del cliente, porcentaje de reintegro, compra minima
|
||||
y limite maximo de devolucion.
|
||||
;
|
||||
Reference in New Issue
Block a user