Web Search

Ricerca Web consente agli agenti di cercare up-toinformazioni sulla data. Questo strumento consente agli agenti di rispondere a domande sugli eventi correnti, trovare la documentazione e accedere alle informazioni oltre i dati di training.

Annotazioni

La disponibilità di Ricerca Web dipende dal provider dell'agente sottostante. Vedere Panoramica dei provider per il supporto specifico del provider.

L'esempio seguente illustra come creare un agente con lo strumento Ricerca Web:

using System;
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

// Requires: dotnet add package Microsoft.Agents.AI.Foundry --prerelease
var endpoint = Environment.GetEnvironmentVariable("FOUNDRY_PROJECT_ENDPOINT")
    ?? throw new InvalidOperationException("FOUNDRY_PROJECT_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("FOUNDRY_MODEL") ?? "gpt-5.4-mini";

// Create an agent with hosted web search.
AIAgent agent = new AIProjectClient(new Uri(endpoint), new DefaultAzureCredential())
    .AsAIAgent(
        model: deploymentName,
        instructions: "You are a helpful assistant that can search the web for current information.",
        tools: [new HostedWebSearchTool()]);

Console.WriteLine(await agent.RunAsync("What is the current weather in Seattle?"));

Avvertimento

DefaultAzureCredential è utile per lo sviluppo, ma richiede un'attenta considerazione nell'ambiente di produzione. Nell'ambiente di produzione prendere in considerazione l'uso di credenziali specifiche ,ad esempio ManagedIdentityCredential, per evitare problemi di latenza, probe di credenziali indesiderate e potenziali rischi per la sicurezza dai meccanismi di fallback.

L'esempio seguente illustra come creare un agente con lo strumento Ricerca Web:

# Copyright (c) Microsoft. All rights reserved.

import asyncio

from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient

"""
OpenAI Responses Client with Web Search Example

This sample demonstrates using get_web_search_tool() with OpenAI Responses Client
for direct real-time information retrieval and current data access.
"""


async def main() -> None:
    client = OpenAIChatClient()

    # Create web search tool with location context
    web_search_tool = client.get_web_search_tool(
        user_location={"city": "Seattle", "country": "US"},
    )

    agent = Agent(
        client=client,
        instructions="You are a helpful assistant that can search the web for current information.",
        tools=[web_search_tool],
    )

    message = "What is the current weather? Do not ask for my current location."
    stream = False
    print(f"User: {message}")

    if stream:
        print("Assistant: ", end="")
        async for chunk in agent.run(message, stream=True):
            if chunk.text:
                print(chunk.text, end="")
        print("")
    else:
        response = await agent.run(message)
        print(f"Assistant: {response}")


if __name__ == "__main__":
    asyncio.run(main())

Ricerca Web

Il hostedtool.WebSearch tipo abilita la ricerca Web sul lato server quando si usa un provider che lo supporta.

import "github.com/microsoft/agent-framework-go/tool/hostedtool"

webSearch := &hostedtool.WebSearch{}

a := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Config: agent.Config{
        Tools: []tool.Tool{webSearch},
    },
})

Annotazioni

La ricerca Web è uno strumento ospitato: la ricerca viene eseguita dal servizio di intelligenza artificiale, non in locale.

Usare la ricerca Web con l'agente Harness

Per un agente normale, aggiungere HostedWebSearchTool agli strumenti dell'agente, come illustrato in precedenza. HarnessAgent aggiunge uno HostedWebSearchTool per impostazione predefinita, quindi non è necessaria alcuna registrazione dello strumento:

using Microsoft.Agents.AI;

AIAgent agent = chatClient.AsHarnessAgent(new HarnessAgentOptions
{
    ChatOptions = new()
    {
        Instructions = "Use web search for current information and cite the sources you used.",
    },
});

Impostare DisableWebSearch = true quando il provider selezionato non supporta la ricerca Web ospitata o quando si vuole registrare manualmente uno strumento di ricerca specifico del provider tramite ChatOptions.Tools. Se si aggiunge uno strumento di ricerca Web personalizzato senza disabilitare l'impostazione predefinita, l'agente riceve entrambi gli strumenti.

La ricerca Web è ospitata dal provider di modelli; non esiste alcun ciclo di vita del client di ricerca locale per la gestione di Harness. Disponibilità, modelli supportati, parametri di ricerca, residenza dei dati e fatturazione dipendono dal IChatClient provider. I client non supportati possono rifiutare lo strumento ospitato quando viene inviata la richiesta.

Considerare le query di ricerca e i risultati come dati che superano un limite di attendibilità esterna. Non includere segreti nelle query e considerare le pagine recuperate come contenuto non attendibile che può contenere l'inserimento indiretto delle richieste. Verificare attestazioni e citazioni importanti prima di eseguire azioni.

HarnessAgent è disponibile dal Microsoft.Agents.AI.Harness pacchetto.

Per un agente normale, chiamare client.get_web_search_tool(...) e passare lo strumento restituito a Agent, come illustrato in precedenza. create_harness_agent chiama client.get_web_search_tool() senza argomenti per impostazione predefinita quando il client implementa SupportsWebSearchTool:

from agent_framework import create_harness_agent

agent = create_harness_agent(client=client)

Se il client non implementa SupportsWebSearchTool, la factory registra un avviso e continua senza ricerca Web. Impostare disable_web_search=True per eliminare la registrazione automatica e l'avviso.

Per passare impostazioni specifiche del provider, disabilitare il valore predefinito e registrare lo strumento configurato in modo esplicito:

agent = create_harness_agent(
    client=client,
    disable_web_search=True,
    tools=[
        client.get_web_search_tool(
            user_location={"city": "Seattle", "country": "US"},
            search_context_size="medium",
        )
    ],
)

Il provider è proprietario dell'esecuzione e del ciclo di vita della ricerca ospitata. I parametri, i modelli, la gestione dei dati e la fatturazione supportati dipendono dall'implementazione del client. Non inserire segreti nelle query, considerare il contenuto recuperato come input non attendibile e verificare attestazioni e citazioni importanti prima di eseguire azioni.

create_harness_agent viene rilasciato in agent-framework-core. La ricerca Web rimane disponibile solo tramite i client che implementano SupportsWebSearchTool.

Un Go Harness in pacchetto non è attualmente disponibile. Aggiungere hostedtool.WebSearch a un agente Go normale, come illustrato in precedenza.

Passaggi successivi