Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Este documento refere-se ao portal do Microsoft Foundry (clássico ).
🔍 Exiba a documentação do Microsoft Foundry (novo) para saber mais sobre o novo portal.
Neste tutorial, você avaliará o aplicativo de chat que você criou na Parte 2 da série de tutoriais. Você avalia a qualidade do aplicativo em várias métricas e, em seguida, itera em melhorias. Nesta parte, você:
- Criar um conjunto de dados de avaliação
- Avalie o aplicativo de bate-papo com os avaliadores de IA do Azure
- Itere e aprimore seu aplicativo
Este tutorial baseia-se na Parte 2: criar um aplicativo de chat personalizado com o SDK do Microsoft Foundry.
Pré-requisitos
Importante
Este artigo fornece suporte legado para projetos baseados em hub. Ele não funcionará para projetos do Foundry. Veja como saber qual tipo de projeto tenho?
Observação de compatibilidade do SDK: os exemplos de código exigem uma versão específica do SDK do Microsoft Foundry. Se você encontrar problemas de compatibilidade, considere a migração de um projeto baseado em hub para um projeto do Foundry.
- Uma conta do Azure com uma assinatura ativa. Se você não tiver uma, crie uma conta gratuita do Azure, que inclui uma assinatura de avaliação gratuita.
- Se você não tiver um, crie um projeto baseado em hub.
- Conclua a Parte 2 da série de tutoriais para criar o aplicativo de chat.
- Use o mesmo projeto baseado em hub que você criou na Parte 1.
- Permissões de IA do Azure: O perfil de Proprietário ou Colaborador permite modificar os limites de taxa dos pontos de extremidade do modelo e executar tarefas de avaliação.
- Certifique-se de concluir as etapas da Parte 2 para adicionar log de telemetria.
Criar conjunto de dados de avaliação
Use o conjunto de dados de avaliação a seguir, que contém perguntas de exemplo e respostas esperadas. Use esse conjunto de dados com um avaliador e a função alvo get_chat_response() para avaliar o desempenho do aplicativo de chat nas métricas de relevância, fundamentação e coerência.
Crie um arquivo chamado chat_eval_data.jsonl na pasta de ativos .
Cole esse conjunto de dados no arquivo:
{"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 invólucro para a função-alvo, carregue seu conjunto de dados, execute a avaliação e registre os resultados no projeto Foundry.
Crie um arquivo chamado evaluate.py na 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.
Adicione o código para criar uma função de encapsulamento que implemente a interface de avaliação para 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.
Por fim, adicione o código para executar a avaliação, exiba os resultados localmente e obtenha um link para os resultados da avaliação no portal do 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 repetidamente. Considere aumentar o número de tokens por minuto para o modelo de avaliação.
Na Parte 1 desta série de tutoriais, você criou um arquivo .env que especifica o nome do modelo de avaliação, gpt-4o-mini. Tente aumentar o limite de tokens por minuto para este modelo, caso tenha cota disponível. Se você não tiver cota suficiente para aumentar o valor, não se preocupe. O script foi projetado para lidar com erros de limite.
- No seu projeto no portal do Foundry, selecione Modelos + pontos de extremidade.
- Selecione gpt-4o-mini.
- Selecione Editar.
- Se você tiver cota, aumente o Limite de Taxa de Tokens por Minuto para 30 ou mais.
- Selecione Salvar e fechar.
Execute o script de avaliação
No console, entre em sua conta do 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 SDK de Avaliação.
Verificar sua configuração de avaliação
Antes de executar a avaliação completa (que leva de 5 a 10 minutos), verifique se o SDK e a conexão do projeto estão funcionando 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 você vir "Evaluation SDK is ready!", sua configuração está concluída e você pode continuar.
Referências: AIProjectClient, DefaultAzureCredential.
Iniciar a avaliação
Execute o script de avaliação:
python evaluate.py
A avaliação leva de 5 a 10 minutos para ser concluída. Você poderá ver avisos de tempo limite e erros de limite de taxa. O script lida com esses erros automaticamente e continua o processamento.
Interpretar o resultado da avaliação
Na saída do console, você verá uma resposta para cada pergunta, seguida por uma tabela com métricas resumidas mostrando pontuações de relevância, fundamentação e coerência. As pontuações variam de 0 (pior) a 4 (melhor) para métricas assistidas por GPT. Procure pontuações de baixa fundamentação para identificar respostas que não são bem compatíveis com os documentos de referência e pontuações de baixa relevância para identificar respostas fora do tópico.
Você pode ver muitas mensagens WARNING:opentelemetry.attributes: e erros de tempo limite. Você pode ignorar com segurança essas mensagens. Eles não afetam os resultados da avaliação. O script de avaliação foi projetado para lidar com erros de limite de taxa e continuar o processamento.
A saída dos resultados da avaliação também inclui um link para exibir resultados detalhados no portal do Foundry, no qual você 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 geralmente não são bem fundamentadas nos documentos de referência. Para melhorar o groundedness, modifique o prompt do sistema no arquivo assets/grounded_chat.prompty para incentivar o modelo a usar os documentos de referência de forma mais direta.
Mensagem atual (problemática)
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 aprimorado:
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.
Depois de atualizar o prompt:
Salve o arquivo.
Execute o script de avaliação novamente:
python evaluate.pyCompare os novos resultados de avaliação com a análise anterior. Você deverá observar uma melhora nos índices de estabilidade.
Tente modificações adicionais como:
- Alterando o prompt do sistema para se concentrar na precisão em vez de integridade
- Teste com um modelo diferente (por exemplo,
gpt-4-turbose disponível) - Ajustando a recuperação de contexto para retornar documentos mais relevantes
Cada iteração ajuda você a entender quais alterações melhoram as métricas específicas.
Limpar os recursos
Para evitar incorrer em custos desnecessários do Azure, exclua os recursos criados neste tutorial se eles não forem mais necessários. Para gerenciar os recursos, use o portal do Azure.