55 lines
2.1 KiB
SQL
55 lines
2.1 KiB
SQL
create or replace FUNCTION FNC_26ai_rag (p_ai_prompt IN clob,
|
|
p_oci_cred IN VARCHAR2 default 'OCI_CRED',
|
|
p_comp in varchar2
|
|
)
|
|
RETURN CLOB AS
|
|
/*
|
|
|
|
Criado por: fernando.leal@oracle.com
|
|
Data: Oct/2025
|
|
Objetivo: demonstrar casos de uso do Oracle AI Database 26ai
|
|
|
|
v1 - funcao global de RAG com Llama4 - leal
|
|
|
|
*/
|
|
v_gen_ai_endpoint varchar2(500) := 'https://inference.generativeai.us-chicago-1.oci.oraclecloud.com';
|
|
v_gen_ai_model varchar2(500) := 'meta.llama-4-maverick-17b-128e-instruct-fp8';
|
|
resp dbms_cloud_types.RESP;
|
|
BEGIN
|
|
resp := dbms_cloud.send_request(
|
|
credential_name => p_oci_cred,
|
|
uri => v_gen_ai_endpoint || '/20231130/actions/chat',
|
|
method => dbms_cloud.METHOD_POST,
|
|
body => utl_raw.cast_to_raw(json_object(
|
|
'compartmentId' value p_comp,
|
|
'servingMode' value
|
|
(json_object(
|
|
'modelId' value v_gen_ai_model,
|
|
'servingType' value 'ON_DEMAND'
|
|
)),
|
|
'chatRequest' value
|
|
(json_object(
|
|
'apiFormat' value 'GENERIC',
|
|
'messages' value
|
|
(json_array(JSON_OBJECT(
|
|
'role' value 'USER',
|
|
'content' value
|
|
(json_array(JSON_OBJECT(
|
|
'type' value 'TEXT',
|
|
'text' value p_ai_prompt
|
|
)))
|
|
))),
|
|
'temperature' value 0.1,
|
|
'topK' value -1
|
|
))
|
|
))
|
|
);
|
|
RETURN json_value( dbms_cloud.get_response_text(resp) , '$.chatResponse.choices[0].message.content[0].text') ;
|
|
|
|
-- cuidado: removido 'maxTokens' value 1000 em 14-11-25 leal
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS THEN
|
|
RETURN 'Não foi possível gerar um texto com base nas informações.';
|
|
END;
|
|
/ |