Agentes de aterramento com ferramentas de pesquisa Bing

Os modelos de fundição têm um limite de conhecimento. Não conseguem aceder a nova informação para além de um ponto fixo no tempo. Ao utilizar o Grounding com Bing Search e o Grounding com Bing Custom Search (pré-visualização), os seus agentes podem incorporar dados públicos da web em tempo real ao gerar respostas. Ao usar estas ferramentas, pode colocar questões como "quais são as principais notícias de IA atualmente".

O processo de aterramento envolve vários passos principais:

  1. Formulação de consultas: O agente identifica lacunas de informação e constrói consultas de pesquisa.
  2. Execução da pesquisa: A ferramenta de grounding submete consultas aos motores de busca e recupera os resultados.
  3. Síntese de informação: O agente processa os resultados da pesquisa e integra os resultados nas respostas.
  4. Atribuição de fonte: O agente fornece transparência ao citar fontes de pesquisa.

Importante

  • O estabelecimento da ligação à terra com o Bing Search e com o Bing Custom Search são Serviços de Consumo de Primeira Parte com termos para serviços online. São regidas pelo Grounding com os termos de uso do Bing e pela Declaração de Privacidade Microsoft.
  • O Adendo Microsoft Proteção de Dados não se aplica a dados enviados para Grounding com Bing Search ou Grounding com Bing Custom Search. Quando utiliza estes serviços, os seus dados fluem para além dos limites de conformidade e geometria do Azure. Isto também significa que a utilização destes serviços dispensa todos os compromissos elevados de segurança e conformidade da Government Community Cloud, incluindo soberania de dados e suporte baseado em triagem/cidadania, conforme aplicável.
  • A utilização de Grounding com Bing Search e Grounding com Bing Custom Search implica custos. Consulte os preços para mais detalhes.
  • Consulte a secção gerir para informações sobre como os administradores de Azure podem gerir o acesso ao uso do Grounding com Bing Search e do Grounding com Bing Custom Search.

Nota

Comece pela ferramenta de pesquisa na web. Saiba mais sobre as diferenças entre a pesquisa web e o Grounding com o Bing Search (ou o Grounding com o Bing Custom Search) na visão geral do grounding web.

Suporte de utilização

A tabela seguinte mostra o suporte para SDK e configuração.

Suporte ao Microsoft Foundry Python SDK C# SDK JavaScript SDK Java SDK API REST Configuração básica do agente Configuração padrão do agente
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Nota

Nem todos os modelos suportam Grounding com Bing Search ou Grounding com Bing Custom Search. Para uma lista completa de modelos que suportam estas ferramentas, consulte Suporte de ferramentas por região e modelo.

Pré-requisitos

Antes de começar, certifique-se de que tem:

  • Uma subscrição do Azure com as permissões corretas.
  • Azure RBAC roles:
    • Papel de Contribuinte ou Proprietário ao nível de subscrição ou grupo de recursos para criar recursos no Bing e obter chaves de recursos.
    • Azure Gestor de Projetos de IA função para criar ligações de projeto na Foundry. Para mais informações, consulte Controlo de acesso baseado em funções para Microsoft Foundry.
  • Um projeto Foundry criado com um endpoint configurado.
  • Um modelo de IA implementado no seu projeto.
  • SDK instalado para a tua língua preferida:
    • Python: azure-ai-projects
    • C#: Azure.AI.Extensions.OpenAI
    • TypeScript/JavaScript: @azure/ai-projects
    • Java: com.azure:azure-ai-agents:2.0.0
  • Azure credenciais configuradas para autenticação (como DefaultAzureCredential).
    • Para amostras REST, as variáveis de ambiente configuram:
      • FOUNDRY_PROJECT_ENDPOINT: URL do endpoint do seu projeto Foundry.
      • FOUNDRY_MODEL_DEPLOYMENT_NAME: O nome do seu modelo implantado.
      • BING_PROJECT_CONNECTION_ID: ID de conexão do seu projeto Grounding com a Pesquisa Bing.
      • BING_CUSTOM_SEARCH_PROJECT_CONNECTION_ID: ID de conexão do projeto Grounding with Bing Custom Search.
      • BING_CUSTOM_SEARCH_INSTANCE_NAME: O nome da sua instância de pesquisa personalizada.
      • AGENT_TOKEN.
  • Um recurso Bing Grounding ou Bing Custom Search criado e ligado ao seu projeto Foundry. É necessária uma subscrição paga para criar um recurso Grounding com Bing Search ou Grounding com Bing Custom Search.
  • A ferramenta Grounding with Bing Search funciona num projeto Foundry seguro em rede, mas comporta-se como um endpoint público. Considere este comportamento quando utiliza a ferramenta num ambiente seguro em rede.

Configuração

Nesta secção, adiciona uma ligação ao projeto para o recurso Bing e captura os valores usados nas amostras. Os exemplos do SDK utilizam o nome da ligação do projeto e resolvem o ID da ligação em tempo de execução. As amostras REST usam o ID de ligação do projeto. Pode usar este modelo de bíceps para criar um agente básico com o Grounding com a ferramenta de pesquisa Bing ativada.

Se já tens um ID de ligação ao projeto para o recurso Bing que queres usar, salta esta secção.

  1. Adicione a ligação adequada ao seu projeto.

    Para instruções passo a passo, veja Adicionar uma nova ligação ao seu projeto.

    Importante

    • Precisas do papel de Contribuidor ou Proprietário ao nível de subscrição ou grupo de recursos para criar recursos no Bing e obter chaves de recursos.
    • Para encontrar as chaves de recursos, vá ao seu recurso Grounding com Bing no portal Azure>Gestão de Recursos>Keys.
  2. Obtenha o nome e ID da ligação do projeto a partir dos detalhes da ligação, depois defina os valores como variáveis de ambiente.

  • Para exemplos de SDK:
    • Para integração com o Bing Search: configure BING_PROJECT_CONNECTION_NAME.
    • Para Grounding com Bing Custom Search: define BING_CUSTOM_SEARCH_PROJECT_CONNECTION_NAME.
  • Para exemplos de REST:
    • Para integração com o Bing Search: configure BING_PROJECT_CONNECTION_ID.
    • Para Grounding com Bing Custom Search: define BING_CUSTOM_SEARCH_PROJECT_CONNECTION_ID.

O ID de ligação do projeto utiliza o formato:

