24 Chamar um Agente Implantado

Você pode chamar o URL do ponto final do seu agente no seu aplicativo de produção.

Independentemente da interface programática usada para chamar o ponto final do agente, você deve ser autenticado com o OCI e ter as permissões relevantes. No caso de pontos finais do agente, o chamador precisa ter pelo menos a permissão USE no ponto final do agente.

O URI do ponto final é documentado na guia de detalhes da IU do agente. Você pode copiar esse URI de ponto final em seu código para chamar o agente.


Página de detalhes de um agente aberto com o campo URI do Ponto Final destacado

Para chamar um agente implantado como parte de um job de workflow, consulte Criar uma Tarefa de Agente.

Métodos para Chamar URIs de Ponto Final

Você pode chamar o URI do ponto final do agente por meio de diferentes ferramentas, SDKs e CLIs.

Os métodos a seguir permitem chamar o URI do ponto final nos agentes do Oracle AI Data Platform.

Chamar com a CLI do OCI

O exemplo fornecido demonstra como você usa a CLI do OCI e se autentica com um token de segurança. Substitua <your-agent-flow-endpoint-uri> pelo URI do ponto final do agente e <security_token> pelo seu token de segurança do OCI.
oci raw-request
--http-method POST
--target-uri <your-agent-flow-endpoint-uri>
--request-body '{"query":"Tell me about the Ryder Cup in 1985"}'
--auth <security_token>

Chamar com a Biblioteca de Solicitações Python

Você pode usar o OCI Python SDK para criar um signatário para autenticação com o OCI. A biblioteca de solicitações Python pode ser usada para postar uma solicitação no URI do ponto final do agente e retornar uma resposta. O exemplo a seguir demonstra como você pode usar seu principal de usuário por meio dos arquivos de configuração e chave privada do OCI:
import oci import requests import json import uuid from contextlib import closing from requests import Request, Response
class AuthHelper: """ AuthHelper allows creating an OCI signer with either API key or security_token (which are short term sessions) """ def init(self, oci_profile: str, use_security_token:bool = True): config = oci.config.from_file(file_location="/Volumes/jr/default/misc/config",profile_name=oci_profile) if use_security_token: with open(config["security_token_file"], 'r') as f: token = f.read() private_key = oci.signer.load_private_key_from_file(config["key_file"])
 self.signer = oci.auth.signers.SecurityTokenSigner(token, private_key) else: self.signer = oci.signer.Signer( tenancy=config["tenancy"], user=config["user"], fingerprint=config["fingerprint"], private_key_file_location=config["key_file"], #pass_phrase=config.get("pass_phrase"), #private_key_content=config.get("key_content") )
@property
def Signer(self):
    return self.signer
 
class MyRawJsonRpcClient: """ Simple class using requests lib to post JSON to chat endpoint using OCI signing """ def init(self, chat_url:str, oci_profile: str, sessionKey:str, use_security_token:bool = True): self.authhelper = AuthHelper(oci_profile=oci_profile, use_security_token=use_security_token) self.authsigner = self.authhelper.Signer self.chat_url = chat_url self.sessionKey = sessionKey
def send(self, input:str) -> Response:
    body = {
        "isStreamEnabled" : False,
        "sessionKey" : self.sessionKey,
        "trace" : False,
        "input" :[{
            "role":"User",
            "content":[{
                "type" : "INPUT_TEXT",
                "text" : input                   
            }]
        }]
    }

    response:Request = requests.post(
        url =self.chat_url,
        params = None,
        auth = self.authsigner,
        json=body,
        headers={}
    )
    return response
Você pode chamar o URI do ponto final do agente instanciando a classe MyRawJsonRPCClient e fornecendo um valor de perfil do OCI (encontrado no arquivo de configuração do OCI), o URI do ponto final do agente (chat_url) e uma sessionKey. Você pode fornecer qualquer sessionKey arbitrário. sessionKey é o identificador exclusivo da sessão do usuário com o agente. Se você continuar reutilizando o mesmo sessionKey, as mensagens do usuário e as respostas do agente serão anexadas à mesma conservação.
client = MyRawJsonRpcClient(chat_url="<your-agent-flow-endpoint-uri>",
   oci_profile = "DEFAULT",
   sessionKey= “<your-session-key>”,
   use_security_token = False )
Você também pode fornecer uma mensagem do usuário e usar o cliente para enviar a mensagem ao URI do ponto final do agente:
user_input = f"Hello, tell me a good dad joke."
r = client.send(input = user_input)
response_json = r.json()

Por meio do APEX

Você pode usar a amostra de código disponível no repositório Github de Amostras da AI Data Platform. A amostra orienta você pelo processo de chamar um ponto final de implantação do agente em um aplicativo APEX.

Por Streamlit

Você pode usar a amostra de código disponível no repositório Github de Amostras da AI Data Platform. A amostra orienta você pelo processo de chamar um ponto final de implantação do agente em um aplicativo Streamlit.

Melhores Práticas - Respostas Assíncronas e Não Assíncronas

Recomendamos que você escreva seu código de cliente assumindo respostas assíncronas. Por exemplo:

import httpx 
 
async def fetch_data(): 
    async with httpx.AsyncClient() as client: 
        response = await client.get(URL) 
        return response.json()