24 Appel d'un agent déployé
Vous pouvez appeler l'URL endpoint de l'agent à partir de l'application de production.
Quelle que soit l'interface de programmation utilisée pour appeler l'adresse d'agent, vous devez être authentifié auprès d'OCI et disposer des droits d'accès appropriés. Dans le cas d'adresses d'agent, l'appelant doit disposer au moins de l'autorisation USE sur l'adresse d'agent.
L'URI endpoint est documenté dans l'onglet de détails de l'interface utilisateur de l'agent. Vous pouvez copier cet URI endpoint dans votre code pour appeler l'agent.

Méthodes d'appel des URI d'adresse
Vous pouvez appeler l'URI endpoint de l'agent via différents outils, kits SDK et interfaces de ligne de commande.
Les méthodes suivantes vous permettent d'appeler votre URI endpoint dans les agents Oracle AI Data Platform Workbench.
Appeler avec l'interface de ligne de commande 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>Appeler avec la bibliothèque de demandes Python
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
sessionKey arbitraire. sessionKey est l'identificateur unique de la session utilisateur avec l'agent. Si vous continuez à réutiliser le même fichier sessionKey, les messages utilisateur et les réponses de l'agent sont ajoutés à la même conservation. client = MyRawJsonRpcClient(chat_url="<your-agent-flow-endpoint-uri>",
oci_profile = "DEFAULT",
sessionKey= “<your-session-key>”,
use_security_token = False )Vous pouvez également fournir un message utilisateur et utiliser le client pour envoyer le message à l'URI endpoint de l'agent : user_input = f"Hello, tell me a good dad joke."
r = client.send(input = user_input)
response_json = r.json()via APEX
Vous pouvez utiliser l'exemple de code disponible dans le référentiel Github d'exemples AI Data Platform Workbench. Cet exemple vous guide tout au long du processus d'appel d'une adresse de déploiement d'agent à partir d'une application APEX.
Par Streamlit
Vous pouvez utiliser l'exemple de code disponible dans le référentiel Github d'exemples AI Data Platform Workbench. L'exemple vous guide tout au long du processus d'appel d'une adresse de déploiement d'agent à partir d'une application Streamlit.
Meilleures pratiques - Réponses asynchrones et non asynchrones
Nous vous recommandons d'écrire votre code client en supposant des réponses asynchrones. Exemple :
import httpx
async def fetch_data():
async with httpx.AsyncClient() as client:
response = await client.get(URL)
return response.json()