Torna a regiao do Generative AI configuravel (GENAI_REGION)
Region estava fixa em us-chicago-1 em varios pontos (ACL, testes 5.1/5.2/5.3, FNC_26ai_rag, fnc_26ai_tech_rag, fnc_26ai_embed, PRC_26AI_TECH). Tenancies com escopo regional restrito (ex. America Latina) podem nao alcancar essa regiao, mesmo com credencial/ACL/compartimento corretos - o sintoma e ORA-20404 "Object not found" com uma URL bem formada. Novo parametro GENAI_REGION em TB_26AI_TECH_PARAMS (default us-chicago-1, editavel) substitui o valor fixo em todos os pontos de chamada. Seção 1.6 (ACL) continua com host fixo por rodar antes da tabela de config existir, mas o comentario agora aponta para o parametro. docs/09 ganhou uma entrada de checklist nova: ORA-20404 com URL correta pode ser modelo aposentado para uso on-demand na regiao (verificavel via `oci generative-ai model-collection list-models`), nao so credencial/ACL. Seções 6 e 7 de docs/04-passo-a-passo-banco.html tambem foram resincronizadas com o sql/01_ampminsights_db_setup.sql atual (estavam desatualizadas desde a adição do TB_26AI_TECH_LOG). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -103,9 +103,15 @@ GRANT CREATE CREDENTIAL TO AMPMINSIGHTS;
|
||||
GRANT CREATE JOB TO AMPMINSIGHTS;
|
||||
|
||||
-- 1.6) Regras de rede (ACL) para o schema poder chamar o endpoint do OCI
|
||||
-- Generative AI usado neste script (regiao us-chicago-1). Se voce for
|
||||
-- usar outra regiao de Generative AI, ajuste o host abaixo (e repita
|
||||
-- este bloco para cada host adicional que for necessario).
|
||||
-- Generative AI usado neste script (regiao us-chicago-1 por padrao - o
|
||||
-- mesmo valor que vai para o parametro GENAI_REGION da SECAO 2, que
|
||||
-- ainda nao existe neste ponto do script, por isso o host aqui e
|
||||
-- digitado direto). Nem toda tenancy alcanca us-chicago-1 (ex.: algumas
|
||||
-- tenancies com escopo regional restrito, como America Latina, podem
|
||||
-- so alcancar sa-saopaulo-1) - se for o seu caso, troque o host abaixo
|
||||
-- pela regiao que a sua tenancy alcanca, E use o mesmo valor no
|
||||
-- parametro GENAI_REGION da SECAO 2 (repita este bloco para cada host
|
||||
-- adicional que for necessario).
|
||||
BEGIN
|
||||
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
|
||||
host => 'inference.generativeai.us-chicago-1.oci.oraclecloud.com',
|
||||
@@ -201,6 +207,10 @@ INSERT INTO TB_26AI_TECH_PARAMS (PARAM_NAME, PARAM_VALUE, DESCRIPTION) VALUES
|
||||
('AI_LOG_RETENTION_DAYS', '90',
|
||||
'Dias de retencao do log de chamadas de IA/embeddings (TB_26AI_TECH_LOG) - ver docs/09-operacao-observabilidade.html para a query de purga.');
|
||||
|
||||
INSERT INTO TB_26AI_TECH_PARAMS (PARAM_NAME, PARAM_VALUE, DESCRIPTION) VALUES
|
||||
('GENAI_REGION', 'us-chicago-1',
|
||||
'Regiao do OCI Generative AI usada pelo RAG/insights/embeddings (SECAO 5+). Pode ser diferente da OCI_REGION (que e a regiao "de casa" do seu tenancy/bucket) - o Generative AI so roda em regioes especificas. Se a sua tenancy nao alcancar us-chicago-1 (comum em tenancies com escopo regional restrito, ex. America Latina), troque para uma regiao que a sua tenancy alcance (ex. sa-saopaulo-1) E repita a ACL da SECAO 1.6 para o novo host - confirme antes com "oci generative-ai model-collection list-models" ou o Console OCI que o modelo usado (meta.llama-4-maverick-17b-128e-instruct-fp8) ainda esta ativo para uso on-demand na regiao escolhida, ja que a disponibilidade de modelos varia por regiao e muda com o tempo.');
|
||||
|
||||
COMMIT;
|
||||
|
||||
-- Confira: nenhuma linha abaixo deve ainda mostrar um valor "<SUBSTITUA...>"
|
||||
@@ -340,14 +350,15 @@ WHERE model_name = 'CLIP_VIT_LARGE_PATCH14_TXT';
|
||||
-- Rode os 3 blocos abaixo para confirmar que a credencial e a rede estao OK
|
||||
-- antes de seguir para as tabelas e o PL/SQL da aplicacao.
|
||||
|
||||
-- 5.1) Teste de embedding (Cohere, via OCI Generative AI)
|
||||
-- 5.1) Teste de embedding (Cohere, via OCI Generative AI). A URL usa a
|
||||
-- regiao configurada em GENAI_REGION (SECAO 2), nao um valor fixo.
|
||||
SELECT VECTOR_SERIALIZE(
|
||||
DBMS_VECTOR_CHAIN.UTL_TO_EMBEDDING(
|
||||
TO_CLOB('Teste simples para gerar um embedding.'),
|
||||
JSON('{
|
||||
"provider": "ocigenai",
|
||||
"credential_name": "OCI_CRED",
|
||||
"url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText",
|
||||
"url": "https://inference.generativeai.' || (SELECT param_value FROM TB_26AI_TECH_PARAMS WHERE param_name = 'GENAI_REGION') || '.oci.oraclecloud.com/20231130/actions/embedText",
|
||||
"model": "cohere.embed-v4.0"
|
||||
}')
|
||||
)
|
||||
@@ -355,13 +366,14 @@ SELECT VECTOR_SERIALIZE(
|
||||
) AS embedding
|
||||
FROM dual;
|
||||
|
||||
-- 5.2) Teste de geracao de texto (Llama 4, via OCI Generative AI)
|
||||
-- 5.2) Teste de geracao de texto (Llama 4, via OCI Generative AI). Mesma
|
||||
-- logica: a URL usa a regiao configurada em GENAI_REGION (SECAO 2).
|
||||
SELECT DBMS_VECTOR_CHAIN.UTL_TO_GENERATE_TEXT(
|
||||
TO_CLOB('Responda somente com a palavra: sucesso'),
|
||||
JSON('{
|
||||
"provider": "ocigenai",
|
||||
"credential_name": "OCI_CRED",
|
||||
"url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/chat",
|
||||
"url": "https://inference.generativeai.' || (SELECT param_value FROM TB_26AI_TECH_PARAMS WHERE param_name = 'GENAI_REGION') || '.oci.oraclecloud.com/20231130/actions/chat",
|
||||
"model": "meta.llama-4-maverick-17b-128e-instruct-fp8",
|
||||
"chatRequest": {
|
||||
"temperature": 0.1,
|
||||
@@ -373,27 +385,28 @@ SELECT DBMS_VECTOR_CHAIN.UTL_TO_GENERATE_TEXT(
|
||||
FROM dual;
|
||||
|
||||
-- 5.3) Teste de SELECT AI (perguntas em linguagem natural sobre as views/
|
||||
-- tabelas do schema). O bloco abaixo le EMBEDDING_COMPARTMENT da tabela
|
||||
-- de configuracao (SECAO 2). As tabelas/view referenciadas abaixo sao
|
||||
-- criadas na SECAO 6 - rode este bloco depois de criar V_26AI_TECH e
|
||||
-- TB_26AI_TECH_CMDB.
|
||||
-- tabelas do schema). O bloco abaixo le EMBEDDING_COMPARTMENT e
|
||||
-- GENAI_REGION da tabela de configuracao (SECAO 2). As tabelas/view
|
||||
-- referenciadas abaixo sao criadas na SECAO 6 - rode este bloco depois
|
||||
-- de criar V_26AI_TECH e TB_26AI_TECH_CMDB.
|
||||
--
|
||||
-- A regiao do OCI Generative AI abaixo (us-chicago-1) e fixa de
|
||||
-- proposito, igual nos testes 5.1/5.2 e na ACL da SECAO 1.6 - nao
|
||||
-- precisa (nem deve) ser trocada pelo valor de OCI_REGION da tabela de
|
||||
-- configuracao, ja que o servico so esta disponivel em algumas regioes
|
||||
-- especificas da OCI.
|
||||
-- A regiao do OCI Generative AI abaixo vem do parametro GENAI_REGION -
|
||||
-- nao precisa (nem deve) ser trocada pelo valor de OCI_REGION da tabela
|
||||
-- de configuracao (sao coisas diferentes de proposito), ja que o
|
||||
-- servico so esta disponivel em algumas regioes especificas da OCI.
|
||||
DECLARE
|
||||
v_compartment TB_26AI_TECH_PARAMS.PARAM_VALUE%TYPE;
|
||||
v_compartment TB_26AI_TECH_PARAMS.PARAM_VALUE%TYPE;
|
||||
v_genai_region TB_26AI_TECH_PARAMS.PARAM_VALUE%TYPE;
|
||||
BEGIN
|
||||
SELECT param_value INTO v_compartment FROM TB_26AI_TECH_PARAMS WHERE param_name = 'EMBEDDING_COMPARTMENT';
|
||||
SELECT param_value INTO v_compartment FROM TB_26AI_TECH_PARAMS WHERE param_name = 'EMBEDDING_COMPARTMENT';
|
||||
SELECT param_value INTO v_genai_region FROM TB_26AI_TECH_PARAMS WHERE param_name = 'GENAI_REGION';
|
||||
|
||||
DBMS_CLOUD_AI.CREATE_PROFILE(
|
||||
profile_name => 'OCI_CRED2',
|
||||
attributes => '{
|
||||
"provider": "oci",
|
||||
"credential_name": "OCI_CRED",
|
||||
"region": "us-chicago-1",
|
||||
"region": "' || v_genai_region || '",
|
||||
"model": "meta.llama-4-maverick-17b-128e-instruct-fp8",
|
||||
"temperature": 0,
|
||||
"comments": true,
|
||||
@@ -752,7 +765,7 @@ BEGIN
|
||||
dbms_vector_chain.utl_to_text( v_string ),
|
||||
json('{ "provider": "ocigenai",
|
||||
"credential_name": "' || p_credential || '",
|
||||
"url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText",
|
||||
"url": "https://inference.generativeai.' || (SELECT param_value FROM TB_26AI_TECH_PARAMS WHERE param_name = 'GENAI_REGION') || '.oci.oraclecloud.com/20231130/actions/embedText",
|
||||
"model": "cohere.embed-v4.0"
|
||||
}')
|
||||
)
|
||||
@@ -842,9 +855,12 @@ RETURN CLOB IS
|
||||
output CLOB;
|
||||
query_vec VECTOR;
|
||||
v_llm VARCHAR2(20) := 'LLAMA4'; -- [ LLAMA4 | OPENAI ]
|
||||
v_genai_region TB_26AI_TECH_PARAMS.PARAM_VALUE%TYPE;
|
||||
|
||||
BEGIN
|
||||
|
||||
SELECT param_value INTO v_genai_region FROM TB_26AI_TECH_PARAMS WHERE param_name = 'GENAI_REGION';
|
||||
|
||||
-- embedding da pergunta do usuario
|
||||
query_vec := to_vector( fnc_26ai_embed ( p_string => p_query, p_emb_type => 'COHERE' ) ) ;
|
||||
|
||||
@@ -870,7 +886,7 @@ BEGIN
|
||||
params_genai := '{
|
||||
"provider" : "ocigenai",
|
||||
"credential_name" : "' || p_credential || '",
|
||||
"url" : "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/chat",
|
||||
"url" : "https://inference.generativeai.' || v_genai_region || '.oci.oraclecloud.com/20231130/actions/chat",
|
||||
"model": "meta.llama-4-maverick-17b-128e-instruct-fp8"}';
|
||||
|
||||
ELSIF v_llm = 'OPENAI' THEN
|
||||
@@ -984,12 +1000,16 @@ RETURN CLOB AS
|
||||
Objetivo: funcao global de chamada ao LLM (Llama 4, via OCI Generative AI)
|
||||
usada pelo RAG e pela geracao de insights.
|
||||
*/
|
||||
v_gen_ai_endpoint VARCHAR2(500) := 'https://inference.generativeai.us-chicago-1.oci.oraclecloud.com';
|
||||
v_gen_ai_endpoint VARCHAR2(500);
|
||||
v_gen_ai_model VARCHAR2(500) := 'meta.llama-4-maverick-17b-128e-instruct-fp8';
|
||||
resp DBMS_CLOUD_TYPES.RESP;
|
||||
v_t0 PLS_INTEGER := DBMS_UTILITY.GET_TIME;
|
||||
v_result CLOB;
|
||||
BEGIN
|
||||
SELECT 'https://inference.generativeai.' || param_value || '.oci.oraclecloud.com'
|
||||
INTO v_gen_ai_endpoint
|
||||
FROM TB_26AI_TECH_PARAMS WHERE param_name = 'GENAI_REGION';
|
||||
|
||||
resp := dbms_cloud.send_request(
|
||||
credential_name => p_oci_cred,
|
||||
uri => v_gen_ai_endpoint || '/20231130/actions/chat',
|
||||
@@ -1090,8 +1110,11 @@ AS
|
||||
v_response CLOB;
|
||||
v_json CLOB;
|
||||
v_error CLOB;
|
||||
v_genai_region TB_26AI_TECH_PARAMS.PARAM_VALUE%TYPE;
|
||||
BEGIN
|
||||
|
||||
SELECT param_value INTO v_genai_region FROM TB_26AI_TECH_PARAMS WHERE param_name = 'GENAI_REGION';
|
||||
|
||||
IF p_source_type = 'VUL' THEN -- vulnerabilidades
|
||||
|
||||
v_pre_prompt :='Voce e um analista senior de dados e operacoes.
|
||||
@@ -1488,7 +1511,7 @@ Retorne um JSON valido (sem comentarios), espelhando o relatorio:
|
||||
( v_response ) ,
|
||||
json('{ "provider": "ocigenai",
|
||||
"credential_name": "' || p_oci_cred || '",
|
||||
"url": "https://inference.generativeai.us-chicago-1.oci.oraclecloud.com/20231130/actions/embedText",
|
||||
"url": "https://inference.generativeai.' || v_genai_region || '.oci.oraclecloud.com/20231130/actions/embedText",
|
||||
"model": "cohere.embed-v4.0"
|
||||
}')
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user