Files
26ai_mvp_poc/fnc_26ai_rag_vllm.sql
2026-05-08 13:13:42 +00:00

56 lines
1.9 KiB
SQL

create or replace FUNCTION "FNC_26AI_RAG_VLLM" (p_ai_prompt IN clob)
RETURN CLOB AS
v_gen_ai_model varchar2(500) :='openai/gpt-oss-120b';
resp dbms_cloud_types.RESP;
BEGIN
/*
Criado por: fernando.leal@oracle.com
Data: Mar/2026
Objetivo: RAG via PL/SQL usando um vLLM em arquitetura LOCAL
v1 - funcao de RAG usando openai/gpt-oss-120b - fleal
Set host to local to disable credential
The provider value must specify openai
https://docs.oracle.com/en/database/oracle/oracle-database/26/vecse/utl_to_embedding-and-utl_to_embeddings-dbms_vector_chain.html
*/
resp := dbms_cloud.send_request(
credential_name => NULL,
uri => 'https://hub-gpus.DOMINIO.com.br/gpt120/v1/chat/completions',
method => DBMS_CLOUD.METHOD_POST,
headers => JSON_OBJECT('Content-Type' VALUE 'application/json'),
body => UTL_RAW.CAST_TO_RAW('{"model": "' || v_gen_ai_model || '",
"messages": [{"role": "user",
"content": "' || p_ai_prompt || '"
}]}')
);
--RETURN json_value( dbms_cloud.get_response_text(resp) , '$.chatResponse.choices[0].message.content[0].text') ;
--
RETURN DBMS_CLOUD.GET_RESPONSE_TEXT(resp) ;
/* opcao 2:
declare
params clob;
input clob;
response clob;
begin
input := '[{"role": "user","content": "Fale sobre a Oracle"}]';
params := '{
"provider": "openai",
"url": "https://hub-gpus.DOMINIO.com.br/gpt120/v1/chat/completions",
"host": "local",
"model": "openai/gpt-oss-120b"}';
response := dbms_vector_chain.utl_to_generate_text( input , json(params)) ;
DBMS_OUTPUT.PUT_LINE(response);
end; */
EXCEPTION
WHEN OTHERS THEN
RETURN sqlerrm;
END;
/