/subscriptions/{{subscriptionID}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.CognitiveServices/accounts/{{foundryAccountName}}/projects/{{foundryProjectName}}/connections/{{foundryConnectionName}}

Ferramentas disponíveis

Ferramenta Descrição Caso de uso
Aterramento com a Pesquisa Bing Dá aos agentes acesso padrão às capacidades de pesquisa do Bing. Cenários que requerem acesso amplo ao conhecimento.
Aterramento com Pesquisa Personalizada Bing (pré-visualização) Permite aos agentes pesquisar dentro de um conjunto configurável de domínios web públicos. Defines as partes da web de onde queres extrair para que os utilizadores só vejam resultados relevantes dos domínios que escolhes. Cenários que requerem gestão de informação.

Nota

Consulte as melhores práticas para obter informações sobre como otimizar o uso de ferramentas.

Exemplos de código

Nota

  • Precisas do pacote SDK mais recente. Consulte o quickstart para mais detalhes.
  • Para exemplos do SDK, use o nome da ligação do projeto. Para exemplos REST, use o ID de ligação do projeto no formato/subscriptions/{{subscriptionID}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.CognitiveServices/accounts/{{foundryAccountName}}/projects/{{foundryProjectName}}/connections/{{foundryConnectionName}}.

Os exemplos seguintes demonstram como criar um agente com Grounding com as ferramentas de pesquisa do Bing, e como usar o agente para responder a perguntas dos utilizadores.

from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
    PromptAgentDefinition,
    BingGroundingTool,
    BingGroundingSearchToolParameters,
    BingGroundingSearchConfiguration,
)

# Format: "https://resource_name.ai.azure.com/api/projects/project_name"
PROJECT_ENDPOINT = "your_project_endpoint"
BING_CONNECTION_NAME = "my-bing-connection"

# Create clients to call Foundry API
project = AIProjectClient(
    endpoint=PROJECT_ENDPOINT,
    credential=DefaultAzureCredential(),
)
openai = project.get_openai_client()

# Get connection ID from connection name
bing_connection = project.connections.get(BING_CONNECTION_NAME)

agent = project.agents.create_version(
    agent_name="MyAgent",
    definition=PromptAgentDefinition(
        model="gpt-4.1-mini",
        instructions="You are a helpful assistant.",
        tools=[
            BingGroundingTool(
                bing_grounding=BingGroundingSearchToolParameters(
                    search_configurations=[
                        BingGroundingSearchConfiguration(
                            project_connection_id=bing_connection.id
                        )
                    ]
                )
            )
        ],
    ),
    description="You are a helpful agent.",
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")

stream_response = openai.responses.create(
    stream=True,
    tool_choice="required",
    input="What is today's date and weather in Seattle?",
    extra_body={"agent_reference": {"name": agent.name, "type": "agent_reference"}},
)

for event in stream_response:
    if event.type == "response.created":
        print(f"Follow-up response created with ID: {event.response.id}")
    elif event.type == "response.output_text.delta":
        print(f"Delta: {event.delta}")
    elif event.type == "response.text.done":
        print(f"\nFollow-up response done!")
    elif event.type == "response.output_item.done":
        if event.item.type == "message":
            item = event.item
            if item.content[-1].type == "output_text":
                text_content = item.content[-1]
                for annotation in text_content.annotations:
                    if annotation.type == "url_citation":
                        print(f"URL Citation: {annotation.url}")
    elif event.type == "response.completed":
        print(f"\nFollow-up completed!")
        print(f"Full response: {event.response.output_text}")

O que este código faz

Este exemplo cria um agente com aterramento usando a ferramenta Bing Search, que pode recuperar informação em tempo real da web. Quando executas o código:

  1. Cria um AIProjectClient e autentica usando as suas credenciais Azure.
  2. Cria um agente com a ferramenta de suporte do Bing configurada através da sua conexão Bing.
  3. Envia uma consulta sobre a data de hoje e o tempo em Seattle.
  4. O agente utiliza a ferramenta de grounding Bing para pesquisar na web e transmite a resposta.
  5. Extrai e mostra citações de URL dos resultados de pesquisa.

Entradas necessárias

  • Atualiza as PROJECT_ENDPOINT constantes e BING_CONNECTION_NAME no código com os teus valores.
  • Azure credenciais configuradas para DefaultAzureCredential.

Produção esperada

Agent created (id: asst_abc123, name: MyAgent, version: 1)
Follow-up response created with ID: resp_xyz789
Delta: Today
Delta: 's date
Delta:  is December 12, 2025...
Follow-up response done!
URL Citation: https://www.weather.gov/seattle/
Follow-up completed!
Full response: Today's date is December 12, 2025, and the weather in Seattle is...

Aterramento com Pesquisa Personalizada Bing (pré-visualização)

from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
    PromptAgentDefinition,
    BingCustomSearchPreviewTool,
    BingCustomSearchToolParameters,
    BingCustomSearchConfiguration,
)

# Format: "https://resource_name.ai.azure.com/api/projects/project_name"
PROJECT_ENDPOINT = "your_project_endpoint"
CUSTOM_SEARCH_CONNECTION_NAME = "my-custom-search-connection"
CUSTOM_SEARCH_INSTANCE_NAME = "my-custom-search-instance"

# Create clients to call Foundry API
project = AIProjectClient(
    endpoint=PROJECT_ENDPOINT,
    credential=DefaultAzureCredential(),
)
openai = project.get_openai_client()

# Get connection ID from connection name
bing_custom_connection = project.connections.get(CUSTOM_SEARCH_CONNECTION_NAME)

bing_custom_search_tool = BingCustomSearchPreviewTool(
    bing_custom_search_preview=BingCustomSearchToolParameters(
        search_configurations=[
            BingCustomSearchConfiguration(
                project_connection_id=bing_custom_connection.id,
                instance_name=CUSTOM_SEARCH_INSTANCE_NAME,
            )
        ]
    )
)

agent = project.agents.create_version(
    agent_name="MyAgent",
    definition=PromptAgentDefinition(
        model="gpt-4.1-mini",
        instructions="""You are a helpful agent that can use Bing Custom Search tools to assist users. 
        Use the available Bing Custom Search tools to answer questions and perform tasks.""",
        tools=[bing_custom_search_tool],
    ),
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")

user_input = input(
    "Enter your question for the Bing Custom Search agent " "(e.g., 'Tell me more about foundry agent service'): \n"
)

# Send initial request that will trigger the Bing Custom Search tool
stream_response = openai.responses.create(
    stream=True,
    input=user_input,
    extra_body={"agent_reference": {"name": agent.name, "type": "agent_reference"}},
)

for event in stream_response:
    if event.type == "response.created":
        print(f"Follow-up response created with ID: {event.response.id}")
    elif event.type == "response.output_text.delta":
        print(f"Delta: {event.delta}")
    elif event.type == "response.text.done":
        print(f"\nFollow-up response done!")
    elif event.type == "response.output_item.done":
        if event.item.type == "message":
            item = event.item
            if item.content[-1].type == "output_text":
                text_content = item.content[-1]
                for annotation in text_content.annotations:
                    if annotation.type == "url_citation":
                        print(
                            f"URL Citation: {annotation.url}, "
                            f"Start index: {annotation.start_index}, "
                            f"End index: {annotation.end_index}"
                        )
    elif event.type == "response.completed":
        print(f"\nFollow-up completed!")
        print(f"Full response: {event.response.output_text}")

O que este código faz

Este exemplo cria um agente com a ferramenta Grounding with Bing Custom Search que pesquisa dentro de um conjunto configurável de domínios web públicos. Quando executas o código:

  1. Cria um AIProjectClient e autentica usando as suas credenciais Azure.
  2. Cria um agente com a ferramenta Bing Custom Search configurada usando a sua instância de pesquisa personalizada.
  3. Solicita entrada do utilizador solicitando informação sobre tópicos específicos dentro dos seus domínios configurados.
  4. O agente utiliza a ferramenta Bing Custom Search para pesquisar apenas nos domínios especificados e transmite a resposta.
  5. Extrai e mostra citações de URL com posições de início e fim dos resultados de pesquisa personalizados.

Entradas necessárias

  • Atualize as constantes PROJECT_ENDPOINT, CUSTOM_SEARCH_CONNECTION_NAME e CUSTOM_SEARCH_INSTANCE_NAME no código com os seus valores.
  • Azure credenciais configuradas para DefaultAzureCredential.
  • Entrada do utilizador em tempo de execução.

Produção esperada

Agent created (id: asst_abc123, name: MyAgent, version: 1)
Enter your question for the Bing Custom Search agent (e.g., 'Tell me more about foundry agent service'):
Tell me more about foundry agent service
Follow-up response created with ID: resp_xyz789
Delta: Microsoft
Delta:  Foundry
Delta:  Agent Service...
Follow-up response done!
URL Citation: https://learn.microsoft.com/azure/ai-foundry/agents, Start index: 45, End index: 120
Follow-up completed!
Full response: Microsoft Foundry Agent Service enables you to build...

Os exemplos seguintes de C# demonstram como criar um agente com Grounding com a ferramenta Bing Search, e como usar o agente para responder a perguntas dos utilizadores. Estes exemplos usam chamadas síncronas para simplificar. Para exemplos assíncronos, consulte as amostras de agentes C#.

Para permitir que o seu Agente utilize a API de pesquisa do Bing, use BingGroundingTool.

Aterramento com a Pesquisa Bing

// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
var projectEndpoint = "your_project_endpoint";
var bingConnectionName = "my-bing-connection";

// Create project client to call Foundry API
AIProjectClient projectClient = new(
    endpoint: new Uri(projectEndpoint),
    tokenProvider: new DefaultAzureCredential());

// Get connection ID from connection name
AIProjectConnection bingConnection = projectClient.Connections.GetConnection(connectionName: bingConnectionName);

// Create the agent version with Bing grounding tool
BingGroundingTool bingGroundingAgentTool = new(new BingGroundingSearchToolOptions(
  searchConfigurations: [new BingGroundingSearchConfiguration(projectConnectionId: bingConnection.Id)]
    )
);
DeclarativeAgentDefinition agentDefinition = new(model: "gpt-4.1-mini")
{
    Instructions = "You are a helpful agent.",
    Tools = { bingGroundingAgentTool, }
};
AgentVersion agentVersion = projectClient.AgentAdministrationClient.CreateAgentVersion(
    agentName: "myAgent",
    options: new(agentDefinition));

// Output the agent version info
ProjectResponsesClient responseClient = projectClient.ProjectOpenAIClient.GetProjectResponsesClientForAgent(agentVersion.Name);

ResponseResult response = responseClient.CreateResponse("How does wikipedia explain Euler's Identity?");

// Extract and format URL citation annotations
string citation = "";
foreach (ResponseItem item in response.OutputItems)
{
    if (item is MessageResponseItem messageItem)
    {
        foreach (ResponseContentPart content in messageItem.Content)
        {
            foreach (ResponseMessageAnnotation annotation in content.OutputTextAnnotations)
            {
                if (annotation is UriCitationMessageAnnotation uriAnnotation)
                {
                    citation = $" [{uriAnnotation.Title}]({uriAnnotation.Uri})";
                }
            }
        }
    }
}

// Validate and print the response
Assert.That(response.Status, Is.EqualTo(ResponseStatus.Completed));
Console.WriteLine($"{response.GetOutputText()}{citation}");

// Clean up resources by deleting the agent version
projectClient.AgentAdministrationClient.DeleteAgentVersion(agentName: agentVersion.Name, agentVersion: agentVersion.Version);

O que este código faz

Este exemplo cria um agente que utiliza a ferramenta Grounding with Bing Search e demonstra o tratamento de respostas síncronas. Quando executas o código:

  1. Cria um AIProjectClient usando o endpoint do seu projeto.
  2. Recupera a configuração da ligação Bing do seu projeto.
  3. Cria um agente com a ferramenta de base Bing configurada.
  4. Envia uma consulta a perguntar como a Wikipédia explica a Identidade de Euler.
  5. O agente utiliza a ferramenta Bing Grounding para efetuar a pesquisa e retorna resultados formatados com citações de URLs.
  6. Limpa eliminando a versão do agente.

Entradas necessárias

  • Atualiza as projectEndpoint constantes e bingConnectionName no código com os teus valores.
  • Azure credenciais configuradas para DefaultAzureCredential.

Produção esperada

Euler's identity is considered one of the most elegant equations in mathematics... [Euler's identity - Wikipedia](https://en.wikipedia.org/wiki/Euler%27s_identity)

Integração com o Bing em cenários de transmissão

// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
var projectEndpoint = "your_project_endpoint";
var bingConnectionName = "my-bing-connection";

// Create project client to call Foundry API
AIProjectClient projectClient = new(
    endpoint: new Uri(projectEndpoint),
    tokenProvider: new DefaultAzureCredential());

// Get connection ID from connection name
AIProjectConnection bingConnection = projectClient.Connections.GetConnection(connectionName: bingConnectionName);

// Create the agent version with Bing grounding tool
BingGroundingTool bingGroundingAgentTool = new(new BingGroundingSearchToolOptions(
  searchConfigurations: [new BingGroundingSearchConfiguration(projectConnectionId: bingConnection.Id)]
    )
);
DeclarativeAgentDefinition agentDefinition = new(model: "gpt-4.1-mini")
{
    Instructions = "You are a helpful agent.",
    Tools = { bingGroundingAgentTool }
};
AgentVersion agentVersion = projectClient.AgentAdministrationClient.CreateAgentVersion(
    agentName: "myAgent",
    options: new(agentDefinition));

// Stream the response from the agent version
ProjectResponsesClient responseClient = projectClient.ProjectOpenAIClient.GetProjectResponsesClientForAgent(agentVersion.Name);

string annotation = "";
string text = "";

// Parse the streaming response and output the results
foreach (StreamingResponseUpdate streamResponse in responseClient.CreateResponseStreaming("How does wikipedia explain Euler's Identity?"))
{
    if (streamResponse is StreamingResponseCreatedUpdate createUpdate)
    {
        Console.WriteLine($"Stream response created with ID: {createUpdate.Response.Id}");
    }
    else if (streamResponse is StreamingResponseOutputTextDeltaUpdate textDelta)
    {
        Console.WriteLine($"Delta: {textDelta.Delta}");
    }
    else if (streamResponse is StreamingResponseOutputTextDoneUpdate textDoneUpdate)
    {
        text = textDoneUpdate.Text;
    }
    else if (streamResponse is StreamingResponseOutputItemDoneUpdate itemDoneUpdate)
    {
        if (annotation.Length == 0)
        {
            // Extract and format URL citation annotations
            if (itemDoneUpdate.Item is MessageResponseItem messageItem)
            {
                foreach (ResponseContentPart content in messageItem.Content)
                {
                    foreach (ResponseMessageAnnotation messageAnnotation in content.OutputTextAnnotations)
                    {
                        if (messageAnnotation is UriCitationMessageAnnotation uriAnnotation)
                        {
                            annotation = $" [{uriAnnotation.Title}]({uriAnnotation.Uri})";
                        }
                    }
                }
            }
        }
    }
    else if (streamResponse is StreamingResponseErrorUpdate errorUpdate)
    {
        throw new InvalidOperationException($"The stream has failed: {errorUpdate.Message}");
    }
}
Console.WriteLine($"{text}{annotation}");

// Clean up resources by deleting the agent version
projectClient.AgentAdministrationClient.DeleteAgentVersion(agentName: agentVersion.Name, agentVersion: agentVersion.Version);

O que este código faz

Este exemplo cria um agente com fundamentação utilizando a ferramenta Bing Search e demonstra o tratamento de respostas em fluxo contínuo. Quando executas o código:

  1. Cria um AIProjectClient usando o endpoint do seu projeto.
  2. Recupera a configuração da ligação Bing do seu projeto.
  3. Cria um agente com a ferramenta de base Bing configurada.
  4. Envia uma consulta a perguntar como a Wikipédia explica a Identidade de Euler.
  5. O agente utiliza a ferramenta de grounding Bing e fornece a resposta em tempo real.
  6. Processa eventos em streaming, incluindo atualizações de texto delta e extração de citações.
  7. Limpa eliminando a versão do agente.

Entradas necessárias

  • Atualiza as projectEndpoint constantes e bingConnectionName no código com os teus valores.
  • Azure credenciais configuradas para DefaultAzureCredential.

Produção esperada

Stream response created with ID: resp_xyz789
Delta: Euler
Delta: 's
Delta:  Identity
Delta:  is one of the most...
Euler's Identity is one of the most elegant equations in mathematics... [Euler's identity - Wikipedia](https://en.wikipedia.org/wiki/Euler%27s_identity)

Os seguintes exemplos de APIs REST demonstram como usar o Grounding com as ferramentas Bing Search e Grounding com Bing Custom Search (preview) para responder a questões dos utilizadores.

Aterramento com a Pesquisa Bing

Configuração da autenticação

Antes de executar chamadas à API REST, configure a autenticação:

  1. Definir variáveis do ambiente:

    • FOUNDRY_PROJECT_ENDPOINT: URL do endpoint do seu projeto Foundry.
    • FOUNDRY_MODEL_DEPLOYMENT_NAME: O nome do seu modelo implantado.
    • BING_PROJECT_CONNECTION_ID: ID de conexão do seu projeto Grounding com a Pesquisa Bing.
  2. Obtenha um token de portador:

    export AGENT_TOKEN=$(az account get-access-token --scope "https://ai.azure.com/.default" --query accessToken -o tsv)
    
    curl --request POST \
      --url "$FOUNDRY_PROJECT_ENDPOINT/openai/v1/responses" \
      -H "Authorization: Bearer $AGENT_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
      "model": "'$FOUNDRY_MODEL_DEPLOYMENT_NAME'",
      "input": "How does Wikipedia explain Euler\u0027s identity?",
      "tool_choice": "required",
      "tools": [
        {
          "type": "bing_grounding",
          "bing_grounding": {
            "search_configurations": [
              {
                "project_connection_id": "'$BING_PROJECT_CONNECTION_ID'",
                "count": 7,
                "market": "en-US",
                "set_lang": "en",
                "freshness": "7d"
              }
            ]
          }
        }
      ]
    }'
    

O que este código faz

Este pedido de API REST cria uma resposta usando Grounding com Bing Search. O pedido:

  1. Envia um pedido POST para o endpoint de respostas da Foundry.
  2. Inclui a implementação do modelo e a entrada do utilizador no corpo do pedido.
  3. Configura a ferramenta de grounding do Bing com parâmetros de pesquisa (contagem, mercado, idioma, frescura).
  4. Devolve uma resposta com resultados de pesquisa na web e citações.

Entradas necessárias

  • Variáveis de ambiente: FOUNDRY_PROJECT_ENDPOINT, AGENT_TOKEN, FOUNDRY_MODEL_DEPLOYMENT_NAME, BING_PROJECT_CONNECTION_ID.
  • Token de portador válido com as permissões apropriadas.

Produção esperada

Resposta do JSON com:

  • id: Identificador de resposta
  • output_text: Texto gerado com informação fundamentada
  • citations: Array de citações de URL usado para gerar a resposta

Aterramento com Pesquisa Personalizada Bing (pré-visualização)

curl --request POST \
  --url "$FOUNDRY_PROJECT_ENDPOINT/openai/v1/responses" \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "'$FOUNDRY_MODEL_DEPLOYMENT_NAME'",
  "input": "How does Wikipedia explain Euler\u0027s identity?",
  "tool_choice": "required",
  "tools": [
    {
      "type": "bing_custom_search_preview",
      "bing_custom_search_preview": {
        "search_configurations": [
          {
            "project_connection_id": "'$BING_CUSTOM_SEARCH_PROJECT_CONNECTION_ID'",
            "instance_name": "'$BING_CUSTOM_SEARCH_INSTANCE_NAME'",
            "count": 7,
            "market": "en-US",
            "set_lang": "en",
            "freshness": "7d"
          }
        ]
      }
    }
  ]
}'

