Dela via


Så här använder du Azure AI Agent Service med OpenAPI-angivna verktyg

Nu kan du ansluta din Azure AI-agent till ett externt API med ett OpenAPI 3.0-angivet verktyg, vilket möjliggör skalbar samverkan med olika program. Aktivera dina anpassade verktyg för att autentisera åtkomst och anslutningar med hanterade identiteter (Microsoft Entra-ID) för ökad säkerhet, vilket gör det idealiskt för integrering med befintlig infrastruktur eller webbtjänster.

OpenAPI-angivet verktyg förbättrar funktionens samtalsupplevelse genom att tillhandahålla standardiserade, automatiserade och skalbara API-integreringar som förbättrar agentens funktioner och effektivitet. OpenAPI-specifikationer tillhandahåller en formell standard för att beskriva HTTP-API:er. På så sätt kan användarna förstå hur ett API fungerar, hur en sekvens med API:er fungerar tillsammans, generera klientkod, skapa tester, tillämpa designstandarder med mera. För närvarande stöder vi tre autentiseringstyper med de OpenAPI 3.0-angivna verktygen: anonymous, API key, managed identity.

Förutsättningar

  1. Kontrollera att du har slutfört förutsättningarna och installationsstegen i snabbstarten.

  2. Kontrollera OpenAPI-specifikationen för följande krav:

    1. operationId får endast innehålla bokstäver - och _. Du kan ändra den för att uppfylla kravet. Vi rekommenderar att du använder beskrivande namn för att hjälpa modeller att effektivt bestämma vilken funktion som ska användas.

Autentisera med API-nyckel

  1. Kontrollera att OpenAPI-specifikationen stöder API-nycklar: den har securitySchemes avsnittet och har ett schema av typen "apiKey". Ett exempel är:

        "securitySchemes": {
           "apiKeyHeader": {
                     "type": "apiKey",
                     "name": "x-api-key",
                     "in": "header"
                 }
         }
    

    Om säkerhetsschemana innehåller flera scheman rekommenderar vi att du bara behåller ett av dem.

  2. Ta bort alla parametrar i OpenAPI-specifikationen som behöver API-nyckel, eftersom API-nyckeln lagras och skickas via en anslutning, enligt beskrivningen senare i den här artikeln.

  3. Skapa en custom keys anslutning för att lagra din API-nyckel.

    1. Gå till Azure AI Foundry-portalen och välj AI-projektet. Klicka på Anslutna resurser. En skärmbild av inställningsknappen för ett AI-projekt.

    2. Välj + ny anslutning på inställningssidan.

      Kommentar

      Om du återskapar API-nyckeln vid ett senare tillfälle måste du uppdatera anslutningen med den nya nyckeln.

      En skärmbild av skärmen anslutningar för AI-projektet.

    3. Välj anpassade nycklar i andra resurstyper.

      En skärmbild av valet av anpassade nycklar för AI-projektet.

    4. Ange följande information:

      • nyckel: name i ditt säkerhetsschema. I det här exemplet bör det vara x-api-key
               "securitySchemes": {
                  "apiKeyHeader": {
                            "type": "apiKey",
                            "name": "x-api-key",
                            "in": "header"
                        }
                }
        
      • värde: YOUR_API_KEY
      • Anslutningsnamn: YOUR_CONNECTION_NAME (Du använder det här anslutningsnamnet i exempelkoden nedan.)
      • Åtkomst: du kan välja antingen endast det här projektet eller delas till alla projekt. Se bara till att det projekt som du angav anslutningssträng för i exempelkoden nedan har åtkomst till den här anslutningen.

Steg 1: Skapa en agent med verktyget OpenAPI Spec

Skapa ett klientobjekt som innehåller anslutningssträng för att ansluta till ditt AI-projekt och andra resurser.

import os
import jsonref
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import OpenApiTool, OpenApiAnonymousAuthDetails


# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customer needs to login to Azure subscription via Azure CLI and set the environment variables

project_client = AIProjectClient.from_connection_string(
    credential=DefaultAzureCredential(),
    conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)

Steg 2: Aktivera verktyget OpenAPI Spec

Du kanske vill lagra OpenAPI-specifikationen i en annan fil och importera innehållet för att initiera verktyget. Observera att exempelkoden använder anonymous som autentiseringstyp.

with open('./weather_openapi.json', 'r') as f:
    openapi_spec = jsonref.loads(f.read())

# Create Auth object for the OpenApiTool (note that connection or managed identity auth setup requires additional setup in Azure)
auth = OpenApiAnonymousAuthDetails()

# Initialize agent OpenAPI tool using the read in OpenAPI spec
openapi = OpenApiTool(name="get_weather", spec=openapi_spec, description="Retrieve weather information for a location", auth=auth)

Om du vill använda anslutningen, som lagrar API-nyckeln, för autentisering ersätter du raden med

auth = OpenApiConnectionAuthDetails(security_scheme=OpenApiConnectionSecurityScheme(connection_id="your_connection_id"))

Ditt anslutnings-ID ser ut som /subscriptions/{subscription ID}/resourceGroups/{resource group name}/providers/Microsoft.MachineLearningServices/workspaces/{project name}/connections/{connection name}.

Om du vill använda hanterad identitet för autentisering ersätter du raden med

auth = OpenApiManagedAuthDetails(security_scheme=OpenApiManagedSecurityScheme(audience="https://your_identity_scope.com"))

Ett exempel på målgruppen skulle vara https://cognitiveservices.azure.com/.

Steg 3: Skapa en tråd

# Create agent with OpenAPI tool and process assistant run
with project_client:
    agent = project_client.agents.create_agent(
        model="gpt-4o-mini",
        name="my-assistant",
        instructions="You are a helpful assistant",
        tools=openapi.definitions
    )
    print(f"Created agent, ID: {agent.id}")

    # Create thread for communication
    thread = project_client.agents.create_thread()
    print(f"Created thread, ID: {thread.id}")

Steg 4: Skapa en körning och kontrollera utdata

Skapa en körning och observera att modellen använder verktyget OpenAPI Spec för att ge ett svar på användarens fråga.

# Create message to thread
    message = project_client.agents.create_message(
        thread_id=thread.id,
        role="user",
        content="What's the weather in Seattle?",
    )
    print(f"Created message, ID: {message.id}")

    # Create and process agent run in thread with tools
    run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
    print(f"Run finished with status: {run.status}")

    if run.status == "failed":
        print(f"Run failed: {run.last_error}")

    # Delete the assistant when done
    project_client.agents.delete_agent(agent.id)
    print("Deleted agent")

    # Fetch and log all messages
    messages = project_client.agents.list_messages(thread_id=thread.id)
    print(f"Messages: {messages}")