Para usar o SELECT AI do Oracle AI Database você precisa criar uma CREDENCIAL que acessa um provedor de modelos de IA. Este post descreve as etapas de criação de uma credencial que acessa o serviço OCI Generative AI.

Como é possível chamar a API de diversos provedores de IA através do Oracle AI Database, você deverá seguir o procedimento específico do provedor suportado que deseja usar. Isso está documentando aqui.

Uma das opções de provedor de IA é o serviço OCI Generative AI. Ele entrega endpoints de inferência para modelos de LLM e Embedding. Para usar suas APIs será necessário criar uma Credencial primeiro.

Quais informações preciso para criar a credencial?

Para criar a credential para uso no SELECT AI você precisará das seguintes informações:

user_ocid = Identificador único do usuário dentro do Tenancy do OCI que ele faz parte.

tenancy_ocid = Identificar único do Tenancy dentro da nuvem OCI.

private_key = Especifica a chave privada gerada. Chaves privadas geradas com uma frase secreta (passphrase) não são suportadas. É necessário gerar a chave privada sem uma frase secreta.

Fingerprint = Especifica uma impressão digital (fingerprint). Depois que a chave pública gerada é carregada na conta do usuário, a impressão digital é exibida no Console. Use a impressão digital exibida nesse argumento.

Obtendo os dados necessários

1 – Conecte-se ao console do OCI com o usuário desejado e clique conforme imagem.

2 – Acesse as configurações do usuário

Acesse a aba Tokens and Keys

Clique no botão para adicionar uma API Key

Agora faça sua opção sobre como adicionar a chave. Neste exemplo, estamos criando uma chave privada e pública totalmente nova.

Importante: Faça o download da chave privada e pública antes de clicar em adicionar a API KEY. Essa será sua única change para fazer isso. Se não fizer agora, será necessário criar outra API Key.

Ao clicar em adicionar API Key você verá a seguinte tela.

Aqui tem praticamente tudo que precisa para criar sua credencial do SELECT AI, exceto a chave-privada (que está dentro do arquivo que você baixou). Existe um botão de cópia na tela. Leve isso para um editor de texto para trabalharmos depois.

Ao ver o conteúdo do arquivo da chave privada, você terá algo como:

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCmQxOElPdGFWps
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/T1za4xeOCUIZuH+pLWC2gWs2QKBgQDFI3e0H1OmOtVoIjibY5RtoTR3tcxMbYjK
VCpjnQke0x5BJqmyIgVVgyQ=
-----END PRIVATE KEY-----

Apenas o contéudo em vermelho será usado com private_key. Copie ele para seu editor de texto.

Criando sua Credencial para SELECT AI

Escolha um usuário do banco de dados que será o dono da credencial, por exemplo, usuário MYAPP.

Etapa 1: Conectado ao banco com um usuário administrador (ADMIN, no caso do Autonomous Database), conceda algumas permissões ao usuário escolhido. Neste exemplo, estamos criando o usuário MYAPP.

-- Crição do usuário (se não existir)
CREATE USER MYAPP IDENTIFIED BY "TheAppUser#26ai";
GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO MYAPP;

-- Se estiver no Autonomous DB e quiser dar acesso ao SQL Developer Web
-- REST ENABLE
BEGIN
    ORDS_ADMIN.ENABLE_SCHEMA(
        p_enabled => TRUE,
        p_schema => 'MYAPP',
        p_url_mapping_type => 'BASE_PATH',
        p_url_mapping_pattern => 'myapp',
        p_auto_rest_auth=> FALSE
    );
    -- ENABLE DATA SHARING
    C##ADP$SERVICE.DBMS_SHARE.ENABLE_SCHEMA(
            SCHEMA_NAME => 'MYAPP',
            ENABLED => TRUE
    );
    commit;
END;
/

-- Permissão para criar credencial
GRANT EXECUTE ON dbms_cloud TO MYAPP;
GRANT CREATE CREDENTIAL TO MYAPP;

Etapa 2: Copie o código abaixo para um editor de texto, e ajuste os parametros necessários: user_ocid, tenancy_ocid, private_key e fingerprint.

Conecte-se ao banco com o usuário MYAPP e execute o código que você prepararou. A credencial criada se chama OCI_CRED_CLOUD.

DECLARE
jo JSON_OBJECT_T;

BEGIN
jo := JSON_OBJECT_T();
jo.put('user_ocid', 'ocid1.user.oc1..xxxxxxxx');
jo.put('tenancy_ocid', 'ocid1.tenancy.oc1..xxxxxxxx');
jo.put('private_key', q'~
xxxxxxxxxxxxxxxxxxxxx
xxx-private-key-xxxxx
xxxxxxxxx==
~');
jo.put('fingerprint', 'xxxx-finger-print-xxxx');

DBMS_CLOUD.CREATE_CREDENTIAL(
          credential_name => 'OCI_CRED_CLOUD',
          user_ocid => jo.get_string('user_ocid'),
          tenancy_ocid => jo.get_string('tenancy_ocid'),
          private_key => jo.get_string('private_key'),
          fingerprint => jo.get_string('fingerprint')
          );

END;
/

Atenção: Observe que a chave privada fica exatamente entre os caracteres ‘˜’ (inicio e fim), em linhas separadas. Cuidado ao preparar o comando, as quebras de linha são importantes. Veja exemplo abaixo:

q’~
xxxxxxxxxxxxxxxxxxxxx
xxx-private-key-xxxxx
xxxxxxxxx==

~’

Pronto. A credencial foi criada.

Ela pode ser usada para chamar diversas APIs do OCI, não apenas aquelas relacionadas ao SELECT AI. Por exemplo, é possível acessar um Bucket do OCI Object Storage para ler ou gravar objetos por dentro do banco de dados.

Para verificar as credenciais criadas execute a pesquisa abaixo.

SELECT credential_name, username, comments
FROM all_credentials;

No contexto do SELECT AI, você usará essa credencial durante a criação dos perfis de IA.

Importante: A credencial permite a autenticação durante uso das APIs do OCI, contudo, para uso efetivo do OCI Generative AI é necessário uma autorização que é feita por políticas do OCI IAM . A documentação está aqui.