O que este código faz

Este pedido da API REST cria uma resposta usando Grounding com Bing Custom Search. O pedido:

  1. Envia um pedido POST para o endpoint de respostas da Foundry.
  2. Inclui a implementação do modelo e a entrada do utilizador no corpo do pedido.
  3. Configura a ferramenta Bing Custom Search com o nome da sua instância e parâmetros de pesquisa.
  4. Devolve uma resposta com resultados de pesquisa personalizados limitados aos domínios configurados.

Entradas necessárias

  • Variáveis de ambiente: FOUNDRY_PROJECT_ENDPOINT, AGENT_TOKEN, FOUNDRY_MODEL_DEPLOYMENT_NAME, BING_CUSTOM_SEARCH_PROJECT_CONNECTION_ID, BING_CUSTOM_SEARCH_INSTANCE_NAME
  • Token de portador válido com as permissões apropriadas.
  • Instância de Pesquisa Personalizada do Bing já configurada com domínios de destino

Produção esperada

Resposta do JSON com:

  • id: Identificador de resposta
  • output_text: Texto gerado com informação do seu conjunto de domínios personalizado
  • citations: Array de citações de URL dos seus domínios configurados

Os seguintes exemplos de TypeScript demonstram como criar um agente com Grounding com Bing Search e Grounding com ferramentas Bing Custom Search (pré-visualização), e como usar o agente para responder a perguntas dos utilizadores. Para exemplos de JavaScript, consulte os exemplos de ferramentas agent no repositório SDK do Azure para JavaScript sobre GitHub.

