86 lines
2.9 KiB
SQL
86 lines
2.9 KiB
SQL
create or replace procedure proc_26ai_llm_chart(p_session_id in number,
|
|
p_user_name in varchar2,
|
|
p_prompt in varchar2,
|
|
p_conv_id in number
|
|
)
|
|
as
|
|
/*
|
|
|
|
Criado por: fernando.leal@oracle.com
|
|
Data: Oct/2025
|
|
Objetivo: demonstrar casos de uso do Oracle AI Database 26ai
|
|
|
|
v1 - graficos em componente de chat - leal
|
|
|
|
*/
|
|
/*
|
|
SELECT
|
|
jt.X,
|
|
jt.Y
|
|
FROM TB_CHART d,
|
|
JSON_TABLE(
|
|
d.RUNSQL, '$[*]'
|
|
COLUMNS (
|
|
x VARCHAR2(50) PATH '$.X',
|
|
y NUMBER PATH '$.Y'
|
|
)
|
|
) jt
|
|
where session_id = :app_session
|
|
and conv_id = :P37_CONV_ID
|
|
|
|
*/
|
|
v_context clob;
|
|
v_response clob;
|
|
v_conv_id number;
|
|
v_showsql clob;
|
|
v_runsql clob;
|
|
v_title clob;
|
|
v_debug varchar2(1) default 'Y';
|
|
-- create table tb_chart_test2 ( title varchar2(200), runsql clob )
|
|
v_profile_selectai varchar2(200) := 'PROF_TELECOM_V1';
|
|
v_prompt varchar2(32000);
|
|
begin
|
|
|
|
v_prompt := 'Você é um especialista em Oracle SQL.' ||
|
|
' Crie um comando para que seja possível montar um gráfico, trazendo apenas 2 colunas, que assegure existir dados para eixo X e dados para eixo Y.' ||
|
|
' REGRA: NUNCA use o nome das colunas, use sempre X e Y. Procure associar ao eixo X e Y as informacoes mais importantes para que o gráfico agregue insigths do negócio.' ||
|
|
' Exemplo 1: "Faça um grafico da evolução de venda de produtos" . O eixo X deve ter o nome dos produtos, e eixo Y o total de vendas.' ||
|
|
' Exemplo 2: "Faça um grafico sobre reclamacoes realizadas? Eixo X tem as reclamacoes agrupdas com GROUP BY e eixo Y a quantidade encontrada com COUNT' ||
|
|
' Prompt: ' || p_prompt;
|
|
|
|
SELECT DBMS_CLOUD_AI.GENERATE(prompt => v_prompt,
|
|
profile_name => v_profile_selectai,
|
|
action => 'runsql') response
|
|
into v_runsql ;
|
|
|
|
if v_debug = 'Y' then
|
|
|
|
SELECT DBMS_CLOUD_AI.GENERATE(prompt => v_prompt,
|
|
profile_name => v_profile_selectai,
|
|
action => 'showsql') response
|
|
into v_showsql ;
|
|
|
|
end if;
|
|
|
|
SELECT DBMS_CLOUD_AI.GENERATE(prompt => 'Qual melhor título para um gráfico que será gerado por este prompt: ' || p_prompt || '.' ||
|
|
'REGRAS: máximo permitido são 6 palavras. Seja claro e o mais sucinto possível. RETORNE apenas o título. Não de nenhuma outra explicacação.',
|
|
profile_name => v_profile_selectai,
|
|
action => 'chat') response
|
|
into v_title ;
|
|
|
|
delete "TB_26AI_CHART"
|
|
where SESSION_ID = p_session_id
|
|
and conv_id = p_conv_id;
|
|
|
|
insert into "TB_26AI_CHART"
|
|
values(p_session_id,
|
|
p_user_name,
|
|
sysdate,
|
|
v_title,
|
|
v_runsql,
|
|
v_showsql,
|
|
p_conv_id,
|
|
null);
|
|
commit;
|
|
end;
|
|
/ |