wyszukiwanie w sieci Web

Usługa Web Search umożliwia agentom wyszukiwanie w Internecie up-to-date informacji. To narzędzie umożliwia agentom odpowiadanie na pytania dotyczące bieżących zdarzeń, znajdowanie dokumentacji i uzyskiwanie dostępu do informacji poza ich danymi treningowymi.

Uwaga / Notatka

Dostępność wyszukiwania w Sieci Web zależy od bazowego dostawcy agenta. Zobacz Omówienie dostawców , aby uzyskać pomoc techniczną specyficzną dla dostawcy.

W poniższym przykładzie pokazano, jak utworzyć agenta za pomocą narzędzia wyszukiwania w Sieci 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?"));

Ostrzeżenie

DefaultAzureCredential jest wygodne do programowania, ale wymaga starannego rozważenia w środowisku produkcyjnym. W środowisku produkcyjnym rozważ użycie określonego poświadczenia (np. ManagedIdentityCredential), aby uniknąć problemów z opóźnieniami, niezamierzonego sondowania poświadczeń i potencjalnych zagrożeń bezpieczeństwa wynikających z mechanizmów awaryjnych.

W poniższym przykładzie pokazano, jak utworzyć agenta za pomocą narzędzia wyszukiwania w Sieci 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())

Wyszukiwanie w Internecie

Typ hostedtool.WebSearch umożliwia wyszukiwanie w Internecie po stronie serwera podczas korzystania z dostawcy, który go obsługuje.

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

Uwaga / Notatka

Wyszukiwanie w Sieci Web to narzędzie hostowane — wyszukiwanie jest wykonywane przez usługę sztucznej inteligencji, a nie lokalnie.

Używanie wyszukiwania w Internecie z agentem uprzęży

W przypadku zwykłego agenta dodaj HostedWebSearchTool do narzędzi agenta, jak pokazano wcześniej. HarnessAgent dodaje jeden HostedWebSearchTool domyślnie, więc rejestracja narzędzia nie jest wymagana:

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

Ustaw DisableWebSearch = true , gdy wybrany dostawca nie obsługuje hostowanego wyszukiwania w Internecie lub gdy chcesz samodzielnie zarejestrować narzędzie wyszukiwania specyficzne dla dostawcy za pośrednictwem usługi ChatOptions.Tools. Jeśli dodasz własne narzędzie do wyszukiwania w Internecie bez wyłączania wartości domyślnej, agent otrzyma oba narzędzia.

Wyszukiwanie w sieci Web jest hostowane przez dostawcę modelu; Nie ma lokalnego cyklu życia klienta wyszukiwania, aby uprzęży zarządzać. Dostępność, obsługiwane modele, parametry wyszukiwania, rezydencja danych i rozliczenia zależą od dostawcy IChatClient . Nieobsługiwane klienci mogą odrzucać hostowane narzędzie po wysłaniu żądania.

Traktuj zapytania wyszukiwania i wyniki jako dane przechodzące przez zewnętrzną granicę zaufania. Nie dołączaj wpisów tajnych do zapytań i traktuj pobrane strony jako niezaufaną zawartość, która może zawierać pośrednie wstrzyknięcie monitu. Przed podjęciem akcji sprawdź ważne oświadczenia i cytaty.

HarnessAgent jest dostępny w pakiecie Microsoft.Agents.AI.Harness .

W przypadku zwykłego agenta wywołaj client.get_web_search_tool(...) i przekaż zwrócone narzędzie do Agentmetody , jak pokazano wcześniej. create_harness_agent wywołania client.get_web_search_tool() bez argumentów domyślnie, gdy klient implementuje SupportsWebSearchToolelement :

from agent_framework import create_harness_agent

agent = create_harness_agent(client=client)

Jeśli klient nie implementuje SupportsWebSearchTool, fabryka rejestruje ostrzeżenie i kontynuuje wyszukiwanie w Internecie. Ustaw disable_web_search=True wartość , aby pominąć automatyczną rejestrację i ostrzeżenie.

Aby przekazać ustawienia specyficzne dla dostawcy, wyłącz ustawienie domyślne i jawnie zarejestruj skonfigurowane narzędzie:

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

Dostawca jest właścicielem wykonywania i cyklu życia wyszukiwania hostowanego. Obsługiwane parametry, modele, obsługa danych i rozliczenia zależą od implementacji klienta. Nie umieszczaj wpisów tajnych w zapytaniach, traktuj pobraną zawartość jako niezaufane dane wejściowe i przed podjęciem akcji sprawdź ważne oświadczenia i cytaty.

create_harness_agent jest zwalniany w agent-framework-coresystemie ; wyszukiwanie w internecie pozostaje dostępne tylko za pośrednictwem klientów, którzy implementują SupportsWebSearchToolprogram .

Spakowane narzędzie Go Harness nie jest obecnie dostępne. Dodaj hostedtool.WebSearch do zwykłego agenta języka Go, jak pokazano wcześniej.

Dalsze kroki