Web Search

La recherche web permet aux agents de rechercher sur le web des informations de up-to-date. Cet outil permet aux agents de répondre à des questions sur les événements actuels, de trouver de la documentation et d’accéder aux informations au-delà de leurs données d’entraînement.

Note

La disponibilité de la recherche web dépend du fournisseur d’agent sous-jacent. Consultez La vue d’ensemble des fournisseurs pour obtenir une prise en charge spécifique au fournisseur.

L’exemple suivant montre comment créer un agent avec l’outil Recherche 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?"));

Avertissement

DefaultAzureCredential est pratique pour le développement, mais nécessite une considération minutieuse en production. En production, envisagez d’utiliser des informations d’identification spécifiques (par exemple ManagedIdentityCredential) pour éviter les problèmes de latence, la détection involontaire des informations d’identification et les risques de sécurité potentiels liés aux mécanismes de secours.

L’exemple suivant montre comment créer un agent avec l’outil Recherche 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())

Recherche web

Le hostedtool.WebSearch type active la recherche web côté serveur lors de l’utilisation d’un fournisseur qui le prend en charge.

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},
    },
})

Note

La recherche web est un outil hébergé : la recherche est effectuée par le service IA, et non localement.

Utiliser la recherche web avec l’agent Harness

Pour un agent brut, ajoutez HostedWebSearchTool les outils de l’agent, comme indiqué précédemment. HarnessAgent ajoute un HostedWebSearchTool par défaut, donc aucune inscription d’outil n’est requise :

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.",
    },
});

Définissez DisableWebSearch = true quand le fournisseur sélectionné ne prend pas en charge la recherche web hébergée ou lorsque vous souhaitez inscrire vous-même un outil de recherche spécifique au fournisseur.ChatOptions.Tools Si vous ajoutez votre propre outil de recherche web sans désactiver la valeur par défaut, l’agent reçoit les deux outils.

La recherche web est hébergée par le fournisseur de modèles ; il n’existe aucun cycle de vie local de recherche-client pour que Le Harnais gère. La disponibilité, les modèles pris en charge, les paramètres de recherche, la résidence des données et la facturation dépendent du IChatClient fournisseur. Les clients non pris en charge peuvent rejeter l’outil hébergé lorsque la demande est envoyée.

Traitez les requêtes de recherche et les résultats comme des données qui traversent une limite d’approbation externe. N’incluez pas de secrets dans les requêtes et traitez les pages récupérées comme du contenu non approuvé qui peut contenir une injection d’invite indirecte. Vérifiez les revendications et citations importantes avant d’effectuer des actions.

HarnessAgent est disponible à partir du Microsoft.Agents.AI.Harness package.

Pour un agent brut, appelez client.get_web_search_tool(...) et transmettez l’outil retourné à Agent, comme indiqué précédemment. create_harness_agent appels client.get_web_search_tool() sans arguments par défaut lorsque le client implémente SupportsWebSearchTool:

from agent_framework import create_harness_agent

agent = create_harness_agent(client=client)

Si le client n’implémente SupportsWebSearchToolpas, la fabrique enregistre un avertissement et continue sans recherche web. Définissez disable_web_search=True pour supprimer l’inscription automatique et l’avertissement.

Pour passer des paramètres spécifiques au fournisseur, désactivez la valeur par défaut et inscrivez explicitement l’outil configuré :

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",
        )
    ],
)

Le fournisseur possède l’exécution et le cycle de vie de la recherche hébergée. Les paramètres, modèles, gestion des données et facturation pris en charge dépendent de l’implémentation du client. Ne placez pas de secrets dans les requêtes, traitez le contenu récupéré comme une entrée non approuvée et vérifiez les revendications et citations importantes avant d’effectuer des actions.

create_harness_agent est publié dans agent-framework-core; la recherche web reste disponible uniquement via les clients qui implémentent SupportsWebSearchTool.

Un Harnais Go empaqueté n’est actuellement pas disponible. Ajoutez hostedtool.WebSearch à un agent Go brut comme indiqué précédemment.

Étapes suivantes