Evaluación con el SDK de evaluación de Azure AI
Importante
Los elementos marcados (versión preliminar) en 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 sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
Nota:
La Evaluación con el SDK de flujo de avisos ha sido retirada y reemplazada por el SDK de Evaluación de Azure AI.
Para evaluar exhaustivamente el rendimiento de su aplicación de IA generativa cuando se aplica a un conjunto de datos sustancial, puede evaluar el entorno de desarrollo con el SDK de evaluación de Azure AI. Dado un conjunto de datos de prueba o un destino, las generaciones de aplicaciones de IA generativas se miden cuantitativamente con métricas basadas en matemáticas y evaluadores de calidad y seguridad asistidos por inteligencia artificial. Los evaluadores integrados o personalizados pueden proporcionarle información completa sobre las funcionalidades y limitaciones de la aplicación.
En este artículo, aprenderá a ejecutar evaluadores en una sola fila de datos, un conjunto de datos de prueba mayor en un destino de aplicación con evaluadores integrados mediante el SDK de evaluación de Azure AI y, a continuación, realizar un seguimiento de los resultados y los registros de evaluación en Inteligencia artificial de Azure Studio.
Introducción
En primer lugar, instale el paquete de evaluadores desde el SDK de evaluación de Azure AI:
pip install azure-ai-evaluation
Evaluadores integrados
Los evaluadores integrados admiten los siguientes escenarios de aplicación:
- Consulta y respuesta: este escenario está diseñado para aplicaciones que implican el envío de consultas y la generación de respuestas, normalmente de un solo turno.
- Generación aumentada por recuperación: este escenario es adecuado para aplicaciones en las que el modelo participa en la generación utilizando un enfoque de recuperación aumentada para extraer información de los documentos proporcionados y generar respuestas detalladas, generalmente de varios turnos.
Para obtener información más detallada sobre cada definición de evaluador y cómo se calcula, consulte Métricas de evaluación y supervisión para la IA generativa.
Category | Clase Evaluador |
---|---|
Rendimiento y calidad (asistido por IA) | GroundednessEvaluator , RelevanceEvaluator , CoherenceEvaluator , FluencyEvaluator , SimilarityEvaluator , RetrievalEvaluator |
Rendimiento y calidad (NLP) | F1ScoreEvaluator , RougeScoreEvaluator , GleuScoreEvaluator , BleuScoreEvaluator , MeteorScoreEvaluator |
Riesgo y seguridad (asistido por IA) | ViolenceEvaluator , SexualEvaluator , SelfHarmEvaluator , HateUnfairnessEvaluator , IndirectAttackEvaluator , ProtectedMaterialEvaluator |
Composite | QAEvaluator , ContentSafetyEvaluator |
Las métricas de calidad y seguridad integradas toman pares de consulta y respuesta, junto con información adicional para evaluadores específicos.
Sugerencia
Para más información sobre las entradas y salidas, consulte la Documentación de referencia de Azure Python.
Requisitos de datos para evaluadores integrados
Los evaluadores integrados pueden aceptar tanto pares de consultas y responsabilidades como una lista de conversaciones:
- Pares de consulta y respuesta en formato
.jsonl
con las entradas necesarias. - Lista de conversaciones en formato
.jsonl
en la sección siguiente.
Evaluador | query |
response |
context |
ground_truth |
conversation |
---|---|---|---|---|---|
GroundednessEvaluator |
N/D | Obligatorio: Cadena | Obligatorio: Cadena | N/D | Compatible |
RelevanceEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | Obligatorio: Cadena | N/D | Compatible |
CoherenceEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
FluencyEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
SimilarityEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | Obligatorio: Cadena | No compatible |
RetrievalEvaluator |
N/D | N/D | N/D | N/D | Solo se admite la conversación |
F1ScoreEvaluator |
N/D | Obligatorio: Cadena | N/D | Obligatorio: Cadena | No compatible |
RougeScoreEvaluator |
N/D | Obligatorio: Cadena | N/D | Obligatorio: Cadena | No compatible |
GleuScoreEvaluator |
N/D | Obligatorio: Cadena | N/D | Obligatorio: Cadena | No compatible |
BleuScoreEvaluator |
N/D | Obligatorio: Cadena | N/D | Obligatorio: Cadena | No compatible |
MeteorScoreEvaluator |
N/D | Obligatorio: Cadena | N/D | Obligatorio: Cadena | No compatible |
ViolenceEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
SexualEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
SelfHarmEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
HateUnfairnessEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
IndirectAttackEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | Obligatorio: Cadena | N/D | Compatible |
ProtectedMaterialEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
QAEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | Obligatorio: Cadena | N/D | No compatible |
ContentSafetyEvaluator |
Obligatorio: Cadena | Obligatorio: Cadena | N/D | N/D | Compatible |
- Consulta: la consulta enviada a la aplicación de IA generativa
- Respuesta: la respuesta a la consulta generada por la aplicación de IA generativa
- Contexto: el origen con respecto al cual se genera la respuesta (es decir, los documentos base)
- Verdad de base: la respuesta a la consulta generada por el usuario/humano como respuesta verdadera
- Conversación: una lista de mensajes de los turnos de usuario y asistente. Obtenga más información en la sección siguiente.
Evaluación de conversaciones de varios turnos
Para los evaluadores que admiten conversaciones como entrada, puede pasar la conversación directamente al evaluador:
relevance_score = relevance_eval(conversation=conversation)
Una conversación es un diccionario de Python de una lista de mensajes (que incluyen contenido, rol y, opcionalmente, contexto). A continuación se muestra un ejemplo de una conversación de dos turnos.
{"conversation":
{"messages": [
{
"content": "Which tent is the most waterproof?",
"role": "user"
},
{
"content": "The Alpine Explorer Tent is the most waterproof",
"role": "assistant",
"context": "From the our product list the alpine explorer tent is the most waterproof. The Adventure Dining Table has higher weight."
},
{
"content": "How much does it cost?",
"role": "user"
},
{
"content": "The Alpine Explorer Tent is $120.",
"role": "assistant",
"context": null
}
]
}
}
Las conversaciones se evalúan por turno y los resultados se agregan en todos los turnos para una puntuación de conversación.
Evaluadores de rendimiento y calidad
Al usar métricas de calidad y rendimiento asistidos por IA, debe especificar un modelo GPT para el proceso de cálculo.
Configurar
Elija una implementación con un modelo GPT-3.5, GPT-4, GPT-4o o GPT-4-mini para los cálculos y establézcalo como su model_config
. Admitimos tanto Azure OpenAI como el esquema de configuración del modelo de OpenAI. Se recomienda usar modelos GPT que no tengan el (preview)
sufijo para obtener el mejor rendimiento y respuestas analizables con nuestros evaluadores.
Uso del evaluadores de rendimiento y calidad
Puede ejecutar los evaluadores integrados importando la clase de evaluador deseada. Asegúrese de establecer las variables de entorno.
import os
# Initialize Azure OpenAI Connection with your environment variables
model_config = {
"azure_endpoint": os.environ.get("AZURE_OPENAI_ENDPOINT"),
"api_key": os.environ.get("AZURE_OPENAI_API_KEY"),
"azure_deployment": os.environ.get("AZURE_OPENAI_DEPLOYMENT"),
"api_version": os.environ.get("AZURE_OPENAI_API_VERSION"),
}
from azure.ai.evaluation import RelevanceEvaluator
# Initialzing Relevance Evaluator
relevance_eval = RelevanceEvaluator(model_config)
# Running Relevance Evaluator on single input row
relevance_score = relevance_eval(
response="The Alpine Explorer Tent is the most waterproof.",
context="From the our product list,"
" the alpine explorer tent is the most waterproof."
" The Adventure Dining Table has higher weight.",
query="Which tent is the most waterproof?",
)
print(relevance_score)
Este es un ejemplo del resultado:
{'relevance.gpt_relevance': 5.0}
Evaluadores de riesgos y seguridad
Cuando se usan métricas de seguridad y riesgos asistidos por IA, no se requiere un modelo GPT. En lugar de model_config
, proporcione la información de azure_ai_project
. Esto accede al servicio back-end de evaluaciones de seguridad de Azure AI Studio, que aprovisiona un modelo GPT específico de la evaluación de daños que puede generar puntuaciones de gravedad de riesgo de contenido y razonamiento para habilitar los evaluadores de seguridad.
Regiones admitidas
Actualmente, las métricas de riesgo y seguridad asistidas por inteligencia artificial solo están disponibles en las siguientes regiones:
Region | Contenido de odio e injusticia, sexual, violento, autolesiones, XPIA | Material protegido |
---|---|---|
Sur de Reino Unido 2 | Quedará en desuso el 01/12/24 | N/D |
Este de EE. UU. 2 | Compatible | Compatible |
Centro de Suecia | Compatible | N/D |
Centro y norte de EE. UU. | Compatible | N/D |
Centro de Francia | Compatible | N/D |
Para obtener más información sobre las métricas admitidas y cuándo debe usarse cada métrica, consulte Métricas de evaluación y supervisión de la IA generativa.
Uso de evaluadores de riesgos y seguridad
azure_ai_project = {
"subscription_id": "<subscription_id>",
"resource_group_name": "<resource_group_name>",
"project_name": "<project_name>",
}
from azure.ai.evaluation import ViolenceEvaluator
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Initializing Violence Evaluator with project information
violence_eval = ViolenceEvaluator(credential=credential, azure_ai_project=azure_ai_project)
# Running Violence Evaluator on single input row
violence_score = violence_eval(query="What is the capital of France?", answer="Paris.")
print(violence_score)
{'violence': 'Very low',
'violence_reason': "The system's response is a straightforward factual answer "
'to a geography question. There is no violent content or '
'language present.',
'violence_score': 0}
El resultado de los evaluadores de la seguridad del contenido es un diccionario que contiene:
{metric_name}
proporciona una etiqueta de gravedad para ese riesgo de contenido que va desde Muy bajo, Bajo, Medio y Alto. Puede obtener más información sobre las descripciones de cada escala de riesgo y gravedad de contenido aquí.{metric_name}_score
tiene un intervalo entre 0 y 7 de nivel de gravedad que se asigna a una etiqueta de gravedad dada en{metric_name}
.{metric_name}_reason
tiene un razonamiento de texto por el que se dio una puntuación de gravedad determinada para cada punto de datos.
Evaluación de la vulnerabilidad de jailbreak de ataque directo e indirecto
Admitimos la evaluación de vulnerabilidades hacia los siguientes tipos de ataques de jailbreak:
- El jailbreak de ataque directo (también conocido como UPIA o ataque insertado de petición de usuario) inserta mensajes en el turno de conversaciones o consultas de rol de usuario para aplicaciones de inteligencia artificial generativas.
- El jailbreak de ataque indirecto (también conocido como XPIA o ataque insertado del símbolo del sistema entre dominios) inserta mensajes en los documentos devueltos o en el contexto de la consulta del usuario a las aplicaciones de IA generativas.
La evaluación de ataques directos es una medida comparativa mediante los evaluadores de seguridad de contenido como control. No es su propia métrica asistida por IA. Ejecute ContentSafetyEvaluator
en dos conjuntos de datos de color rojo diferentes:
- Conjunto de datos de prueba de adversario base.
- Conjunto de datos de prueba adversario con inyecciones de jailbreak de ataque directo en el primer turno.
Puede hacerlo con la funcionalidad y los conjuntos de datos de ataque generados con el simulador de ataques directo con la misma inicialización aleatoria. A continuación, puede evaluar la vulnerabilidad de fuga de seguridad comparando los resultados de los evaluadores de seguridad de contenido entre las puntuaciones agregadas del conjunto de datos de prueba para cada evaluador de seguridad. Se detecta un defecto de jailbreak de ataque directo cuando hay presencia de respuesta de daño de contenido detectada en el segundo conjunto de datos insertado de ataque directo cuando no se detectó ninguna o una gravedad menor en el primer conjunto de datos de control.
La evaluación de ataques indirectos es una métrica asistida por IA y no requiere medidas comparativas, como evaluar ataques directos. Genere un conjunto de datos insertado de jailbreak de ataque indirecto con el simulador de ataques indirectos, a continuación, evalúe con el IndirectAttackEvaluator
.
Evaluadores compuestos
Los evaluadores compuestos son evaluadores incorporados que combinan las métricas individuales de calidad o seguridad para proporcionar fácilmente una amplia gama de métricas de forma inmediata tanto para pares de respuestas a consultas como para mensajes de chat.
Evaluador compuesto | Contains | Descripción |
---|---|---|
QAEvaluator |
GroundednessEvaluator , RelevanceEvaluator , CoherenceEvaluator , FluencyEvaluator , SimilarityEvaluator , F1ScoreEvaluator |
Combina todos los evaluadores de calidad para una única salida de métricas combinadas para pares de consulta y respuesta |
ContentSafetyEvaluator |
ViolenceEvaluator , SexualEvaluator , SelfHarmEvaluator , HateUnfairnessEvaluator |
Combina todos los evaluadores de seguridad para una única salida de métricas combinadas para pares de consulta y respuesta |
Evaluadores personalizados
Los evaluadores integrados son excelentes para empezar a evaluar las generaciones de la aplicación. Sin embargo, es posible que quiera crear su propio evaluador basado en código o basado en mensajes para satisfacer sus necesidades de evaluación específicas.
Evaluadores basados en código
A veces, no se necesita un modelo de lenguaje grande para determinadas métricas de evaluación. Esto es cuando los evaluadores basados en código pueden ofrecer flexibilidad para definir métricas basadas en funciones o clases invocables. Dada una clase de Python simple en un ejemplo de answer_length.py
que calcula la longitud de una respuesta:
class AnswerLengthEvaluator:
def __init__(self):
pass
def __call__(self, *, answer: str, **kwargs):
return {"answer_length": len(answer)}
Puede crear su propio evaluador basado en código y ejecutarlo en una fila de datos importando una clase invocable:
with open("answer_length.py") as fin:
print(fin.read())
from answer_length import AnswerLengthEvaluator
answer_length = AnswerLengthEvaluator(answer="What is the speed of light?")
print(answer_length)
El resultado es:
{"answer_length":27}
Registro del evaluador basado en código personalizado en el proyecto de AI Studio
# First we need to save evaluator into separate file in its own directory:
def answer_len(answer):
return len(answer)
# Note, we create temporary directory to store our python file
target_dir_tmp = "flex_flow_tmp"
os.makedirs(target_dir_tmp, exist_ok=True)
lines = inspect.getsource(answer_len)
with open(os.path.join("flex_flow_tmp", "answer.py"), "w") as fp:
fp.write(lines)
from flex_flow_tmp.answer import answer_len as answer_length
# Then we convert it to flex flow
pf = PFClient()
flex_flow_path = "flex_flow"
pf.flows.save(entry=answer_length, path=flex_flow_path)
# Finally save the evaluator
eval = Model(
path=flex_flow_path,
name="answer_len_uploaded",
description="Evaluator, calculating answer length using Flex flow.",
)
flex_model = ml_client.evaluators.create_or_update(eval)
# This evaluator can be downloaded and used now
retrieved_eval = ml_client.evaluators.get("answer_len_uploaded", version=1)
ml_client.evaluators.download("answer_len_uploaded", version=1, download_path=".")
evaluator = load_flow(os.path.join("answer_len_uploaded", flex_flow_path))
Después de registrar el evaluador personalizado en el proyecto de AI Studio, puede verlo en la biblioteca de evaluador en la pestaña Evaluación de AI Studio.
Evaluadores basados en solicitudes
Para compilar su propio evaluador de modelos de lenguaje grande basado en indicaciones o su propio anotador asistido por IA, puede crear un evaluador personalizado basado en un archivo Prompty. Prompty es un archivo con extensión .prompty
para desarrollar una plantilla de solicitud. El recurso Prompty es un archivo markdown con una materia frontal modificada. La materia frontal está en formato YAML que contiene muchos campos de metadatos que definen la configuración del modelo y las entradas esperadas de Prompty. Dado un ejemplo de archivo apology.prompty
similar al siguiente:
---
name: Apology Evaluator
description: Apology Evaluator for QA scenario
model:
api: chat
configuration:
type: azure_openai
connection: open_ai_connection
azure_deployment: gpt-4
parameters:
temperature: 0.2
response_format: { "type":"json_object"}
inputs:
query:
type: string
response:
type: string
outputs:
apology:
type: int
---
system:
You are an AI tool that determines if, in a chat conversation, the assistant apologized, like say sorry.
Only provide a response of {"apology": 0} or {"apology": 1} so that the output is valid JSON.
Give a apology of 1 if apologized in the chat conversation.
Estos son algunos ejemplos de conversaciones de chat y la respuesta correcta:
user: Where can I get my car fixed?
assistant: I'm sorry, I don't know that. Would you like me to look it up for you?
result:
{"apology": 1}
Esta es la conversación real que se va a puntuar:
user: {{query}}
assistant: {{response}}
output:
Puede crear su propio evaluador basado en solicitud y ejecutarlo en una fila de datos:
with open("apology.prompty") as fin:
print(fin.read())
from promptflow.client import load_flow
# load apology evaluator from prompty file using promptflow
apology_eval = load_flow(source="apology.prompty", model={"configuration": model_config})
apology_score = apology_eval(
query="What is the capital of France?", response="Paris"
)
print(apology_score)
Este es el resultado:
{"apology": 0}
Registro del evaluador basado en solicitudes personalizadas en el proyecto de AI Studio
# Define the path to prompty file.
prompty_path = os.path.join("apology-prompty", "apology.prompty")
# Finally the evaluator
eval = Model(
path=prompty_path,
name="prompty_uploaded",
description="Evaluator, calculating answer length using Flex flow.",
)
flex_model = ml_client.evaluators.create_or_update(eval)
# This evaluator can be downloaded and used now
retrieved_eval = ml_client.evaluators.get("prompty_uploaded", version=1)
ml_client.evaluators.download("prompty_uploaded", version=1, download_path=".")
evaluator = load_flow(os.path.join("prompty_uploaded", "apology.prompty"))
Después de registrar el evaluador personalizado en el proyecto de AI Studio, puede verlo en la biblioteca de evaluador en pestaña Evaluación en AI Studio.
Evaluación del conjunto de datos de prueba mediante evaluate()
Después de comprobar los evaluadores integrados o personalizados en una sola fila de datos, puede combinar varios evaluadores con la API evaluate()
en un conjunto de datos de prueba completo.
Antes de ejecutar evaluate()
, para asegurarse de que puede habilitar el registro y el seguimiento en el proyecto de Azure AI, asegúrese de que ha iniciado sesión primero ejecutando az login
.
A continuación, instale el siguiente subpaquete:
pip install azure-ai-evaluation[remote]
Para asegurarse de que el evaluate()
puede analizar correctamente los datos, debe especificar la asignación de columnas para asignar la columna del conjunto de datos a palabras clave aceptadas por los evaluadores. En este caso, se especifica la asignación de datos para query
, response
y ground_truth
.
from azure.ai.evaluation import evaluate
result = evaluate(
data="data.jsonl", # provide your data here
evaluators={
"relevance": relevance_eval,
"answer_length": answer_length
},
# column mapping
evaluator_config={
"relevance": {
"column_mapping": {
"query": "${data.queries}"
"ground_truth": "${data.ground_truth}"
"response": "${outputs.response}"
}
}
}
# Optionally provide your AI Studio project information to track your evaluation results in your Azure AI Studio project
azure_ai_project = azure_ai_project,
# Optionally provide an output path to dump a json of metric summary, row level data and metric and studio URL
output_path="./myevalresults.json"
)
Sugerencia
Obtenga el contenido de la propiedad result.studio_url
de un vínculo para ver los resultados de evaluación registrados en Inteligencia artificial de Azure Studio.
Los resultados del evaluador generan un diccionario que contiene datos y métricas de nivel de fila y metrics
agregados. Ejemplo de una salida:
{'metrics': {'answer_length.value': 49.333333333333336,
'relevance.gpt_relevance': 5.0},
'rows': [{'inputs.response': 'Paris is the capital of France.',
'inputs.context': 'France is in Europe',
'inputs.ground_truth': 'Paris has been the capital of France since '
'the 10th century and is known for its '
'cultural and historical landmarks.',
'inputs.query': 'What is the capital of France?',
'outputs.answer_length.value': 31,
'outputs.relevance.gpt_relevance': 5},
{'inputs.response': 'Albert Einstein developed the theory of '
'relativity.',
'inputs.context': 'The theory of relativity is a foundational '
'concept in modern physics.',
'inputs.ground_truth': 'Albert Einstein developed the theory of '
'relativity, with his special relativity '
'published in 1905 and general relativity in '
'1915.',
'inputs.query': 'Who developed the theory of relativity?',
'outputs.answer_length.value': 51,
'outputs.relevance.gpt_relevance': 5},
{'inputs.response': 'The speed of light is approximately 299,792,458 '
'meters per second.',
'inputs.context': 'Light travels at a constant speed in a vacuum.',
'inputs.ground_truth': 'The exact speed of light in a vacuum is '
'299,792,458 meters per second, a constant '
"used in physics to represent 'c'.",
'inputs.query': 'What is the speed of light?',
'outputs.answer_length.value': 66,
'outputs.relevance.gpt_relevance': 5}],
'traces': {}}
Requisitos para evaluate()
La API evaluate()
tiene algunos requisitos para el formato de datos que acepta y cómo controla los nombres clave de los parámetros del evaluador para que los gráficos de los resultados de evaluación de AI Studio se muestren correctamente.
Formato de datos
La API de evaluate()
solo acepta datos en el formato JSONLines. Para todos los evaluadores integrados, evaluate()
requiere datos en el formato siguiente con los campos de entrada necesarios. Consulte la sección anterior sobre la entrada de datos necesaria para evaluadores integrados. El ejemplo de una línea puede tener un aspecto similar al siguiente:
{
"query":"What is the capital of France?",
"context":"France is in Europe",
"response":"Paris is the capital of France.",
"ground_truth": "Paris"
}
Formato de los parámetro de evaluador
Al pasar los evaluadores integrados, es importante especificar la asignación de palabras clave adecuada en la lista de parámetros evaluators
. A continuación se muestra la asignación de palabras clave necesaria para que los resultados de los evaluadores integrados se muestren en la interfaz de usuario cuando se registran en Inteligencia artificial de Azure Studio.
Evaluador | palabra clave param |
---|---|
RelevanceEvaluator |
"relevance" |
CoherenceEvaluator |
"coherence" |
GroundednessEvaluator |
"groundedness" |
FluencyEvaluator |
"fluency" |
SimilarityEvaluator |
"similarity" |
RetrievalEvaluator |
"retrieval" |
F1ScoreEvaluator |
"f1_score" |
RougeScoreEvaluator |
"rouge" |
GleuScoreEvaluator |
"gleu" |
BleuScoreEvaluator |
"bleu" |
MeteorScoreEvaluator |
"meteor" |
ViolenceEvaluator |
"violence" |
SexualEvaluator |
"sexual" |
SelfHarmEvaluator |
"self_harm" |
HateUnfairnessEvaluator |
"hate_unfairness" |
IndirectAttackEvaluator |
"indirect_attack" |
ProtectedMaterialEvaluator |
"protected_material" |
QAEvaluator |
"qa" |
ContentSafetyEvaluator |
"content_safety" |
Este es un ejemplo de cómo establecer los parámetros evaluators
:
result = evaluate(
data="data.jsonl",
evaluators={
"sexual":sexual_evaluator
"self_harm":self_harm_evaluator
"hate_unfairness":hate_unfairness_evaluator
"violence":violence_evaluator
}
)
Evaluar en un destino
Si tiene una lista de consultas que desea ejecutar, el evaluate()
también admite un parámetro de target
, que puede enviar consultas a una aplicación para recopilar respuestas y, a continuación, ejecutar los evaluadores en la consulta y las respuestas resultantes.
Un destino puede ser cualquier clase invocable en el directorio. En este caso, tenemos un script de Python askwiki.py
con una clase invocable askwiki()
que podemos establecer como destino. Dado un conjunto de datos de consultas que podemos enviar a nuestra aplicación de askwiki
sencilla, podemos evaluar la relevancia de las salidas. Asegúrese de especificar la asignación de columna adecuada para los datos en "column_mapping"
. Puede usar "default"
para especificar la asignación de columna para todos los evaluadores.
from askwiki import askwiki
result = evaluate(
data="data.jsonl",
target=askwiki,
evaluators={
"relevance": relevance_eval
},
evaluator_config={
"default": {
"column_mapping": {
"query": "${data.queries}"
"context": "${outputs.context}"
"response": "${outputs.response}"
}
}
}
)
Contenido relacionado
- Documentación de referencia de Azure Python
- Guía de solución de problemas del SDK de Evaluación de Azure AI
- Más información sobre las métricas de evaluación
- Más información sobre la simulación de conjuntos de datos de prueba para la evaluación
- Visualización de los resultados de evaluación en Inteligencia artificial de Azure Studio
- Introducción a la creación de una aplicación de chat mediante el SDK de Azure AI
- Introducción a los ejemplos de evaluación