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;
/