Fundamentación con Búsqueda de Bing
La puesta en tierra con la Búsqueda de Bing permite a los agentes de Azure AI incorporar datos web públicos en tiempo real al generar respuestas. Debe crear un recurso Grounding con Bing Search y a continuación, conectar este recurso a los agentes de Azure AI. Cuando un usuario envía una consulta, los agentes de Azure AI deciden si se debe aprovechar o no la conexión con Bing Search. Si es así, aprovechará Bing para buscar en datos web públicos y devolver fragmentos relevantes. Por último, los agentes de Azure AI usarán fragmentos devueltos para generar una respuesta.
Puede formular preguntas como "¿cuáles son las noticias más importantes hoy" o "cuál es la actualización reciente en el sector minorista de EE. UU.?",que requieren datos públicos en tiempo real.
Los desarrolladores y los usuarios finales no tienen acceso al contenido sin procesar devuelto desde Grounding con Bing Search. Sin embargo, la respuesta incluye citas con vínculos a los sitios web usados para generar la respuesta y un vínculo a la consulta de Bing usada para la búsqueda. Estas dos Referencias deben conservarse y mostrarse en la forma exacta proporcionada por Microsoft, de acuerdo con los Requisitos de uso y visualización de Búsqueda de Bing. Para más información, consulte la sección cómo mostrar Grounding con los resultados de Búsqueda de Bing.
Importante
- El uso de Grounding con Bing Search puede incurrir en costos. Consulte la página de precios para obtener información detallada.
- Al crear y usar un recurso Grounding con Bing Search a través de la experiencia de código primero, como la CLI de Azure o la implementación a través de la plantilla de implementación, acepta estar enlazado y cumplir con los términos disponibles en https://www.microsoft.com/en-us/bing/apis/grounding-legal, que se pueden actualizar de vez en cuando.
Configurar
Nota:
- La puesta en tierra con Bing Search solo funciona con los siguientes modelos de Azure OpenAI:
gpt-3.5-turbo-0125
,gpt-4-0125-preview
,gpt-4-turbo-2024-04-09
,gpt-4o-0513
Cree un agente de Azure AI siguiendo los pasos descritos en el inicio rápido.
Registre manualmente Búsqueda de Bing como proveedor de recursos de Azure. Debe tener permiso a fin de realizar la operación
/register/action
para el proveedor de recursos. El permiso se incluye en los roles Colaborador y Propietario.az provider register --namespace 'Microsoft.Bing'
Los desarrolladores pueden crear un nuevo recurso Grounding con Búsqueda de Bing. Cree un nuevo recurso Grounding con Bing Search en Azure Portal, y seleccione los distintos campos en el formulario de creación. Asegúrese de crear este recurso Grounding con Búsqueda de Bing en el mismo grupo de recursos que el agente de Azure AI, AI Project y otros recursos.
Después de crear un recurso Grounding con Bing Search, puede encontrarlo en Azure Portal. Vaya al grupo de recursos en el que ha creado el recurso y busque el recurso Grounding con Bing Search que ha creado.
Seleccione el recurso Grounding con Bing Search que ha creado y copiado cualquiera de las claves de API.
Vaya al Portal de Azure AI Foundry y seleccione el proyecto de IA (asegúrese de que se encuentra en el mismo grupo de recursos del recurso Grounding con Bing Search). Haga clic en el Centro de administración.
Seleccione + nueva conexión en la página de configuración.
Nota:
Si vuelve a generar la clave de API más adelante, debe actualizar la conexión con la nueva clave.
Seleccione Clave de API en otros tipos de recursos.
Escriba la siguiente información y a continuación, cree una nueva conexión al recurso Grounding con Bing Search.
- Punto de conexión:
https://api.bing.microsoft.com/
- Clave:
YOUR_API_KEY
- Nombre de conexión:
YOUR_CONNECTION_NAME
(usará este nombre de conexión en el código de ejemplo siguiente). - Acceso: puede elegir solo este proyecto o compartirlo en todos los proyectos. Solo tiene que asegurarse de que, en el código de ejemplo siguiente, el proyecto para el que escribió la cadena de conexión tenga acceso a esta conexión.
- Punto de conexión:
Cómo mostrar Grounding con los resultados de Bing Search
Según grounding con los términos de uso y uso de Bing y los requisitos de visualización, debe mostrar las direcciones URL del sitio web y las direcciones URL de consulta de búsqueda de Bing en la interfaz personalizada. Puede encontrar direcciones URL del sitio web a través del parámetro annotations
en la respuesta de API y las direcciones URL de consulta de búsqueda de Bing a través de los detalles runstep
. Para representar la página web, se recomienda reemplazar el punto de conexión de las direcciones URL de consulta de búsqueda de Bing por www.bing.com
y la dirección URL de consulta de búsqueda de Bing tendría el aspecto "https://www.bing.com/search?q={search query}"
run_steps = project_client.agents.list_run_steps(run_id=run.id, thread_id=thread.id)
run_steps_data = run_steps['data']
print(f"Last run step detail: {run_steps_data}")
Otras consideraciones legales
Microsoft usará los datos que envíe a Grounding con Bing para mejorar los productos y servicios de Microsoft. Cuando envíe datos personales a este servicio, será responsable de obtener el consentimiento necesario de los interesados. Los Términos de protección de datos de los Términos de Online Services no se aplican a Grounding con Bing.
El uso de Grounding con Bing Search se regirá por los Términos de uso. Al usar Grounding con Bing Search, acepta estar enlazado y cumplir estos Términos de uso.
Paso 1: Creación de un agente con Grounding con Bing Search
Cree un objeto de cliente, que contendrá la cadena de conexión para conectarse al proyecto de IA y a otros recursos.
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import BingGroundingTool
# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customer needs to login to Azure subscription via Azure CLI and set the environment variables
project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)
Paso 2: Habilitación de Grounding con la herramienta de búsqueda de Bing
Para que la herramienta de búsqueda de Grounding con Bing esté disponible para el agente, use una conexión para inicializar la herramienta y adjuntarla al agente. Puede encontrar la conexión en la sección recursos conectados del proyecto en el portal de Azure AI Foundry.
bing_connection = project_client.connections.get(
connection_name=os.environ["BING_CONNECTION_NAME"]
)
conn_id = bing_connection.id
print(conn_id)
# Initialize agent bing tool and add the connection id
bing = BingGroundingTool(connection_id=conn_id)
# Create agent with the bing tool and process assistant run
with project_client:
agent = project_client.agents.create_agent(
model="gpt-4o",
name="my-assistant",
instructions="You are a helpful assistant",
tools=bing.definitions,
headers={"x-ms-enable-preview": "true"}
)
print(f"Created agent, ID: {agent.id}")
Paso 3: creación de una tabla
# Create thread for communication
thread = project_client.agents.create_thread()
print(f"Created thread, ID: {thread.id}")
# Create message to thread
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="What is the top news today",
)
print(f"Created message, ID: {message.id}")
Paso 4: creación de una ejecución y comprobación de la salida
Cree una ejecución y observe que el modelo usa la herramienta Grounding con Bing Search para proporcionar una respuesta a la pregunta del usuario.
# Create and process agent run in thread with tools
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")
# Retrieve run step details to get Bing Search query link
# To render the webpage, we recommend you replace the endpoint of Bing search query URLs with `www.bing.com` and your Bing search query URL would look like "https://www.bing.com/search?q={search query}"
run_steps = project_client.agents.list_run_steps(run_id=run.id, thread_id=thread.id)
run_steps_data = run_steps['data']
print(f"Last run step detail: {run_steps_data}")
if run.status == "failed":
print(f"Run failed: {run.last_error}")
# Delete the assistant when done
project_client.agents.delete_agent(agent.id)
print("Deleted agent")
# Fetch and log all messages
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")