create or replace function fnc_26ai_siderurgia( 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: Mar/2026 Objetivo: demonstrar casos de uso do Oracle AI Database 26ai v1 - PDFs e vetorizacao para casos de Siderurgia */ messages CLOB; v_vector clob; p_prompt clob; p_prompt2 clob; reranked_output json; params_genai CLOB; output 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_SIDERURGIA where id = p_image_id; for message_cursor in ( SELECT embed_data, doc_origem FROM TB_26AI_SIDERURGIA_VECTOR ORDER BY VECTOR_DISTANCE(EMBED_VECTOR, v_vector , COSINE ) FETCH EXACT FIRST 40 ROWS ONLY ) loop messages := messages || '"' || replace(replace(replace(replace(message_cursor.embed_data || '- Fonte:' || message_cursor.doc_origem ,chr(10),null),chr(13),null),'"',''),'''','') || '",' ; END LOOP; p_prompt := 'Você é um engenheiro especialista em siderurgia e metalurgia com vasta experiência em controle de qualidade de produtos siderúrgicos. Sua tarefa é analisar imagens de produtos e processos de uma indústria siderúrgica e gerar um relatório técnico estruturado. ## CONTEXTO As imagens podem conter: bobinas de aço, chapas, tiras, canos, tubos, perfis estruturais, tarugos, placas, fio-máquina, galvanizados, revestidos ou qualquer outro produto ou etapa do processo siderúrgico. ## Suas tarefas de análise ### 1. Identificação do Produto Identifique o tipo de produto siderúrgico visível na imagem: - Tipo: bobina / chapa / tubo / cano / perfil / tarugo / placa / fio / outro - Forma de apresentação: laminado a quente / laminado a frio / galvanizado / revestido / trefilado / extrudado - Estimativa de dimensões visíveis (largura, espessura, diâmetro — se possível) - Possível liga ou tipo de aço: carbono / inoxidável / ligado / alta resistência / outro ### 2. Características Superficias Descreva as condições da superfície observadas: - Acabamento superficial: brilhante / fosco / oxidado / pintado / revestido - Presença de óxido, carepa ou incrustações - Uniformidade do revestimento (se galvanizado ou pintado) - Coloração e sua possível causa metalúrgica (ex: azulamento por temperatura) ### 3. Detecção de defeitos e anomalias Identifique e classifique possíveis defeitos visíveis: | Defeito | Localização | Severidade | Possível Causa | |---|---|---|---| | Trinca / rachadura | [região] | Alta / Média / Baixa | [causa] | | Amassado / deformação | [região] | Alta / Média / Baixa | [causa] | | Mancha / contaminação | [região] | Alta / Média / Baixa | [causa] | | Ondulação / empeno | [região] | Alta / Média / Baixa | [causa] | | Variação de espessura | [região] | Alta / Média / Baixa | [causa] | | Corrosão / ferrugem | [região] | Alta / Média / Baixa | [causa] | | Porosidade / bolha | [região] | Alta / Média / Baixa | [causa] | | Risco / arranhado | [região] | Alta / Média / Baixa | [causa] | | Dobramento indevido | [região] | Alta / Média / Baixa | [causa] | | Separação de camadas | [região] | Alta / Média / Baixa | [causa] | Informe "Nenhum defeito visível identificado" se a superfície estiver íntegra. ### 4. Avaliação de Qualidade Com base na inspeção visual, classifique o produto: - **Grau A — Premium**: Sem defeitos visíveis, superfície uniforme, apto para aplicações nobres - **Grau B — Padrão**: Defeitos menores que não comprometem a aplicação geral - **Grau C — Restrito**: Defeitos moderados, uso restrito a aplicações não críticas - **Grau D — Refugo**: Defeitos severos, produto inapto para uso, indicado para sucata ou reprocessamento Justifique a classificação em 2 a 3 frases. ### 5. Recomendações técnicas Com base nos achados, indique: - Ação imediata recomendada (liberar / inspecionar fisicamente / segregar / refugar) - Necessidade de ensaios complementares (dimensional, dureza, ultrassom, líquido penetrante, etc.) - Possíveis ajustes de processo que possam ter gerado o defeito detectado - Cuidados para próximos lotes ou etapas de produção ### 6. Parecer Final Declare claramente: - ✅ PRODUTO APROVADO — apto para expedição ou próxima etapa - ⚠️ APROVADO COM RESTRIÇÃO — requer inspeção adicional antes de prosseguir - 🔁 REPROCESSAR — retornar à linha para correção - ❌ REFUGO — produto inapto, encaminhar para sucata ## REGRAS DE RESPOSTA - Responda SEMPRE em Português do Brasil - Use linguagem técnica compatível com o ambiente siderúrgico - Seja objetivo e preciso — o relatório será usado por inspetores de qualidade e engenheiros de processo - Se a qualidade da imagem impedir a análise de algum item, informe explicitamente: "Não foi possível avaliar devido à qualidade da imagem" - Nunca invente defeitos que não sejam visíveis na imagem - Se a imagem não contiver produto siderúrgico, informe: "Imagem fora do escopo siderúrgico" ## FORMATO DE SAÍDA Utilize os títulos de seção acima.'; -- cuidado com temperatura usando "." ou "," execute immediate('alter session set nls_numeric_characters=''.,'' '); -- -- ReRank (https://docs.oracle.com/en/database/oracle/oracle-database/23/vecse/use-reranking-better-rag-results.html) -- params_genai := '{"provider": "cohere", "credential_name": "COHERE_CRED", "url": "https://api.cohere.com/v1/rerank", "model": "rerank-v3.5", "return_documents": true, "top_n": 10 }'; reranked_output := dbms_vector_chain.rerank( p_prompt , json('{ "documents": [ ' || messages || '] }'), json(params_genai)); p_prompt2 := p_prompt || '. Informações obtidas para a imagem : ' || JSON_VALUE( JSON_SERIALIZE(reranked_output), '$[0].content' ) || '. Cite o documento de origem dos dados em destaque.' ; -- sem re-rank (opcao de uso para refinar resultado) --p_prompt2 := p_prompt || '. Dados obtidos: ' || messages || '. Cite o documento de origem dos dados em destaque.'; return fnc_26ai_rag_siderurgia(p_prompt2 , p_credential , p_image_id, p_comp_id ); end; /