24 Bereitgestellten Agent aufrufen

Sie können die Endpunkt-URL des Agent über die Produktionsanwendung aufrufen.

Unabhängig von der programmgesteuerten Schnittstelle, die zum Aufrufen des Agent-Endpunkts verwendet wird, müssen Sie mit OCI authentifiziert werden und über die entsprechenden Berechtigungen verfügen. Bei Agent-Endpunkten muss der Aufrufer mindestens eine USE-Berechtigung für den Agent-Endpunkt haben.

Die Endpunkt-URI ist auf der Registerkarte "Details" der Agent-UI dokumentiert. Sie können diese Endpunkt-URI in Ihren Code kopieren, um den Agent aufzurufen.


Detailseite für einen Agent, der mit hervorgehobenem Endpunkt-URI-Feld geöffnet ist

Methoden zum Aufrufen von Endpunkt-URIs

Sie können die Agent-Endpunkt-URI über verschiedene Tools, SDKs und CLIs aufrufen.

Mit den folgenden Methoden können Sie den Endpunkt-URI in Oracle AI Data Platform Workbench-Agents aufrufen.

Mit OCI-CLI aufrufen

Das angegebene Beispiel zeigt, wie Sie die OCI-CLI verwenden und sich mit einem Sicherheitstoken authentifizieren. Ersetzen Sie <your-agent-flow-endpoint-uri> durch die Agent-Endpunkt-URI und <security_token> durch das OCI-Sicherheitstoken.
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>

Mit Python-Anforderungsbibliothek aufrufen

Mit dem OCI-Python-SDK können Sie einen Signaturgeber zur Authentifizierung bei OCI erstellen. Mit der Python-Anforderungsbibliothek kann eine Anforderung an die Agent-Endpunkt-URI gepostet und eine Antwort zurückgegeben werden. Das folgende Beispiel zeigt, wie Sie Ihren Benutzer-Principal über die OCI-Konfigurations- und Private-Key-Dateien verwenden können:
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
Sie können die Agent-Endpunkt-URI aufrufen, indem Sie die MyRawJsonRPCClient-Klasse instanziieren und einen OCI-Profilwert (in der OCI-Konfigurationsdatei gefunden), den Agent-Endpunkt-URI (chat_url) und einen sessionKey angeben. Sie können beliebige sessionKey angeben. sessionKey ist die eindeutige ID der Benutzersession mit dem Agent. Wenn Sie denselben sessionKey weiterhin verwenden, werden Benutzernachrichten und Agent-Antworten an denselben Schutz angehängt.
client = MyRawJsonRpcClient(chat_url="<your-agent-flow-endpoint-uri>",
   oci_profile = "DEFAULT",
   sessionKey= “<your-session-key>”,
   use_security_token = False )
Sie können auch eine Benutzernachricht angeben und die Nachricht mit dem Client an den Agent-Endpunkt-URI senden:
user_input = f"Hello, tell me a good dad joke."
r = client.send(input = user_input)
response_json = r.json()

Über APEX

Sie können das Codebeispiel verwenden, das im AI Data Platform Workbench Samples Github-Repository verfügbar ist. Das Beispiel führt Sie durch den Prozess zum Aufrufen eines Agent-Deployment-Endpunkts aus einer APEX-Anwendung.

Durch Streamlit

Sie können das Codebeispiel verwenden, das im AI Data Platform Workbench Samples Github-Repository verfügbar ist. Das Beispiel führt Sie durch den Prozess zum Aufrufen eines Agent-Deployment-Endpunkts aus einer Streamlit-Anwendung.

Best Practices – Asynchrone und nicht-asynchrone Antworten

Wir empfehlen, dass Sie Ihren Clientcode unter Annahme asynchroner Antworten schreiben. Beispiel:

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