Condividi tramite


Analizzatori per utilizzo generico

I sistemi di intelligenza artificiale possono generare risposte testuali incoerenti o che non hanno la qualità generale di scrittura che si potrebbe desiderare oltre la correttezza grammaticale minima. Per risolvere questi problemi, usare coerenza e fluenza.

Se si dispone di uno scenario di risposta alle domande (QA) con sia context che ground truth con i dati oltre a query e response, è anche possibile usare qaevaluator un analizzatore composito che usa gli analizzatori pertinenti per il giudizio.

Configurazione del modello per gli analizzatori assistito da intelligenza artificiale

Per riferimento nel frammento di codice seguente, gli analizzatori basati su intelligenza artificiale usano una configurazione del modello come indicato di seguito:

import os
from azure.ai.evaluation import AzureOpenAIModelConfiguration
from dotenv import load_dotenv
load_dotenv()

model_config = AzureOpenAIModelConfiguration(
    azure_endpoint=os.environ["AZURE_ENDPOINT"],
    api_key=os.environ.get["AZURE_API_KEY"],
    azure_deployment=os.environ.get("AZURE_DEPLOYMENT_NAME"),
    api_version=os.environ.get("AZURE_API_VERSION"),
)

Suggerimento

È consigliabile usare o3-mini per un equilibrio tra capacità di ragionamento ed efficienza dei costi.

Coerenza

CoherenceEvaluator misura la presentazione logica e ordinata delle idee in risposta, consentendo al lettore di seguire e comprendere facilmente il training del pensiero dello scrittore. Una risposta coerente affronta direttamente la domanda con connessioni chiare tra frasi e paragrafi, usando transizioni appropriate e una sequenza logica di idee. Punteggi più alti significano una migliore coerenza.

Esempio di coerenza

from azure.ai.evaluation import CoherenceEvaluator

coherence = CoherenceEvaluator(model_config=model_config, threshold=3)
coherence(
    query="Is Marie Curie is born in Paris?", 
    response="No, Marie Curie is born in Warsaw."
)

Output della coerenza

Il punteggio numerico su una scala likert (intero da 1 a 5) e un punteggio più alto è migliore. Data una soglia numerica (valore predefinito a 3), viene restituito anche "pass" se il punteggio >= soglia o "fail" in caso contrario. L'uso del campo motivo consente di comprendere il motivo per cui il punteggio è alto o basso.

{
    "coherence": 4.0,
    "gpt_coherence": 4.0,
    "coherence_reason": "The RESPONSE is coherent and directly answers the QUERY with relevant information, making it easy to follow and understand.",
    "coherence_result": "pass",
    "coherence_threshold": 3
}

Scorrevolezza

FluencyEvaluatormisura l'efficacia e la chiarezza della comunicazione scritta, concentrandosi sull'accuratezza grammaticale, sull'intervallo di vocabolari, sulla complessità delle frasi, sulla coerenza e sulla leggibilità complessiva. Valuta il modo in cui le idee vengono trasmesse senza problemi e quanto facilmente il lettore possa comprendere il testo.

Esempio di fluency

from azure.ai.evaluation import FluencyEvaluator

fluency = FluencyEvaluator(model_config=model_config, threshold=3)
fluency(
    response="No, Marie Curie is born in Warsaw."
)

Output della fluenza

Il punteggio numerico su una scala likert (intero da 1 a 5) e un punteggio più alto è migliore. Data una soglia numerica (valore predefinito a 3), viene restituito anche "pass" se il punteggio >= soglia o "fail" in caso contrario. L'uso del campo motivo consente di comprendere il motivo per cui il punteggio è alto o basso.

{
    "fluency": 3.0,
    "gpt_fluency": 3.0,
    "fluency_reason": "The response is clear and grammatically correct, but it lacks complexity and variety in sentence structure, which is why it fits the \"Competent Fluency\" level.",
    "fluency_result": "pass",
    "fluency_threshold": 3
}

Risposta alle domande dell'analizzatore composito

QAEvaluator misura in modo completo vari aspetti in uno scenario di risposta alle domande:

  • Pertinenza
  • Radicamento
  • Scorrevolezza
  • Coerenza
  • Somiglianza
  • Punteggio F1

Esempio di controllo di qualità

from azure.ai.evaluation import QAEvaluator

qa_eval = QAEvaluator(model_config=model_config, threshold=3)
qa_eval(
    query="Where was Marie Curie born?", 
    context="Background: 1. Marie Curie was a chemist. 2. Marie Curie was born on November 7, 1867. 3. Marie Curie is a French scientist.",
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

Output qa

Mentre il punteggio F1 restituisce un punteggio numerico su scala float da 0 a 1, gli altri analizzatori generano punteggi numerici su una scala likert (intero da 1 a 5) e un punteggio superiore è migliore. Data una soglia numerica (valore predefinito a 3), viene restituito anche "pass" se il punteggio >= soglia o "fail" in caso contrario. L'uso del campo motivo consente di comprendere il motivo per cui il punteggio è alto o basso.

{
    "f1_score": 0.631578947368421,
    "f1_result": "pass",
    "f1_threshold": 3,
    "similarity": 4.0,
    "gpt_similarity": 4.0,
    "similarity_result": "pass",
    "similarity_threshold": 3,
    "fluency": 3.0,
    "gpt_fluency": 3.0,
    "fluency_reason": "The input Data should get a Score of 3 because it clearly conveys an idea with correct grammar and adequate vocabulary, but it lacks complexity and variety in sentence structure.",
    "fluency_result": "pass",
    "fluency_threshold": 3,
    "relevance": 3.0,
    "gpt_relevance": 3.0,
    "relevance_reason": "The RESPONSE does not fully answer the QUERY because it fails to explicitly state that Marie Curie was born in Warsaw, which is the key detail needed for a complete understanding. Instead, it only negates Paris, which does not fully address the question.",
    "relevance_result": "pass",
    "relevance_threshold": 3,
    "coherence": 2.0,
    "gpt_coherence": 2.0,
    "coherence_reason": "The RESPONSE provides some relevant information but lacks a clear and logical structure, making it difficult to follow. It does not directly answer the question in a coherent manner, which is why it falls into the \"Poorly Coherent Response\" category.",
    "coherence_result": "fail",
    "coherence_threshold": 3,
    "groundedness": 3.0,
    "gpt_groundedness": 3.0,
    "groundedness_reason": "The response attempts to answer the query about Marie Curie's birthplace but includes incorrect information by stating she was not born in Paris, which is irrelevant. It does provide the correct birthplace (Warsaw), but the misleading nature of the response affects its overall groundedness. Therefore, it deserves a score of 3.",
    "groundedness_result": "pass",
    "groundedness_threshold": 3
}