Aterramento com a Pesquisa Bing

import { DefaultAzureCredential } from "@azure/identity";
import { AIProjectClient } from "@azure/ai-projects";

// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
const PROJECT_ENDPOINT = "your_project_endpoint";
const BING_CONNECTION_NAME = "my-bing-connection";

export async function main(): Promise<void> {
  // Create clients to call Foundry API
  const project = new AIProjectClient(PROJECT_ENDPOINT, new DefaultAzureCredential());
  const openai = project.getOpenAIClient();

  // Get connection ID from connection name
  const bingConnection = await project.connections.get(BING_CONNECTION_NAME);

  const agent = await project.agents.createVersion("MyBingGroundingAgent", {
    kind: "prompt",
    model: "gpt-4.1-mini",
    instructions: "You are a helpful assistant.",
    tools: [
      {
        type: "bing_grounding",
        bing_grounding: {
          search_configurations: [
            {
              project_connection_id: bingConnection.id,
            },
          ],
        },
      },
    ],
  });
  console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);

  // Send request that requires current information from the web
  const streamResponse = await openai.responses.create(
    {
      input: "What is today's date and weather in Seattle?",
      stream: true,
    },
    {
      body: {
        agent: { name: agent.name, type: "agent_reference" },
        tool_choice: "required",
      },
    },
  );

  // Process the streaming response
  for await (const event of streamResponse) {
    if (event.type === "response.created") {
      console.log(`Follow-up response created with ID: ${event.response.id}`);
    } else if (event.type === "response.output_text.delta") {
      process.stdout.write(event.delta);
    } else if (event.type === "response.output_text.done") {
      console.log("\n\nFollow-up response done!");
    } else if (event.type === "response.output_item.done") {
      if (event.item.type === "message") {
        const item = event.item;
        if (item.content && item.content.length > 0) {
          const lastContent = item.content[item.content.length - 1];
          if (lastContent.type === "output_text" && lastContent.annotations) {
            for (const annotation of lastContent.annotations) {
              if (annotation.type === "url_citation") {
                console.log(
                  `URL Citation: ${annotation.url}, Start index: ${annotation.start_index}, End index: ${annotation.end_index}`,
                );
              }
            }
          }
        }
      }
    } else if (event.type === "response.completed") {
      console.log("\nFollow-up completed!");
    }
  }

  // Clean up resources by deleting the agent version
  // This prevents accumulation of unused resources in your project
  console.log("\nCleaning up resources...");
  await project.agents.deleteVersion(agent.name, agent.version);
  console.log("Agent deleted");

  console.log("\nBing grounding agent sample completed!");
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

