create or replace function fnc_26ai_manufatura( p_image_id in number, p_comp_id in varchar2, p_credential in varchar2 default 'OCI_CRED') return clob as /* Criado por: fernando.leal@oracle.com Data: Nov/2025 Objetivo: demonstrar casos de uso do Oracle AI Database 26ai v1 - similaridade e rag para Manufatura - leal SelectAI para pesquisas por texto: begin dbms_cloud_ai.create_profile( profile_name => 'PROF_26AI_MANUF_V1', attributes => '{"provider": "oci", "credential_name": "OCI_CRED", "oci_compartment_id": "ocid1.compartment.oc1..aaaaaaaaev2ipyek53f7sck5ibvtnqrp5w2k54qiuk2cikbfati5bk54yhka", "region": "us-chicago-1", "model": "meta.llama-4-maverick-17b-128e-instruct-fp8", "oci_apiformat": "GENERIC", "object_list": [ {"owner": "AICHAT1", "name":"TB_26AI_MANUFATURA_CATALOGO_TEXTO"} ], "comments": true, "annotations": true, "temperature": 0.1 }' ); end; */ messages CLOB; v_vector clob; p_prompt clob; begin SELECT json_value( fnc_26ai_embed_image_cohere(file_name, file_blob, p_credential , p_comp_id) , '$.embeddings[*].vector()') INTO v_vector from TB_26AI_MANUFATURA where id = p_image_id; for message_cursor in ( SELECT embed_data FROM ( SELECT 'Part Number: ' || PART_NUMBER || ' Descrição: ' || DESCRIPTION || ' Categoria: ' || CATEGORY || ' SKU: ' || SKU embed_data FROM TB_26AI_MANUFATURA_CATALOGO_TEXTO ) ORDER BY VECTOR_DISTANCE( FNC_26AI_EMBED(embed_data,'COHERE') , v_vector , COSINE ) FETCH EXACT FIRST 5 ROWS ONLY ) loop messages := messages || '"' || replace(replace(replace(replace(message_cursor.embed_data,chr(10),null),chr(13),null),'"',''),'''','') || '",' ; END LOOP; -- cuidado com temperatura usando "." ou "," --execute immediate('alter session set nls_numeric_characters=''.,'' '); -- sem re-rank (opcao de uso para refinar resultado) p_prompt := ' A imagem fornecida tem associacao com descricoes, ou nomes do catalogo vetorizado. Identifique a maior semelhança.' || ' A resposta deve ser objetiva, descervendo SKU, Part Number, Categoria e Descricao. Dados do catalogo de produtos: ' || messages; return fnc_26ai_rag_manufatura(p_prompt ,p_credential, p_image_id, p_comp_id); end; /