Upload files to "/"
This commit is contained in:
138
fnc_26ai_siderurgia.sql
Normal file
138
fnc_26ai_siderurgia.sql
Normal file
@@ -0,0 +1,138 @@
|
||||
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;
|
||||
/
|
||||
Reference in New Issue
Block a user