O que este código faz

Este exemplo cria um agente com aterramento usando a ferramenta Bing Search, que pode recuperar informação em tempo real da web. Quando executas o código:

  1. Cria um AIProjectClient e autentica usando as suas credenciais Azure.
  2. Cria um agente com a ferramenta de suporte do Bing configurada através da sua conexão Bing.
  3. Envia uma consulta sobre a data atual e as condições meteorológicas em Seattle, com a escolha de ferramenta definida como "necessária".
  4. O agente utiliza a ferramenta de grounding Bing para pesquisar na web e transmite a resposta.
  5. Processa eventos em streaming e extrai citações URL com as suas posições no texto.
  6. Limpa eliminando a versão do agente.

Entradas necessárias

  • Atualiza as PROJECT_ENDPOINT constantes e BING_CONNECTION_NAME no código com os teus valores.
  • Azure credenciais configuradas para DefaultAzureCredential.

Produção esperada

Agent created (id: asst_abc123, name: MyBingGroundingAgent, version: 1)
Follow-up response created with ID: resp_xyz789
Today's date is December 12, 2025, and the weather in Seattle...

Follow-up response done!
URL Citation: https://www.weather.gov/seattle/, Start index: 45, End index: 120

Follow-up completed!

Cleaning up resources...
Agent deleted

Bing grounding agent sample completed!

Aterramento com Pesquisa Personalizada Bing (pré-visualização)

import { DefaultAzureCredential } from "@azure/identity";
import { AIProjectClient } from "@azure/ai-projects";
import * as readline from "readline";

// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
const PROJECT_ENDPOINT = "your_project_endpoint";
const CUSTOM_SEARCH_CONNECTION_NAME = "my-custom-search-connection";
const CUSTOM_SEARCH_INSTANCE_NAME = "my-custom-search-instance";

export async function main(): Promise<void> {
  // Create clients to call Foundry API
  const project = new AIProjectClient(PROJECT_ENDPOINT, new DefaultAzureCredential());
  const openai = project.getOpenAIClient();

  // Get connection ID from connection name
  const bingCustomConnection = await project.connections.get(CUSTOM_SEARCH_CONNECTION_NAME);

  const agent = await project.agents.createVersion("MyAgent", {
    kind: "prompt",
    model: "gpt-4.1-mini",
    instructions:
      "You are a helpful agent that can use Bing Custom Search tools to assist users. Use the available Bing Custom Search tools to answer questions and perform tasks.",
    tools: [
      {
        type: "bing_custom_search_preview",
        bing_custom_search_preview: {
          search_configurations: [
            {
              project_connection_id: bingCustomConnection.id,
              instance_name: CUSTOM_SEARCH_INSTANCE_NAME,
            },
          ],
        },
      },
    ],
  });
  console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);

  // Prompt user for input
  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
  });

  const userInput = await new Promise<string>((resolve) => {
    rl.question(
      "Enter your question for the Bing Custom Search agent (e.g., 'Tell me more about foundry agent service'): \n",
      (answer) => {
        rl.close();
        resolve(answer);
      },
    );
  });

  // Send initial request that will trigger the Bing Custom Search tool
  const streamResponse = await openai.responses.create(
    {
      input: userInput,
      stream: true,
    },
    {
      body: {
        agent: { name: agent.name, type: "agent_reference" },
      },
    },
  );

  // Process the streaming response
  for await (const event of streamResponse) {
    if (event.type === "response.created") {
      console.log(`Follow-up response created with ID: ${event.response.id}`);
    } else if (event.type === "response.output_text.delta") {
      process.stdout.write(event.delta);
    } else if (event.type === "response.output_text.done") {
      console.log("\n\nFollow-up response done!");
    } else if (event.type === "response.output_item.done") {
      if (event.item.type === "message") {
        const item = event.item;
        if (item.content && item.content.length > 0) {
          const lastContent = item.content[item.content.length - 1];
          if (lastContent.type === "output_text" && lastContent.annotations) {
            for (const annotation of lastContent.annotations) {
              if (annotation.type === "url_citation") {
                console.log(
                  `URL Citation: ${annotation.url}, Start index: ${annotation.start_index}, End index: ${annotation.end_index}`,
                );
              }
            }
          }
        }
      }
    } else if (event.type === "response.completed") {
      console.log("\nFollow-up completed!");
    }
  }

  // Clean up resources by deleting the agent version
  // This prevents accumulation of unused resources in your project
  console.log("\nCleaning up resources...");
  await project.agents.deleteVersion(agent.name, agent.version);
  console.log("Agent deleted");

  console.log("\nBing Custom Search agent sample completed!");
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

