Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se apenas a:Portal Foundry (clássico). Este artigo não está disponível para o novo portal da Foundry.
Saiba mais sobre o novo portal.
Nota
Os links neste artigo podem abrir conteúdo na nova documentação do Microsoft Foundry em vez da documentação do Foundry (clássico) que está a ver agora.
Neste tutorial, avalia a aplicação de chat que criou na Parte 2 da série de tutoriais. Avalia a qualidade da sua aplicação através de múltiplas métricas e depois itera sobre melhorias. Nesta parte, tu:
- Criar um conjunto de dados de avaliação
- Avalie a aplicação de chat com avaliadores de IA do Azure
- Itere e melhore a sua aplicação
Este tutorial baseia-se no Parte 2: Constrói uma aplicação de chat personalizada com o SDK Microsoft Foundry.
Pré-requisitos
Importante
Este artigo fornece suporte legado para projetos baseados em hubs. Não funciona para projetos da Foundry. Veja : Como sei que tipo de projeto tenho?
Nota de compatibilidade SDK: Exemplos de código requerem uma versão específica do Microsoft Foundry SDK. Se encontrar problemas de compatibilidade, considere migrar de um projeto baseado em hub para um projeto Foundry.
- Uma conta no Azure com uma subscrição ativa. Se não tiveres uma, cria uma conta Azure free, que inclui uma subscrição de teste gratuita.
- Se não tiveres um, cria um projeto baseado em hubs.
- Complete a Parte 2 da série de tutoriais para construir a aplicação de chat.
- Usa o mesmo projeto baseado no hub que criaste na Parte 1.
- Permissões do Azure AI: Função de Administrador ou Contribuinte para modificar os limites de taxa dos pontos finais do modelo e executar tarefas de avaliação.
- Certifique-se de que completa os passos para adicionar registo de telemetria da Parte 2.
Criar conjunto de dados de avaliação
Use o seguinte conjunto de dados de avaliação, que contém perguntas de exemplo e respostas esperadas. Use este conjunto de dados com um avaliador e a get_chat_response() função alvo para avaliar o desempenho da sua aplicação de chat em métricas de relevância, fundamento e coerência.
Crie um ficheiro chamado chat_eval_data.jsonl na sua pasta de assets .
Cole este conjunto de dados no ficheiro:
{"query": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"} {"query": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"} {"query": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"} {"query": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."} {"query": "What brand is TrailMaster tent? ", "truth": "OutdoorLiving"} {"query": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"} {"query": "What is the floor area for Floor Area? ", "truth": "80 square feet"} {"query": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"} {"query": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"} {"query": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."} {"query": "How long are the TrailBlaze pants under warranty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."} {"query": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"} {"query": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}Referências: Formato JSONL para conjuntos de dados de avaliação.
Avaliar com avaliadores de IA do Azure
Crie um script de avaliação que gere um wrapper de função alvo, carregue o seu conjunto de dados, execute a avaliação e registre os resultados do seu projeto Foundry.
Cria um ficheiro chamado evaluate.py na tua pasta principal.
Adicione o seguinte código para importar as bibliotecas necessárias, criar um cliente de projeto e configurar algumas definições:
import os import pandas as pd from azure.ai.projects import AIProjectClient from azure.ai.projects.models import ConnectionType from azure.ai.evaluation import evaluate, GroundednessEvaluator from azure.identity import DefaultAzureCredential from chat_with_products import chat_with_products # load environment variables from the .env file at the root of this repo from dotenv import load_dotenv load_dotenv() # create a project client using environment variables loaded from the .env file project = AIProjectClient.from_connection_string( conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential() ) connection = project.connections.get_default(connection_type=ConnectionType.AZURE_OPEN_AI, include_credentials=True) evaluator_model = { "azure_endpoint": connection.endpoint_url, "azure_deployment": os.environ["EVALUATION_MODEL"], "api_version": "2024-06-01", "api_key": connection.key, } groundedness = GroundednessEvaluator(evaluator_model)Referências: AIProjectClient, DefaultAzureCredential, azure-ai-evaluation.
Adicionar código para criar uma função wrapper que implemente a interface de avaliação para avaliação de consultas e respostas:
def evaluate_chat_with_products(query): response = chat_with_products(messages=[{"role": "user", "content": query}]) return {"response": response["message"].content, "context": response["context"]["grounding_data"]}Referências: azure-ai-evaluation, funções-alvo de avaliação.
Finalmente, adicione código para executar a avaliação, veja os resultados localmente e obtenha um link para os resultados da avaliação no portal Foundry:
# Evaluate must be called inside of __main__, not on import if __name__ == "__main__": from config import ASSET_PATH # workaround for multiprocessing issue on linux from pprint import pprint from pathlib import Path import multiprocessing import contextlib with contextlib.suppress(RuntimeError): multiprocessing.set_start_method("spawn", force=True) # run evaluation with a dataset and target function, log to the project result = evaluate( data=Path(ASSET_PATH) / "chat_eval_data.jsonl", target=evaluate_chat_with_products, evaluation_name="evaluate_chat_with_products", evaluators={ "groundedness": groundedness, }, evaluator_config={ "default": { "query": {"${data.query}"}, "response": {"${target.response}"}, "context": {"${target.context}"}, } }, azure_ai_project=project.scope, output_path="./myevalresults.json", ) tabular_result = pd.DataFrame(result.get("rows")) pprint("-----Summarized Metrics-----") pprint(result["metrics"]) pprint("-----Tabular Result-----") pprint(tabular_result) pprint(f"View evaluation results in AI Studio: {result['studio_url']}")Referências: azure-ai-evaluation, AIProjectClient.
Configurar o modelo de avaliação
O script de avaliação chama o modelo muitas vezes. Considere aumentar o número de tokens por minuto para o modelo de avaliação.
Na Parte 1 desta série de tutoriais, criaste um ficheiro .env que especifica o nome do modelo de avaliação, gpt-4o-mini. Tente aumentar o limite de tokens por minuto para este modelo, se tiver uma quota disponível. Se não tiver quota suficiente para aumentar o valor, não se preocupe. O script foi concebido para lidar com erros de limite.
- No seu projeto no portal Foundry, selecione Modelos + pontos finais.
- Selecione gpt-4o-mini.
- Selecionar Editar.
- Se tiver uma quota, aumente o Limite de Taxa de Tokens por Minuto para 30 ou mais.
- Selecionar Guardar e fechar.
Execute o script de avaliação
A partir da sua consola, inicie sessão na sua conta Azure usando a CLI do Azure:
az loginInstale os pacotes necessários:
pip install openai pip install azure-ai-evaluation[remote]Referências: azure-ai-evaluation SDK, documentação do Evaluation SDK.
Verifique a sua configuração de avaliação
Antes de executar a avaliação completa (que demora entre 5 a 10 minutos), verifique se o SDK e a sua ligação ao projeto estão a funcionar executando este teste rápido:
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
# Test that you can connect to your project
project = AIProjectClient.from_connection_string(
conn_str=os.environ["AIPROJECT_CONNECTION_STRING"], credential=DefaultAzureCredential()
)
print("Evaluation SDK is ready! You can now run evaluate.py")
Se vires "Evaluation SDK is ready!", a tua configuração está completa e podes avançar.
Referências: AIProjectClient, DefaultAzureCredential.
Iniciar a avaliação
Execute o script de avaliação:
python evaluate.py
A avaliação demora entre 5 a 10 minutos a ser concluída. Poderá ver avisos de tempo limite excedido e erros de limitação de taxa. O script trata estes erros automaticamente e continua a processar.
Interpretar o resultado da avaliação
Na saída da consola, vês uma resposta para cada pergunta, seguida de uma tabela com métricas resumidas que mostram pontuações de relevância, fundamento e coerência. As pontuações variam de 0 (pior) a 4 (melhor) para métricas assistidas por GPT. Procure pontuações baixas de fundamento para identificar respostas que não são bem fundamentadas pelos documentos de referência, e pontuações baixas de relevância para identificar respostas fora do tema.
Podes ver muitas WARNING:opentelemetry.attributes: mensagens e erros de timeout. Podes ignorar estas mensagens em segurança. Eles não afetam os resultados da avaliação. O script de avaliação foi concebido para lidar com erros de limite de taxa e continuar o processamento.
Os resultados da avaliação incluem também um link para ver resultados detalhados no portal da Foundry, onde pode comparar execuções de avaliação lado a lado e acompanhar melhorias ao longo do tempo.
====================================================
'-----Summarized Metrics-----'
{'groundedness.gpt_groundedness': 1.6666666666666667,
'groundedness.groundedness': 1.6666666666666667}
'-----Tabular Result-----'
outputs.response ... line_number
0 Could you specify which tent you are referring... ... 0
1 Could you please specify which camping table y... ... 1
2 Sorry, I only can answer queries related to ou... ... 2
3 Could you please clarify which aspects of care... ... 3
4 Sorry, I only can answer queries related to ou... ... 4
5 The TrailMaster X4 Tent comes with an included... ... 5
6 (Failed) ... 6
7 The TrailBlaze Hiking Pants are crafted from h... ... 7
8 Sorry, I only can answer queries related to ou... ... 8
9 Sorry, I only can answer queries related to ou... ... 9
10 Sorry, I only can answer queries related to ou... ... 10
11 The PowerBurner Camping Stove is designed with... ... 11
12 Sorry, I only can answer queries related to ou... ... 12
[13 rows x 8 columns]
('View evaluation results in Foundry portal: '
'https://xxxxxxxxxxxxxxxxxxxxxxx')
Iterar e melhorar
Os resultados da avaliação revelam que as respostas muitas vezes não estão bem fundamentadas nos documentos de referência. Para melhorar a fundamentação, modifique o prompt do sistema no ficheiro assets/grounded_chat.prompty para que o modelo utilize mais diretamente os documentos de referência.
Prompt atual (problemático):
If the question is not related to outdoor/camping gear and clothing, just say 'Sorry, I only can answer queries related to outdoor/camping gear and clothing. So, how can I help?'
If the question is related to outdoor/camping gear and clothing but vague, ask clarifying questions.
Prompt melhorado:
If the question is related to outdoor/camping gear and clothing, answer based on the reference documents provided.
If you cannot find information in the reference documents, say: 'I don't have information about that specific topic. Let me help with related products or try a different question.'
For vague questions, ask clarifying questions to better assist.
Após atualizar o prompt:
Guarda o ficheiro.
Execute novamente o script de avaliação:
python evaluate.pyCompare os novos resultados da avaliação com o teste anterior. Deverá ver melhores pontuações de fundamentação.
Experimente modificações adicionais como:
- Alterar o prompt do sistema para focar na precisão em vez da completude
- Testar com um modelo diferente (por exemplo,
gpt-4-turbose disponível) - Ajustar a recuperação de contexto para devolver documentos mais relevantes
Cada iteração ajuda-o a perceber quais as mudanças que melhoram métricas específicas.
Liberar recursos
Para evitar custos desnecessários com o Azure, elimine os recursos que criou neste tutorial se já não forem necessários. Para gerir recursos, pode usar o portal Azure .