Le module d'évaluation de l'IA agentique calcule des mesures pour évaluer les performances des outils d'IA agentique afin de vous aider à rationaliser vos workflows et à gérer les risques pour votre cas d'utilisation.
L'évaluation de l'IA agentique est un module du ibm-watsonx-gov
Kit de développement logiciel Python. Vous pouvez utiliser le module d'évaluation de l'IA agentique pour automatiser et accélérer les tâches afin de rationaliser vos flux de travail et de gérer les risques de conformité réglementaire en mesurant les performances à l'aide de mesures quantitatives.
Le module d'évaluation de l'IA agentique utilise les évaluateurs suivants pour mesurer les performances des cas d'utilisation du RAG agentique :
- evaluate_context_relevance : Pour calculer la métrique de pertinence contextuelle de votre outil de recherche de contenu
- evaluate_faithfulness : Pour calculer la mesure de fidélité de votre outil de génération de réponses. Cette mesure ne nécessite pas de vérité terrain
- evaluate_answer_similarity : Pour calculer la métrique de similarité des réponses de votre outil de génération de réponses. Cette mesure nécessite une vérité terrain pour le calcul
Pour utiliser le module d'évaluation de l'IA agentique, vous devez installer le SDK ibm-watsonx-gov
Python avec des paramètres spécifiques :
pip install "ibm-watsonx-gov[agentic]"
Exemples
Vous pouvez évaluer les outils d'IA agentique avec le module d'évaluation de l'IA agentique comme le montrent les exemples suivants :
Configurer l'état
Le SDK Python d' ibm-watsonx-gov
fournit une classe d'état basée sur pydantic que vous pouvez étendre :
from ibm_watsonx_gov.entities.state import EvaluationState
class AppState(EvaluationState):
pass
Mise en place de l'évaluateur
Pour évaluer les applications de l'IA agentique, vous devez instancier la classe « AgenticEvaluation
» pour définir des évaluateurs afin de calculer différentes métriques :
from ibm_watsonx_gov.evaluate.agentic_evaluation import AgenticEvaluation
evaluator = AgenticEvaluation()
Ajouter vos évaluateurs
Calculez la mesure de pertinence du contexte en définissant l'outil d' retrieval_node
, puis décorez-le avec l'outil d'évaluation d' evaluate_context_relevance
@evaluator.evaluate_context_relevance
def retrieval_node(state: AppState, config: RunnableConfig):
# do something
pass
Vous pouvez également empiler des évaluateurs pour calculer plusieurs mesures avec un outil. L'exemple suivant montre l'outil d' generate_node
, décoré avec les outils d' evaluate_faithfulness
s et d' evaluate_answer_similarity
s pour calculer les mesures de qualité des réponses :
@evaluator.evaluate_faithfulness
@evaluator.evaluate_answer_similarity
def generate_node(state: AppState, config: RunnableConfig):
# do something
pass
Faire une invocation
Lorsque vous appelez une application pour une ligne de données, une clé d' record_id
s est ajoutée aux entrées pour suivre les lignes individuelles et associer des métriques à chaque ligne :
result = rag_app.invoke({"input_text": "What is concept drift?", "ground_truth": "Concept drift occurs when the statistical properties of the target variable change over time, causing a machine learning model’s predictions to become less accurate.", "record_id": "12"})
evaluator.get_metrics_df()
L'invocation génère un résultat comme le montre l'exemple suivant :
nom | méthode | valeur | record_id | nom_outil | execution_count |
---|---|---|---|---|---|
answer_similarity | sentence_bert_mini_lm | 0.930133 | 12 | generate_node | 1 |
Fidélité | sentence_bert_mini_lm | 0.258931 | 12 | generate_node | 1 |
tool_latency (s) | 12.777696 | 12 | generate_node | 1 | |
pertinence_du_contexte | sentence_bert_mini_lm | 0.182579 | 12 | retrieval_node | 1 |
tool_latency (s) | 1.730439 | 12 | retrieval_node | 1 |
Appeler le graphique sur plusieurs lignes
Pour terminer l'invocation du lot, vous pouvez définir un dataframe avec des questions et des vérités fondamentales pour ces questions :
import pandas as pd
question_bank_df = pd.read_csv("https://raw.githubusercontent.com/IBM/ibm-watsonx-gov/refs/heads/samples/notebooks/data/agentic/medium_question_bank.csv")
question_bank_df["record_id"] = question_bank_df.index.astype(str)
result = rag_app.batch(inputs=question_bank_df.to_dict("records"))
evaluator.get_metrics_df()
L'index du dataframe est utilisé comme identifiant unique ( record_id
) pour identifier chaque ligne.
L'invocation génère un résultat comme le montre l'exemple suivant :
nom | méthode | valeur | record_id | nom_outil | execution_count |
---|---|---|---|---|---|
answer_similarity | sentence_bert_mini_lm | 0.921843 | 0 | generate_node | 1 |
Fidélité | sentence_bert_mini_lm | 0.887591 | 0 | generate_node | 1 |
tool_latency (s) | 3.420483 | 0 | generate_node | 1 | |
pertinence_du_contexte | sentence_bert_mini_lm | 0.707973 | 0 | retrieval_node | 1 |
tool_latency (s) | 0.777236 | 0 | retrieval_node | 1 | |
answer_similarity | sentence_bert_mini_lm | 0.909655 | 1 | generate_node | 1 |
Fidélité | sentence_bert_mini_lm | 0.783347 | 1 | generate_node | 1 |
tool_latency (s) | 1.327022 | 1 | generate_node | 1 | |
pertinence_du_contexte | sentence_bert_mini_lm | 0.706106 | 1 | retrieval_node | 1 |
tool_latency (s) | 0.936945 | 1 | retrieval_node | 1 | |
answer_similarity | sentence_bert_mini_lm | 0.864697 | 2 | generate_node | 1 |
Fidélité | sentence_bert_mini_lm | 0.868233 | 2 | generate_node | 1 |
tool_latency (s) | 2.326283 | 2 | generate_node | 1 | |
pertinence_du_contexte | sentence_bert_mini_lm | 0.763274 | 2 | retrieval_node | 1 |
tool_latency (s) | 0.842586 | 2 | retrieval_node | 1 |
Pour plus d'informations, consultez l'exemple de carnet.
Sujet parent : Calcul des métriques à l'aide du kit de développement logiciel ( Python )