O que este código faz

Este exemplo cria um agente com Grounding com a ferramenta Bing Custom Search que pesquisa dentro dos seus domínios configurados. Quando executas o código:

  1. Cria um AIProjectClient e autentica usando as suas credenciais Azure.
  2. Cria um agente com a ferramenta Bing Custom Search configurada usando a sua instância de pesquisa personalizada.
  3. Solicitações para a entrada do utilizador durante a execução através da linha de comandos.
  4. O agente utiliza a ferramenta Bing Custom Search para pesquisar apenas nos domínios especificados e transmite a resposta.
  5. Processa eventos em streaming e extrai citações URL com as suas posições no texto.
  6. Limpa eliminando a versão do agente.

Entradas necessárias

  • Atualize as constantes PROJECT_ENDPOINT, CUSTOM_SEARCH_CONNECTION_NAME e CUSTOM_SEARCH_INSTANCE_NAME no código com os seus valores.
  • Azure credenciais configuradas para DefaultAzureCredential.
  • Entrada do utilizador fornecida em tempo de execução via consola.

Produção esperada

Agent created (id: asst_abc123, name: MyAgent, version: 1)
Enter your question for the Bing Custom Search agent (e.g., 'Tell me more about foundry agent service'):
Tell me more about foundry agent service
Follow-up response created with ID: resp_xyz789
Microsoft Foundry Agent Service enables you to build...

Follow-up response done!
URL Citation: https://learn.microsoft.com/azure/ai-foundry/agents, Start index: 0, End index: 89

Follow-up completed!

Cleaning up resources...
Agent deleted

Bing Custom Search agent sample completed!

Usa o aterramento do Bing num agente Java

Adicione a dependência ao seu pom.xml:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-ai-agents</artifactId>
    <version>2.0.0</version>
</dependency>

Crie um agente com suporte no Bing

import com.azure.ai.agents.AgentsClient;
import com.azure.ai.agents.AgentsClientBuilder;
import com.azure.ai.agents.ResponsesClient;
import com.azure.ai.agents.models.*;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;

import java.util.Arrays;
import java.util.Collections;

public class BingGroundingExample {
    public static void main(String[] args) {
        // Format: "https://resource_name.ai.azure.com/api/projects/project_name"
        String projectEndpoint = "your_project_endpoint";
        String bingConnectionId = "my-bing-connection-id";

        AgentsClientBuilder builder = new AgentsClientBuilder()
            .credential(new DefaultAzureCredentialBuilder().build())
            .endpoint(projectEndpoint);

        AgentsClient agentsClient = builder.buildAgentsClient();
        ResponsesClient responsesClient = builder.buildResponsesClient();

        // Create Bing grounding tool with connection configuration
        BingGroundingTool bingTool = new BingGroundingTool(
            new BingGroundingSearchToolParameters(Arrays.asList(
                new BingGroundingSearchConfiguration(bingConnectionId)
            ))
        );

        // Create agent with Bing grounding tool
        PromptAgentDefinition agentDefinition = new PromptAgentDefinition("gpt-4.1-mini")
            .setInstructions("You are a helpful assistant. Use Bing to find up-to-date information.")
            .setTools(Collections.singletonList(bingTool));

        AgentVersionDetails agent = agentsClient.createAgentVersion("bing-grounding-agent", agentDefinition);
        System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion());

        // Create a response
        AgentReference agentReference = new AgentReference(agent.getName())
            .setVersion(agent.getVersion());

        Response response = responsesClient.createAzureResponse(
            new AzureCreateResponseOptions().setAgentReference(agentReference),
            ResponseCreateParams.builder()
                .input("What are the latest developments in AI?"));

        System.out.println("Response: " + response.output());

        // Clean up
        agentsClient.deleteAgentVersion(agent.getName(), agent.getVersion());
    }
}

Como funciona

A consulta do utilizador é a mensagem que um utilizador final envia a um agente, como *"devo levar um guarda-chuva comigo hoje?" Estou em Seattle." *Instruções são a mensagem do sistema que um programador pode fornecer para partilhar contexto e fornecer instruções ao modelo de IA sobre como usar várias ferramentas ou comportar-se.

Quando um utilizador envia uma consulta, a implementação do modelo de IA do cliente processa-a primeiro (usando as instruções fornecidas) para depois realizar uma consulta de pesquisa Bing ( que é visível para os programadores). A ancoragem com o Bing retorna resultados de pesquisa relevantes para a implementação do modelo do cliente, para gerar o resultado final.

Nota

Quando usa Grounding com Bing Search ou Grounding com Bing Custom Search, a única informação enviada ao Bing é a consulta de pesquisa do Bing, os parâmetros da ferramenta e a sua chave de recursos. O serviço não envia qualquer informação específica do utilizador final. A tua chave de recursos é enviada para o Bing apenas para fins de faturação e limitação de taxas.

A autorização ocorre entre o serviço Grounding com Bing Search ou Grounding com o serviço de Bing Custom Search e o Serviço de Agente Foundry. Qualquer consulta de pesquisa Bing que o serviço gere e envie para o Bing para efeitos de grounding é transferida, juntamente com a chave de recursos, para fora do limite de conformidade do Azure para o serviço de pesquisa Grounding with Bing. A integração com a Pesquisa Bing está sujeita aos termos do Bing e não possui os mesmos padrões de conformidade e certificações que o Serviço de Agente, conforme descrito nos Termos de Utilização. É responsável por avaliar se a utilização do Grounding com o Bing Search ou do Grounding com o Bing Custom Search no seu agente satisfaz as suas necessidades e requisitos.

