共用方式為


Azure AI 代理程式函式呼叫

Azure AI 代理程式支援函式呼叫,其可讓您將函式的結構描述給小幫手,然後傳回需要呼叫的函式及其自變數。

注意

執行會在建立十分鐘後到期。 請務必在到期前提交您的工具輸出。

定義代理程式呼叫的函式

首先,定義函式以供代理程式呼叫。 當您建立函式供代理程式呼叫時,您會使用 docstring 中的任何必要參數來描述其結構。 將所有函式定義包含在單一檔案中, user_functions.py 然後您可以匯入主要腳本。

import json
import datetime
from typing import Any, Callable, Set, Dict, List, Optional

def fetch_weather(location: str) -> str:
    """
    Fetches the weather information for the specified location.

    :param location (str): The location to fetch weather for.
    :return: Weather information as a JSON string.
    :rtype: str
    """
    # In a real-world scenario, you'd integrate with a weather API.
    # Here, we'll mock the response.
    mock_weather_data = {"New York": "Sunny, 25°C", "London": "Cloudy, 18°C", "Tokyo": "Rainy, 22°C"}
    weather = mock_weather_data.get(location, "Weather data not available for this location.")
    weather_json = json.dumps({"weather": weather})
    return weather_json

    # Statically defined user functions for fast reference
user_functions: Set[Callable[..., Any]] = {
    fetch_weather,
}

如需完整的一系列函式定義範例,請參閱 GitHub 上的 Python 檔案。 下列範例稱為 user_functions.py 此檔案。

建立用戶端

在下列範例中,我們會建立客戶端並定義 toolset ,以用來處理 中所 user_functions定義的函式。

toolset:使用工具組參數時,您不僅提供函式定義和描述,也提供其實作。 SDK 會在create_and_run_process或串流內執行這些函式。 這些函式會根據其定義叫用。

import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import FunctionTool, ToolSet
from user_functions import user_functions # user functions which can be found in a user_functions.py file.

# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# It should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customers need 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"],
)

# Initialize agent toolset with user functions
functions = FunctionTool(user_functions)
toolset = ToolSet()
toolset.add(functions)

提交函式輸出


# Create agent with toolset and process a run

agent = project_client.agents.create_agent(
    model="gpt-4o-mini", name="my-agent", instructions="You are a helpful agent", toolset=toolset
)
print(f"Created agent, ID: {agent.id}")

建立執行緒

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

# Create message to thread
message = project_client.agents.create_message(
    thread_id=thread.id,
    role="user",
    content="Hello, send an email with the datetime and weather information in New York?",
)
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 agent 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}")

另請參閱