Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Los elementos marcados (versión preliminar) de este artículo se encuentran actualmente en versión preliminar pública. Esta versión preliminar se ofrece sin acuerdo de nivel de servicio y no se recomienda para las cargas de trabajo de producción. Es posible que algunas características no se admitan o que tengan funcionalidades restringidas. Para más información, consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure.
Las trazas de producción son la fuente más representativa para ver cómo se comporta tu agente ante usuarios reales. Este artículo muestra cómo usar la generación de datos en Microsoft Foundry para convertir las trazas que su agente ya emite en un conjunto de datos seleccionado y versionado con el que puede realizar evaluaciones. A continuación, ejecute una evaluación sobre el resultado obtenido. Cuando seleccionas trazas, Foundry utiliza un muestreo inteligente para preseleccionar automáticamente un conjunto representativo, para que obtengas un conjunto de datos de alto valor sin tener que depurarlo manualmente.
Convertir trazas en un conjunto de datos cierra el bucle de observabilidad: el comportamiento de producción que se captura mediante el trazado se convierte en el conjunto de evaluación que se usa para medir y mejorar la calidad. El mismo trabajo también puede generar datos de ajuste fino.
La generación sintética y basada en seguimientos son complementarias: los seguimientos de producción reflejan el comportamiento real del usuario, mientras que la generación sintética cubre escenarios previos y casos perimetrales. Si el agente aún no tiene seguimientos de producción, o si desea ampliar la cobertura más allá del tráfico de producción, consulte Generar un conjunto de datos sintético de evaluación.
Muestreo inteligente
Cuando selecciona un intervalo de tiempo de seguimientos, el servicio no se limita a tomar una muestra aleatoria de ese intervalo. Selecciona automáticamente un conjunto representativo utilizando un muestreo inteligente, que selecciona un conjunto de trazas de alto valor a partir de datos de producción brutos y ruidosos. No configura fases de filtro individuales; el servicio controla la selección por usted. El muestreo inteligente realiza las siguientes tareas:
- Filtra las trazas irrelevantes, como los mensajes de un solo carácter y demás tráfico de baja intención que no aportan ninguna señal para la evaluación.
- Selecciona una muestra diversa y representativa mediante MinHash para que el resultado cubra toda la gama de escenarios de tu agente, en lugar de centrarse en exceso en indicaciones frecuentes y casi idénticas.
- Controla el contenido confidencial , incluidos los datos personales.
Este proceso importa porque las evaluaciones son costosas y la mayoría de las trazas sin procesar aportan poca información útil. Investigaciones recientes muestran que una selección cuidadosa permite alcanzar la misma calidad de evaluación con una pequeña fracción de las trazas originales. Un conjunto representativo genera una mejor señal a un costo menor que evaluar todo. El muestreo inteligente es el mecanismo que hace que la selección de seguimiento sea práctica a escala de producción, por lo que se obtienen conjuntos de datos listos para la evaluación sin escribir código de filtrado o desduplicación personalizados.
El muestreo inteligente utiliza el mismo algoritmo de selección de trazas en las tres experiencias de Foundry:
- Creación de un conjunto de datos a partir de trazas - se aborda en este artículo.
- Crear una evaluación basada en trazas - evalúe las trazas existentes con una muestra representativa del periodo de tiempo seleccionado.
- Creación de un evaluador de rúbricas a partir de trazas de producción - el mismo algoritmo de muestreo selecciona las trazas utilizadas como entrada.
En el flujo de conjunto de datos basado en seguimiento, la opción Muestreo inteligente aparece en la interfaz de usuario de intervalo de tiempo y está activada de forma predeterminada.
Prerrequisitos
- SDK de Python versión
2.2.0o posterior:pip install "azure-ai-projects>=2.2.0" azure-identity(solo la ruta del SDK) - Dirección URL del punto de conexión del proyecto Microsoft Foundry con el formato
https://<your-resource>.services.ai.azure.com/api/projects/<your-project> - Rol de usuario de Foundry o superior en el proyecto.
- Configure seguimiento para un agente implementado que emita seguimientos. Los agentes de Foundry emiten trazas automáticamente, y también se admiten agentes de terceros con instrumentación de OpenTelemetry. Para conocer los pasos de configuración, consulte Configuración del seguimiento del agente.
Regiones admitidas para seguimientos a la generación de conjuntos de datos
Se admiten seguimientos a la generación de conjuntos de datos en las siguientes regiones:
- Norte de Emiratos Árabes Unidos
- Oeste de EE. UU. 3
- Centro-Norte de EE. UU
- Este de EE. UU.
- Oeste de Europa
- Centro-sur de EE. UU.
- Norte de Suiza
- Centro de Suecia
- Este de EE. UU. 2
- Oeste de EE. UU.
- Centro de Francia
- Norte de Sudáfrica
- Este de Australia
- Japón Oriental
- Sur de Reino Unido
- Norway East
- Poland Central
- South India
- Centro-oeste de Alemania
- Norte de Italia
Generar un conjunto de datos de evaluación a partir de seguimientos (portal)
Puede crear un conjunto de datos directamente a partir de trazas en el portal sin escribir código. Este método es la forma más rápida de convertir el tráfico de producción reciente en un conjunto de datos de evaluación.
En el portal, abra la pestaña Generación de datos . Seleccione Crear conjunto de datos>a partir de seguimientos.
En el cuadro de diálogo Crear conjunto de datos , confirme el subtítulo Curar un conjunto de datos a partir de seguimientos de producción para su evaluación o ajuste. A continuación, configure el conjunto de datos:
- Uso del conjunto de datos: establezca en Evaluación.
- Nombre: escriba un nombre de conjunto de datos.
- Agente: seleccione el agente implementado cuyos seguimientos desea usar.
- Intervalo de fechas: elija la ventana de la que extraer seguimientos, como el último día o los últimos siete días.
- Ejemplos máximos: establezca el límite en las filas del conjunto de datos. Use al menos 15 ejemplos.
Seleccione Crear para enviar el trabajo. La generación de conjuntos de datos se ejecuta como un trabajo en segundo plano. Puede realizar un seguimiento de su estado en la pestaña Generación de datos .
Cuando finalice el trabajo, vaya a la pestaña Datos y seleccione el conjunto de datos para obtener una vista previa de las filas generadas, incluida la descripción, la consulta y la respuesta de cada una. Desde allí puede descargar o eliminar el conjunto de datos.
Use el conjunto de datos. Los trabajos de generación finalizados se enlazan directamente con el siguiente paso: los trabajos de evaluación se enlazan para iniciar una ejecución de evaluación, y los trabajos de ajuste fino se enlazan para iniciar un trabajo de ajuste fino.
Genera un conjunto de datos de evaluación a partir de trazas (SDK)
Impulse su agente implementado con tráfico realista y, a continuación, utilice esas conversaciones para crear un conjunto de datos de evaluación. El flujo es: definir una ventana de tiempo, apuntar al agente, establecer un límite de filas y enviar el trabajo.
En primer lugar, cree un AIProjectClient usando el punto de conexión del proyecto y DefaultAzureCredential. Puede encontrar todas las operaciones de generación de datos en project_client.beta.datasets.
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
credential = DefaultAzureCredential()
project_client = AIProjectClient(
endpoint="https://<your-resource>.services.ai.azure.com/api/projects/<your-project>",
credential=credential,
)
Note
Application Insights tarda entre 30 y 90 segundos en ingerir intervalos. Si envía el trabajo demasiado rápido después de capturar el tráfico, la tarea se ejecuta sobre una ventana vacía y no genera muestras.
import time
from datetime import datetime, timedelta, timezone
from azure.ai.projects.models import (
DataGenerationJob,
DataGenerationJobInputs,
DataGenerationJobOutputOptions,
DataGenerationJobScenario,
DatasetDataGenerationJobOutput,
JobStatus,
TracesDataGenerationJobOptions,
TracesDataGenerationJobSource,
)
AGENT_NAME = "retail-agent"
TERMINAL_STATUSES = {JobStatus.SUCCEEDED, JobStatus.FAILED, JobStatus.CANCELLED}
# 1. Record the window around your traffic.
end_time = datetime.now(tz=timezone.utc)
start_time = end_time - timedelta(days=7)
# 2. Define the job. Note the EVALUATION scenario.
job = DataGenerationJob(
inputs=DataGenerationJobInputs(
name="retail-agent-eval-set",
scenario=DataGenerationJobScenario.EVALUATION,
sources=[
TracesDataGenerationJobSource(
description="Application Insights conversation traces for the Foundry agent.",
agent_name=AGENT_NAME,
start_time=start_time,
end_time=end_time,
# agent_version="3", # pin to a specific version (recommended)
),
],
options=TracesDataGenerationJobOptions(
# Service requires max_samples to be between 15 and 1000.
max_samples=100,
),
output_options=DataGenerationJobOutputOptions(name="retail-agent-eval-set"),
),
)
# 3. Submit and poll until complete.
job = project_client.beta.datasets.create_generation_job(job=job)
print(f"Submitted {job.id} (status: {job.status})")
while job.status not in TERMINAL_STATUSES:
time.sleep(10)
job = project_client.beta.datasets.get_generation_job(job_id=job.id)
print(f" status: {job.status}")
if job.status != JobStatus.SUCCEEDED:
message = job.error.message if job.error is not None else "<no error message>"
raise RuntimeError(f"Job ended in {job.status}: {message}")
# 4. Resolve the generated dataset.
output_name = ""
output_version = ""
for output in (job.result.outputs if job.result is not None else None) or []:
if isinstance(output, DatasetDataGenerationJobOutput):
output_name = output.name or ""
output_version = output.version or ""
break
dataset = project_client.datasets.get(name=output_name, version=output_version)
print(f"Generated dataset: {dataset.name} v{dataset.version} (id: {dataset.id})")
if job.result is not None and job.result.generated_samples is not None:
print(f"Generated samples: {job.result.generated_samples}")
El trabajo genera un conjunto de datos versionado registrado en tu proyecto. El número de filas está limitado a max_samples, pero puede ser menor si la ventana no contiene suficientes trazas distintas y de alta calidad después del muestreo inteligente.
Tanto si ha creado el conjunto de datos desde el portal como desde el SDK, puede obtener una vista previa en la pestaña Datos para inspeccionar las filas generadas antes de evaluarla. También puede descargarlo o eliminarlo desde allí.
Ejecución de una evaluación en el conjunto de datos generado
Una vez que el conjunto de datos esté disponible, evalúe su agente con ese conjunto de datos. El conjunto de datos generado usa el esquema de consulta-respuesta estándar, por lo que funciona directamente con las API de evaluación. Pase el name y la version del conjunto de datos (o su id) a su ejecución de evaluación.
Para obtener el flujo de evaluación completa, incluida la selección de evaluadores y la revisión de los resultados, consulte Ejecución de evaluaciones en la nube.
Administración de trabajos de generación de datos
Use project_client.beta.datasets las API para enumerar, inspeccionar, cancelar y eliminar trabajos de generación de datos.
from azure.ai.projects.models import DataGenerationJobScenario
# List recent evaluation jobs.
for job in project_client.beta.datasets.list_generation_jobs(
limit=20,
order="desc",
scenario=DataGenerationJobScenario.EVALUATION,
):
print(f"{job.id} {job.status:<12} {job.inputs.name}")
# Cancel a running job.
project_client.beta.datasets.cancel_generation_job(job_id="job_...")
# Delete a job record (produced datasets are not deleted).
project_client.beta.datasets.delete_generation_job(job_id="job_...")
Limitaciones
- El recurso de Application Insights conectado al proyecto foundry debe permitir el acceso a la red pública para que el servicio pueda consultar los datos de Application Insights. Si Application Insights está detrás de un ámbito Private Link de Azure Monitor, asegúrese de que el acceso a consultas de red pública esté habilitado.
- Si el proyecto foundry está conectado a su propia cuenta de almacenamiento, el acceso a la red pública debe estar habilitado en esa cuenta de almacenamiento para la creación correcta del conjunto de datos.
procedimientos recomendados
- Ancle
agent_versionpara trabajos de seguimiento. Sin él, el trabajo mezcla intervalos de todas las versiones activas, lo que puede incluir comportamientos obsoletos y debilitar la señal de evaluación. - Compruebe
generated_samplesdespués de cada trabajo.max_sampleses un techo, no una garantía. El muestreo inteligente elimina duplicados y seguimientos de baja calidad, por lo que puedes obtener menos filas que el límite. - Use un período de tiempo representativo. Normalmente, una ventana de siete días captura suficiente variedad. Los intervalos breves en torno a un incidente conocido son útiles para crear conjuntos de regresión específicos.
Contenido relacionado
- Generar un conjunto de datos de evaluación sintético—crea un conjunto de datos de evaluación sin trazas de producción.
- Seguimiento de agentes en Microsoft Foundry
- Ejecución de evaluaciones en la nube