As transações com o recurso Grounding com Bing são contabilizadas pelo número de vezes que a ferramenta é chamada por execução. Pode ver quantas chamadas de ferramenta são feitas a partir da etapa de execução.

Desenvolvedores e utilizadores finais não têm acesso ao conteúdo bruto devolvido pelo Grounding com o Bing Search. A resposta modelo, no entanto, inclui citações com ligações para os sites usados para gerar a resposta, e um link para a consulta Bing usada na pesquisa. Pode obter a resposta do modelo acedendo aos dados da conversa criada. Estas duas referências devem ser mantidas e exibidas exatamente na forma fornecida pela Microsoft, conforme os Requisitos de Utilização e Exibição do Grounding with Bing Search. Consulte a secção sobre como apresentar o Grounding nos resultados de pesquisa do Bing para mais detalhes.

Como mostrar resultados de pesquisa

De acordo com os termos de uso e requisitos de utilização e exibição do Grounding with Bing, precisa de mostrar tanto os URLs do site como os URLs das consultas de pesquisa do Bing na sua interface personalizada. Pode encontrar esta informação na resposta da API, no arguments parâmetro. Para renderizar a página web, substitua o endpoint dos URLs de consulta de pesquisa Bing por www.bing.com e o URL de consulta de pesquisa Bing ficará como https://www.bing.com/search?q={search query}.

Uma captura de ecrã que mostra citações para os resultados de pesquisa do Bing.

Fundamentação com configuração Bing Custom Search

