Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Microsoft Agent Framework offre supporto per diversi tipi di agenti per soddisfare diversi casi d'uso e requisiti.
Tutti gli agenti sono derivati da una classe base comune, AIAgent, che fornisce un'interfaccia coerente per tutti i tipi di agente. In questo modo è possibile creare funzionalità comuni, indipendenti dall'agente e di livello superiore, ad esempio orchestrazioni multi-agente.
Importante
Se si usa Microsoft Agent Framework per creare applicazioni che operano con server o agenti di terze parti, è possibile farlo a proprio rischio. È consigliabile esaminare tutti i dati condivisi con server o agenti di terze parti e riconoscere le procedure di terze parti per la conservazione e la posizione dei dati. È responsabilità dell'utente gestire se i dati verranno trasmessi al di fuori dei limiti geografici e di conformità di Azure dell'organizzazione e di eventuali implicazioni correlate.
Agenti semplici basati su servizi di inferenza
Agent Framework semplifica la creazione di agenti semplici basati su molti servizi di inferenza diversi.
Qualsiasi servizio di inferenza che fornisce un'implementazione Microsoft.Extensions.AI.IChatClient può essere usato per compilare questi agenti.
Microsoft.Agents.AI.ChatClientAgent è la classe agente usata per fornire un agente per qualsiasi IChatClient implementazione.
Questi agenti supportano un'ampia gamma di funzionalità integrate:
- Chiamata di funzione.
- Conversazioni a più turni con gestione della cronologia delle chat locali o gestione della cronologia delle chat fornita dal servizio.
- Strumenti forniti dal servizio personalizzato, ad esempio MCP, Esecuzione del codice.
- Output strutturato.
Per creare uno di questi agenti, è sufficiente costruire un ChatClientAgent oggetto usando l'implementazione IChatClient di propria scelta.
using Microsoft.Agents.AI;
var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");
Per semplificare ulteriormente la creazione di questi agenti, Agent Framework offre helper per molti servizi più diffusi. Per altre informazioni, vedere la documentazione per ogni servizio.
| Servizio di inferenza sottostante | Description | Supporto per l'archiviazione della cronologia delle chat del servizio | Supporto per l'archiviazione della cronologia chat personalizzata |
|---|---|---|---|
| Agente di Azure AI Foundry | Agente che usa il servizio Azure AI Foundry Agents come back-end. | Yes | NO |
| Modelli di ChatCompletion di Azure AI Foundry | Agente che usa uno dei modelli distribuiti nel servizio Azure AI Foundry come back-end tramite ChatCompletion. | NO | Yes |
| Risposte ai modelli di Foundry per intelligenza artificiale di Azure | Agente che utilizza uno dei modelli distribuiti nel servizio Azure AI Foundry come back-end tramite Responses. | NO | Yes |
| Completamento Chat di Azure OpenAI | Agente che usa il servizio ChatCompletion OpenAI di Azure. | NO | Yes |
| Risposte OpenAI di Azure | Agente che usa il servizio Risposte OpenAI di Azure. | Yes | Yes |
| OpenAI ChatCompletion | Agente che usa il servizio OpenAI ChatCompletion. | NO | Yes |
| Risposte OpenAI | Agente che usa il servizio Risposte OpenAI. | Yes | Yes |
| Assistenti OpenAI | Agente che usa il servizio Assistenti OpenAI. | Yes | NO |
Qualsiasi altro IChatClient |
È anche possibile usare qualsiasi altra Microsoft.Extensions.AI.IChatClient implementazione per creare un agente. |
Variabile | Variabile |
Agenti personalizzati complessi
È anche possibile creare agenti completamente personalizzati che non fungono solo da wrapper intorno a un oggetto IChatClient.
Il framework dell'agente fornisce il tipo base AIAgent.
Questo tipo di base è l'astrazione principale per tutti gli agenti, che, se sottoclassati, consente il controllo completo sul comportamento e sulle funzionalità dell'agente.
Per altre informazioni, vedere la documentazione relativa agli agenti personalizzati.
Proxy per gli agenti remoti
Agent Framework offre implementazioni predefinite AIAgent per protocolli comuni per agenti ospitati dai servizi, ad esempio A2A. In questo modo è possibile connettersi facilmente e usare agenti remoti dall'applicazione.
Per altre informazioni, vedere la documentazione per ogni tipo di agente:
| Protocollo | Description |
|---|---|
| A2A | Agente che funge da proxy per un agente remoto tramite il protocollo A2A. |
Informazioni di riferimento sulle opzioni di Azure e OpenAI SDK
Quando si usano i servizi Azure AI Foundry, Azure OpenAI o OpenAI, sono disponibili diverse opzioni SDK per connettersi a questi servizi. In alcuni casi, è possibile usare più SDK per connettersi allo stesso servizio o per usare lo stesso SDK per connettersi a servizi diversi. Di seguito è riportato un elenco delle diverse opzioni disponibili con l'URL da usare per la connessione a ogni url. Assicurarsi di sostituire <resource> e <project> con i nomi effettivi di risorse e progetti.
| Servizio IA | SDK | Nuget | URL |
|---|---|---|---|
| Modelli di Azure AI Foundry | Azure OpenAI SDK 2 | Azure.AI.OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Modelli di Azure AI Foundry | OpenAI SDK 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Modelli di Azure AI Foundry | Azure AI Inference SDK 2 | Azure.AI.Inference | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Agenti di Azure AI Foundry | Azure AI Persistent Agents SDK | Azure.AI.Agents.Persistent | https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><> |
| Azure OpenAI1 | Azure OpenAI SDK 2 | Azure.AI.OpenAI | <https:// resource.openai.azure.com/> |
| Azure OpenAI1 | OpenAI SDK | OpenAI | <https:// resource.openai.azure.com/openai/v1/> |
| OpenAI | OpenAI SDK | OpenAI | Nessun URL necessario |
- Aggiornamento da Azure OpenAI a Azure AI Foundry
- È consigliabile usare OpenAI SDK.
- Sebbene sia consigliabile usare OpenAI SDK per accedere ai modelli di Azure AI Foundry, i modelli di Azure AI Foundry supportano modelli di molti fornitori diversi, non solo OpenAI. Tutti questi modelli sono supportati tramite OpenAI SDK.
Uso di OpenAI SDK
Come illustrato nella tabella precedente, è possibile usare OpenAI SDK per connettersi a più servizi.
A seconda del servizio a cui ci si connette, potrebbe essere necessario impostare un URL personalizzato durante la creazione di OpenAIClient.
È anche possibile usare meccanismi di autenticazione diversi a seconda del servizio.
Se è necessario un URL personalizzato (vedere la tabella precedente), è possibile impostarlo tramite OpenAIClientOptions.
var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };
È possibile usare una chiave API durante la creazione del client.
OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);
Quando si usa un servizio di Azure, è anche possibile usare le credenziali di Azure anziché una chiave API.
OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new AzureCliCredential(), "https://ai.azure.com/.default"), clientOptions)
Dopo aver creato OpenAIClient, è possibile ottenere un sottoclient per il servizio specifico che si desidera utilizzare e quindi crearci un AIAgent.
AIAgent agent = client
.GetChatClient(model)
.CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Uso di Azure OpenAI SDK
Questo SDK può essere usato per connettersi ai servizi Azure OpenAI e Azure AI Foundry Models.
In entrambi i casi, sarà necessario specificare l'URL del servizio corretto durante la creazione di AzureOpenAIClient.
Vedere la tabella precedente per l'URL corretto da usare.
AIAgent agent = new AzureOpenAIClient(
new Uri(serviceUrl),
new AzureCliCredential())
.GetChatClient(deploymentName)
.CreateAIAgent(instructions: "You are good at telling jokes.", name: "Joker");
Uso di Azure AI Persistent Agents SDK
Questo SDK è supportato solo con il servizio Azure AI Foundry Agents. Vedere la tabella precedente per l'URL corretto da usare.
var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new AzureCliCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
model: deploymentName,
name: "Joker",
instructions: "You are good at telling jokes.");
Agenti semplici basati su servizi di inferenza
Agent Framework semplifica la creazione di agenti semplici basati su molti servizi di inferenza diversi. Qualsiasi servizio di inferenza che fornisce un'implementazione client di chat può essere usato per sviluppare questi agenti.
Questi agenti supportano un'ampia gamma di funzionalità integrate:
- Chiamata di funzione
- Conversazioni a più turni con la gestione della cronologia delle chat locali o la gestione della cronologia delle chat fornita dal servizio
- Strumenti forniti dal servizio personalizzato (ad esempio, MCP, esecuzione del codice)
- Output strutturato
- Risposte in streaming
Per creare uno di questi agenti, è sufficiente costruire un ChatAgent usando l'implementazione client di chat di propria scelta.
from agent_framework import ChatAgent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with (
DefaultAzureCredential() as credential,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
instructions="You are a helpful assistant"
) as agent
):
response = await agent.run("Hello!")
In alternativa, è possibile usare il metodo pratico nel client di chat:
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with DefaultAzureCredential() as credential:
agent = AzureAIAgentClient(async_credential=credential).create_agent(
instructions="You are a helpful assistant"
)
Per esempi dettagliati, vedere le sezioni della documentazione specifica dell'agente di seguito.
Tipi di agente supportati
| Servizio di inferenza sottostante | Description | Supportata l'archiviazione della cronologia della chat del servizio | Archiviazione cronologia chat personalizzata supportata |
|---|---|---|---|
| Agente di intelligenza artificiale di Azure | Agente che usa il servizio Azure AI Agents come back-end. | Yes | NO |
| Completamento della chat OpenAI di Azure | Un agente che utilizza il servizio di completamento della chat OpenAI di Azure. | NO | Yes |
| Risposte OpenAI di Azure | Agente che usa il servizio Risposte OpenAI di Azure. | Yes | Yes |
| Completamento della chat OpenAI | Agente che usa il servizio OpenAI Chat Completion. | NO | Yes |
| Risposte OpenAI | Agente che usa il servizio Risposte OpenAI. | Yes | Yes |
| Assistenti OpenAI | Agente che usa il servizio Assistenti OpenAI. | Yes | NO |
| Qualsiasi altro ChatClient | È anche possibile usare qualsiasi altra implementazione client di chat per creare un agente. | Variabile | Variabile |
Strumenti per le funzioni
È possibile fornire strumenti di funzione agli agenti per funzionalità avanzate:
from typing import Annotated
from pydantic import Field
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureAIAgentClient
def get_weather(location: Annotated[str, Field(description="The location to get the weather for.")]) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny with a high of 25°C."
async with (
DefaultAzureCredential() as credential,
AzureAIAgentClient(async_credential=credential).create_agent(
instructions="You are a helpful weather assistant.",
tools=get_weather
) as agent
):
response = await agent.run("What's the weather in Seattle?")
Per esempi completi con gli strumenti per le funzioni, vedere:
- Intelligenza artificiale di Azure con strumenti per le funzioni
- Azure OpenAI con strumenti per le funzioni
- OpenAI con strumenti per le funzioni
Risposte in streaming
Gli agenti supportano risposte regolari e in streaming:
# Regular response (wait for complete result)
response = await agent.run("What's the weather like in Seattle?")
print(response.text)
# Streaming response (get results as they are generated)
async for chunk in agent.run_stream("What's the weather like in Portland?"):
if chunk.text:
print(chunk.text, end="", flush=True)
Per esempi di streaming, vedere:
- Esempi di streaming di intelligenza artificiale di Azure
- Esempi di streaming OpenAI di Azure
- Esempi di streaming OpenAI
Strumenti dell'interprete del codice
Gli agenti di Intelligenza artificiale di Azure supportano gli strumenti dell'interprete di codice ospitato per l'esecuzione del codice Python:
from agent_framework import ChatAgent, HostedCodeInterpreterTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with (
DefaultAzureCredential() as credential,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
instructions="You are a helpful assistant that can execute Python code.",
tools=HostedCodeInterpreterTool()
) as agent
):
response = await agent.run("Calculate the factorial of 100 using Python")
Per esempi di interpreti di codice, vedere:
- Intelligenza artificiale di Azure con interprete del codice
- Assistenti OpenAI di Azure con interprete di codice
- Assistenti OpenAI con interprete di codice
Agenti personalizzati
È anche possibile creare agenti completamente personalizzati che non sono solo wrapper intorno a un client di chat.
Agent Framework fornisce il protocollo e AgentProtocol la BaseAgent classe di base, che, se implementata o sottoclassata, consente di controllare il comportamento e le funzionalità dell'agente.
from agent_framework import BaseAgent, AgentRunResponse, AgentRunResponseUpdate, AgentThread, ChatMessage
from collections.abc import AsyncIterable
class CustomAgent(BaseAgent):
async def run(
self,
messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
*,
thread: AgentThread | None = None,
**kwargs: Any,
) -> AgentRunResponse:
# Custom agent implementation
pass
def run_stream(
self,
messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
*,
thread: AgentThread | None = None,
**kwargs: Any,
) -> AsyncIterable[AgentRunResponseUpdate]:
# Custom streaming implementation
pass