diff --git a/fnc_26ai_html.sql b/fnc_26ai_html.sql new file mode 100644 index 0000000..b3b37b4 --- /dev/null +++ b/fnc_26ai_html.sql @@ -0,0 +1,245 @@ +create or replace FUNCTION fnc_26ai_html(p_query VARCHAR2, + p_top_k IN NUMBER default 20, + p_credential in varchar2 default 'OCI_CRED' ) +RETURN CLOB IS +/* + + Criado por: fernando.leal@oracle.com + Data: Oct/2025 + Objetivo: demonstrar casos de uso do Oracle AI Database 26ai + + v1 - geracao de codigo HTML a partir de dados obtidos com SelectAI - leal + + begin + dbms_cloud_ai.create_profile( + profile_name => 'PROF_26AI_HTML_V1', + attributes => + '{"provider": "oci", + "credential_name": "OCI_CRED", + "oci_compartment_id": "ocid1.compartment.oc1..aaaaaaaakvd4bq4b3n7yn3gjjqzfhsl62dec44tjvi2iwa3sugw5frgfpzea", + "region": "us-chicago-1", + "model": "meta.llama-4-maverick-17b-128e-instruct-fp8", + "oci_apiformat": "GENERIC", + "object_list": [ + {"owner": "AICHAT1", "name":"TB_26AI_HTML"} + ], + "comments": true, + "annotations": true, + "temperature": 0.1 + }' + ); + end; + + */ + + v_pre_prompt clob; + v_prompt clob; + params_genai CLOB; + output CLOB; + v_response clob; + v_response_sql clob; + v_pre_prompt2 clob; + v_select_ai_preprompt varchar2(4000) := ' . Não adicione nenhum filtro de data a menos que seja solicitado.'; + v_select_ai_profile varchar2(20) := 'PROF_26AI_HTML_V1'; + -- + -- Modo debug + -- + v_select_ai_debug_flag varchar2(1) := 'N'; + +BEGIN + + begin + SELECT DBMS_CLOUD_AI.GENERATE(prompt => p_query || v_select_ai_preprompt , + profile_name => v_select_ai_profile, + action => 'runsql') response + into v_response; + + if v_select_ai_debug_flag = 'Y' then + SELECT DBMS_CLOUD_AI.GENERATE(prompt => p_query || v_select_ai_preprompt , + profile_name => v_select_ai_profile, + action => 'showsql') response + into v_response_sql; + end if; -- fim v_select_ai_debug_flag + + if v_response like 'Sorry%' or v_response like 'No data found%' then + v_response := '--' ; + end if; + exception + when others then + v_response := '-' ; + end; + + -- + -- pre requisito sao as credenciais definidas com nome OCI_CRED criadas a partir de dbms_vector.create_credential + -- + -- para montar request body abaixo: https://docs.oracle.com/en-us/iaas/api/#/en/generative-ai-inference/20231130/datatypes/GenerateTextDetails + -- + params_genai := '{ + "provider" : "ocigenai", + "credential_name" : "' || p_credential || '", + "url" : "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/chat", + "model": "meta.llama-4-maverick-17b-128e-instruct-fp8"}'; -- + + + -- augmented prompt atraves do vetor criado no banco + v_pre_prompt := 'Você é um Desenvolvedor Front-End especialista em HTML5 semântico e acessível (WCAG). + Seu objetivo é criar estruturas HTML que sejam bem organizadas, lógicas e otimizadas para motores de busca (SEO). + #### REGRA: somente o HTML deve ser retornado. + #### EXEMPLO: + + + + + + Data Dashboard + + + + + + +
+

Data Dashboard

+

Overview of Data

+
+
+
+
+
Total Transações
+

63,459,400

+
+
+
+
+
+
+
Modalidades
+

5

+
+
+
+
+
+
+
Mês/Ano
+

9

+
+
+
+
+
+
+
Total Meses
+

9

+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +
IDMES_ANOMODALTRANSACOES
112025BRT642,600
212025Ônibus1,800,000
+
+
+
+
+
+ + + + + #### TAREFA 1: GERAÇÃO DE CÓDIGO HTML #### + Se a entrada do usuário for uma solicitação para criar um dashboard, sua saída DEVE seguir o seguinte formato: + - A saída conterá APENAS o código HTML. + - Crie insigths dos dados, exiba de forma com foco na inovação para surpreender o usuário. + - Não inclua explicações, texto introdutório, saudações ou blocos de Markdown como ```html. + - O código deve ser bem formatado, com indentação clara e usar tags semânticas (como
,
,