Grounding com o Bing Custom Search é uma ferramenta poderosa que pode utilizar para selecionar um subespaço da web e limitar o conhecimento de referência do seu agente. Aqui ficam algumas dicas para o ajudar a tirar pleno partido desta capacidade:

  • Se possui um site público que pretende incluir na pesquisa mas o Bing ainda não indexou, consulte as Diretrizes para Webmasters do Bing para detalhes sobre como indexar o seu site. A documentação do webmaster também fornece detalhes sobre como fazer o Bing rastrear o seu site se o índice estiver desatualizado.
  • Precisas de pelo menos a função de contribuinte no recurso Bing Custom Search para criar uma configuração.
  • Só pode bloquear certos domínios e fazer uma pesquisa no resto da web (por exemplo, no site de um concorrente).
  • A pesquisa com o Bing Custom Search só retorna resultados para domínios e páginas web que são públicos e indexados pelo Bing.
    • Domínio (por exemplo, https://www.microsoft.com)
    • Domínio e caminho (por exemplo, https://www.microsoft.com/surface)
    • Página web (por exemplo, https://www.microsoft.com/en-us/p/surface-earbuds/8r9cpq146064)

Parâmetros opcionais

Quando adiciona a ferramenta Grounding com Bing Search ou Grounding com Bing Custom Search ao seu agente, pode passar os seguintes parâmetros. Estes parâmetros vão impactar a saída da ferramenta, e o modelo de IA pode não utilizar totalmente todas as saídas. Consulte os exemplos de código para informações sobre o suporte a versões da API e como passar estes parâmetros.

Nome Valor Tipo Obrigatório
count O número de resultados de pesquisa a devolver na resposta. O valor padrão é 5 e o valor máximo é 50. O número real entregue pode ser inferior ao solicitado. É possível que várias páginas incluam alguma sobreposição nos resultados. Este parâmetro afeta apenas os resultados das páginas web. É possível que o modelo de IA não utilize todos os resultados de pesquisa devolvidos pelo Bing. UnsignedShort Não
freshness Filtrar os resultados da pesquisa pelos seguintes valores de idade que não diferenciam entre maiúsculas e minúsculas.
Dia: Devolver páginas que o Bing descobriu nas últimas 24 horas.
Semana: Retorne páginas que o Bing descobriu nos últimos 7 dias.
Mês: Devolve páginas que o Bing descobriu nos últimos 30 dias. Para obter artigos descobertos pelo Bing num período de tempo específico, especifique um intervalo de datas na forma: YYYY-MM-DD..YYYY-MM-DD. Por exemplo, freshness=2019-02-01..2019-05-30. Para limitar os resultados a uma única data, defina este parâmetro para uma data específica. Por exemplo, freshness=2019-02-04.
Corda Não
market O mercado de onde vêm os resultados. Normalmente, mkt é o país/região de onde o utilizador está a fazer o pedido. No entanto, pode ser um país/região diferente se o utilizador não estiver localizado num país/região onde o Bing produz resultados. O mercado deve estar na forma: <language>-<country/region>. Por exemplo, en-US. A cadeia de caracteres não diferencia maiúsculas de minúsculas. Para uma lista de possíveis valores de mercado, consulte Códigos de mercado. Se souber, é incentivado a especificar sempre o mercado. Especificar o mercado ajuda o Bing a encaminhar o pedido e a devolver uma resposta adequada e ótima. Se especificar um mercado que não está listado nos códigos de mercado, o Bing utiliza um código de mercado mais adequado baseado num mapeamento interno sujeito a alterações. Corda Não
set_lang A linguagem a usar para os textos da interface do utilizador. Pode especificar a linguagem usando um código de 2 ou 4 letras. O uso de códigos de 4 letras é preferível.
Para uma lista de códigos de línguas suportadas, veja linguagens suportadas pelo Bing.
O Bing carrega as cadeias localizadas se setlang contiver um código de cultura neutro válido de 2 letras (fr) ou um código de cultura específico válido de 4 letras (fr-ca). Por exemplo, para fr-ca, Bing carrega as fr cadeias de código de cultura neutra.
Se setlang não for válido (por exemplo, zh) ou o Bing não suportar o idioma (por exemplo, af, af-na), o Bing assume por predefinição en (inglês).
Para especificar o código de 2 letras, defina este parâmetro para um código de linguagem ISO 639-1.
Para especificar o código de 4 letras, use o formulário <language>-<country/region> onde <language> é um código de língua ISO 639-1 (cultura neutra) e <country/region> é um código de país/região ISO 3166 (cultura específica). Por exemplo, use en-US para inglês dos Estados Unidos.
Embora opcional, deve sempre especificar a língua. Normalmente, define-se setLang para a mesma linguagem especificada por mkt , a menos que o utilizador queira que as strings da interface de utilizador sejam exibidas noutra língua.
Corda Não

Capacidades suportadas e problemas conhecidos

  • A ferramenta Grounding with Bing Search foi concebida para recuperar informação em tempo real da web, não de domínios web específicos. Para obter informação de domínios específicos, utilize a ferramenta Grounding with Bing Custom Search.
  • Não peça ao modelo para resumir uma página inteira.
  • Numa única execução, o modelo de IA avalia os resultados da ferramenta e pode decidir invocar novamente a ferramenta para obter mais informações e contexto. O modelo de IA pode também decidir que partes das saídas da ferramenta são usadas para gerar a resposta.
  • O Foundry Agent Service devolve respostas geradas por IA como saída, pelo que a latência de ponta a ponta é afetada pelo pré-processamento e pós-processamento do modelo.
  • As ferramentas Grounding com Bing Search e Grounding com Bing Custom Search não devolvem a saída da ferramenta aos programadores e utilizadores finais.
  • O grounding com o Bing Search, e o grounding com Bing Custom Search, só funcionam com agentes que não estejam a usar VPN ou endpoints privados. O agente deve ter acesso normal à rede.
  • Use o padrão de citações padrão (os links enviados annotation) para os links das ferramentas Grounding with Bing. Não peça ao modelo para gerar links de citação.

Resolução de problemas

Use esta secção para resolver problemas comuns ao utilizar o Grounding com as ferramentas de pesquisa do Bing.

Erros no formato do ID de ligação

Problema: Mensagem de erro a indicar formato de ID de ligação inválido.

Solução: Verifique se o seu ID de ligação corresponde ao formato exigido:

/subscriptions/{{subscriptionID}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.CognitiveServices/accounts/{{foundryAccountName}}/projects/{{foundryProjectName}}/connections/{{foundryConnectionName}}

Substitua todos os valores provisórios (incluindo {{ e }}) pelos seus identificadores reais de recursos.

Falhas de autenticação

Problema: Erros "Não autorizados" ou "Proibidos" ao criar agentes ou executar consultas.

Solução:

  1. Verifique se tem as funções obrigatórias de RBAC:
    • Papel de Contribuinte ou Proprietário para criar recursos no Bing
    • Azure Gestor de Projeto de IA função para criar as ligações de projeto
  2. Verifique se as suas credenciais do Azure estão devidamente configuradas:
    • Para Python/TypeScript: DefaultAzureCredential pode autenticar
    • Para REST: O token Bearer é válido e não expirou
  3. Executa az login para atualizar as tuas credenciais se estiveres a usar CLI do Azure

Problemas de conectividade de rede

Problema: Grounding com o Bing Search tem tempo esgotado ou não consegue conectar-se.

Solução: Grounding com o Bing Search e o Bing Custom Search não funcionam com VPN ou endpoints privados. Garantir:

  • A sua rede tem acesso normal à internet.
  • Não estás a usar uma ligação VPN.
  • Endpoints privados não estão configurados para o serviço agente.
  • As regras de firewall permitem ligações de saída a serviços Bing.

A pesquisa personalizada não retorna resultados

Problema: A Pesquisa Personalizada do Bing devolve resultados vazios ou não encontra o conteúdo esperado.

Solução:

  • Verifique se a sua instância de pesquisa personalizada está devidamente configurada com os domínios de destino.
  • Garante que os domínios que queres pesquisar são públicos e indexados pelo Bing.
  • Verifique se os domínios configurados correspondem às expectativas da sua consulta de pesquisa.
  • Se o seu site não estiver indexado, consulte as Diretrizes para Webmasters do Bing para instruções de indexação.
  • Espera que o Bing rastreie conteúdos recentemente adicionados ou atualizados (pode demorar vários dias).

Valores de configuração em falta ou inválidos

Problema: O código falha devido a erros de ligação ou respostas de "não encontrado".

Solução: Certifique-se de atualizar todas as constantes necessárias no código com os seus valores reais:

  • PROJECT_ENDPOINT (Python/TypeScript) ou projectEndpoint (C#/Java): URL do endpoint do seu projeto Foundry.
  • Nome ou ID da ligação para o seu recurso Bing.
  • Para pesquisa personalizada: o nome da sua instância de pesquisa personalizada.
  • Para a API REST, defina variáveis de ambiente: FOUNDRY_PROJECT_ENDPOINT, FOUNDRY_MODEL_DEPLOYMENT_NAME, BING_PROJECT_CONNECTION_ID ou BING_CUSTOM_SEARCH_PROJECT_CONNECTION_ID, e AGENT_TOKEN.

O agente não usa a ferramenta de aterramento

Problema: O agente responde sem ligar à ferramenta de ancoragem do Bing.

Solução:

  • Assegure-se de que a sua consulta requer informações atuais que o modelo não conhece.
  • Para uso explícito de ferramentas, defina tool_choice="required" no seu pedido (exemplos Python/TypeScript mostram isto).
  • Verifique se a ferramenta está devidamente configurada na definição do agente.
  • Verifique as instruções do agente incentivam a utilização das ferramentas disponíveis para obter informações atuais.

Nome da instância não encontrado para o Grounding com a ferramenta Bing Custom Search

Problema:

{"error": "Tool_User_Error", "message": "[bing_search] Failed to call Get Custom Search Instance with status 404: {\"error\":{\"code\":\"ResourceNotFound\",\"message\":\"Instance or Customer not found\",\"target\":\"instanceName or customerId\"}}."}

Solução:

  • Certifique-se de que o nome da sua instância está no recurso Grounding with Bing Custom Search que está a usar.
  • Confirma se o nome da tua instância está escrito corretamente.

Os administradores podem usar atribuições de funções RBAC para ativar ou desativar o uso do Grounding com Bing e do Grounding com Bing Custom Search dentro da subscrição ou grupo de recursos.

  1. O administrador regista Microsoft.Bing na subscrição Azure. O administrador precisa de permissões para realizar a /register/action operação para o fornecedor de recursos. Os papéis de Contribuinte e Proprietário incluem esta autorização. Para mais informações sobre como se registar, consulte Azure fornecedores e tipos de recursos.
  2. Depois de o administrador registar Microsoft.Bing, os utilizadores com permissões podem criar, eliminar ou recuperar a chave de recurso de Grounding com Bing e/ou Grounding com Bing Custom Search. Estes utilizadores precisam do papel de Contribuidor ou Proprietário ao nível de subscrição ou grupo de recursos.
  3. Após criar um recurso de Grounding com Bing e/ou Grounding com Bing Custom Search, os utilizadores com permissões podem criar uma ligação Microsoft Foundry para se ligar ao recurso e usá-lo como ferramenta no Foundry Agent Service. Estes utilizadores precisam pelo menos da função Azure AI Project Manager.
  1. O administrador precisa do papel de Proprietário ou Contribuinte na subscrição.
  2. O administrador elimina todos os recursos de Grounding com Bing Search e Grounding com Bing Custom Search na subscrição.
  3. O administrador desregista o fornecedor de recursos Microsoft.Bing na subscrição (não podes cancelar o registo antes de apagar todos os recursos). Para mais informações, consulte Azure fornecedores e tipos de recursos.
  4. O administrador cria uma Azure Policy para impedir a criação de recursos de Grounding com Bing Search e Grounding com Bing Custom Search na sua subscrição, seguindo o exemplo.

Próximos passos