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.
Este artigo mostra como avaliar as respostas de um aplicativo de bate-papo em relação a um conjunto de respostas corretas ou ideais (conhecidas como verdade básica). Sempre que você alterar seu aplicativo de bate-papo de uma forma que afete as respostas, execute uma avaliação para comparar as alterações. Este aplicativo de demonstração oferece ferramentas que você pode usar hoje para facilitar a execução de avaliações.
Seguindo as instruções neste artigo, você:
- Use prompts de exemplo fornecidos adaptados ao domínio do assunto. Esses prompts já estão no repositório.
- Gere exemplos de perguntas do usuário e fundamente respostas verdadeiras a partir de seus próprios documentos.
- Execute avaliações usando um prompt de exemplo com as perguntas do usuário geradas.
- Revisão da análise das respostas.
Nota
Este artigo usa um ou mais modelos de aplicativo de IA como base para os exemplos e orientações no artigo. Os modelos de aplicativos de IA fornecem implementações de referência bem mantidas que são fáceis de implantar. Eles ajudam a garantir um ponto de partida de alta qualidade para seus aplicativos de IA.
Descrição geral da arquitetura
Os principais componentes da arquitetura incluem:
- Aplicativo de chat hospedado no Azure: o aplicativo de chat é executado no Serviço de Aplicativo do Azure.
- Microsoft AI Chat Protocol: O protocolo fornece contratos de API padronizados em soluções e linguagens de IA. O aplicativo de bate-papo está em conformidade com o Microsoft AI Chat Protocol, que permite que o aplicativo de avaliações seja executado em qualquer aplicativo de bate-papo que esteja em conformidade com o protocolo.
- Azure AI Search: O aplicativo de bate-papo usa o Azure AI Search para armazenar os dados de seus próprios documentos.
- Gerador de perguntas de exemplo: A ferramenta pode gerar muitas perguntas para cada documento, juntamente com a resposta da verdade básica. Quanto mais perguntas houver, mais longas serão as avaliações.
- Avaliador: A ferramenta executa exemplos de perguntas e solicitações no aplicativo de bate-papo e retorna os resultados.
- Ferramenta de revisão: A ferramenta analisa os resultados das avaliações.
- Ferramenta Diff: A ferramenta compara as respostas entre as avaliações.
Quando se implanta esta avaliação no Azure, o endpoint do Serviço OpenAI do Azure é criado para o modelo GPT-4
com a sua própria capacidade. Quando você avalia aplicativos de chat, é importante que o avaliador tenha seu próprio recurso do Azure OpenAI usando GPT-4
com sua própria capacidade.
Pré-requisitos
Subscrição do Azure. Crie um gratuitamente
Implante um aplicativo de bate-papo.
Esses aplicativos de chat carregam os dados no recurso Azure AI Search. Este recurso é necessário para que o aplicativo de avaliações funcione. Não conclua a seção Recursos de limpeza do procedimento anterior.
Você precisa das seguintes informações de recursos do Azure dessa implantação, que é referida como o aplicativo de chat neste artigo:
- URI da API de chat: o ponto de extremidade de back-end de serviço mostrado no final do
azd up
processo. - Azure AI Search. Os seguintes valores são necessários:
- Nome do recurso: o nome do recurso Azure AI Search, relatado como
Search service
durante oazd up
processo. - Nome do índice: o nome do índice do Azure AI Search onde seus documentos estão armazenados. Você pode encontrar o nome do índice no portal do Azure para o serviço de Pesquisa.
- Nome do recurso: o nome do recurso Azure AI Search, relatado como
O URL da API de Chat permite que as avaliações façam solicitações por meio de seu aplicativo de back-end. As informações do Azure AI Search permitem que os scripts de avaliação usem a mesma implantação que seu back-end, carregado com os documentos.
Depois de coletar essas informações, você não precisa usar o ambiente de desenvolvimento de aplicativos de bate-papo novamente. Este artigo refere-se ao aplicativo de bate-papo várias vezes para mostrar como o aplicativo Avaliações o usa. Não exclua os recursos do aplicativo de bate-papo até concluir todas as etapas deste artigo.
- URI da API de chat: o ponto de extremidade de back-end de serviço mostrado no final do
Um ambiente de contêiner de desenvolvimento está disponível com todas as dependências necessárias para concluir este artigo. Você pode executar o contêiner de desenvolvimento no GitHub Codespaces (em um navegador) ou localmente usando o Visual Studio Code.
- Conta do GitHub
Abra um ambiente de desenvolvimento
Siga estas instruções para configurar um ambiente de desenvolvimento pré-configurado com todas as dependências necessárias para concluir este artigo. Organize o espaço de trabalho do monitor para que você possa ver essa documentação e o ambiente de desenvolvimento ao mesmo tempo.
Este artigo foi testado com a switzerlandnorth
região para a implantação da avaliação.
O GitHub Codespaces executa um contêiner de desenvolvimento gerenciado pelo GitHub com o Visual Studio Code for the Web como interface do usuário. Use o GitHub Codespaces para o ambiente de desenvolvimento mais fácil. Ele vem com as ferramentas de desenvolvimento certas e as dependências certas pré-instaladas para concluir este artigo.
Importante
Todas as contas do GitHub podem usar o GitHub Codespaces por até 60 horas gratuitas por mês com duas instâncias principais. Para obter mais informações, consulte GitHub Codespaces mensalmente incluído armazenamento e horas principais.
Inicie o processo para criar um novo codespace do GitHub no branch
main
do repositório Azure-Samples/ai-rag-chat-evaluator no GitHub.Para exibir o ambiente de desenvolvimento e a documentação disponível ao mesmo tempo, clique com o botão direito do mouse no botão a seguir e selecione Abrir link na nova janela.
Na página Criar espaço de código, revise as definições de configuração de espaço de código e selecione Criar novo espaço de código.
Aguarde até que o espaço de código inicie. Este processo de arranque pode demorar alguns minutos.
No terminal na parte inferior do ecrã, inicie sessão no Azure com a CLI do Azure Developer.
azd auth login --use-device-code
Copie o código do terminal e cole-o em um navegador. Siga as instruções para autenticar com sua conta do Azure.
Provisione o recurso necessário do Azure, Azure OpenAI Service, para o aplicativo de avaliações:
azd up
Este
AZD
comando não implanta o aplicativo de avaliações, mas cria o recurso OpenAI do Azure com uma implantação necessáriaGPT-4
para executar as avaliações no ambiente de desenvolvimento local.
As tarefas restantes neste artigo ocorrem no contexto desse contêiner de desenvolvimento.
O nome do repositório GitHub aparece na barra de pesquisa. Este indicador visual ajuda a distinguir o aplicativo de avaliações do aplicativo de bate-papo. Este ai-rag-chat-evaluator
repositório é referido como a aplicação de avaliações neste artigo.
Preparar valores de ambiente e informações de configuração
Atualize os valores do ambiente e as informações de configuração com as informações coletadas durante os Pré-requisitos para o aplicativo de avaliações.
Crie um ficheiro
.env
com base em.env.sample
.cp .env.sample .env
Execute este comando para obter os valores necessários para
AZURE_OPENAI_EVAL_DEPLOYMENT
eAZURE_OPENAI_SERVICE
do seu grupo de recursos implantado. Cole esses valores no.env
arquivo.azd env get-value AZURE_OPENAI_EVAL_DEPLOYMENT azd env get-value AZURE_OPENAI_SERVICE
Adicione os seguintes valores do aplicativo de chat para a instância do Azure AI Search ao arquivo
.env
, que você reuniu na seção Pré-requisitos.AZURE_SEARCH_SERVICE="<service-name>" AZURE_SEARCH_INDEX="<index-name>"
Use o Microsoft AI Chat Protocol para obter informações de configuração
O aplicativo de bate-papo e o aplicativo de avaliações implementam a especificação Microsoft AI Chat Protocol, um contrato de API de ponto final de IA de código aberto, na nuvem e independente de linguagem que é usado para consumo e avaliação. Quando seu cliente e endpoints de camada intermediária aderem a essa especificação de API, você pode consumir e executar avaliações de forma consistente em seus back-ends de IA.
Crie um novo arquivo com o nome
my_config.json
e copie o seguinte conteúdo para ele:{ "testdata_path": "my_input/qa.jsonl", "results_dir": "my_results/experiment<TIMESTAMP>", "target_url": "http://localhost:50505/chat", "target_parameters": { "overrides": { "top": 3, "temperature": 0.3, "retrieval_mode": "hybrid", "semantic_ranker": false, "prompt_template": "<READFILE>my_input/prompt_refined.txt", "seed": 1 } } }
O script de avaliação cria a
my_results
pasta.O
overrides
objeto contém todas as definições de configuração necessárias para o aplicativo. Cada aplicativo define seu próprio conjunto de propriedades de configurações.Use a tabela a seguir para entender o significado das propriedades de configurações que são enviadas para o aplicativo de chat.
Propriedade Configurações Descrição semantic_ranker
Se deve usar o classificador semântico, um modelo que reclassifica os resultados da pesquisa com base na semelhança semântica com a consulta do usuário. Nós o desativamos para este tutorial para reduzir custos. retrieval_mode
O modo de recuperação a ser usado. A predefinição é hybrid
.temperature
A configuração de temperatura para o modelo. A predefinição é 0.3
.top
O número de resultados da pesquisa a serem retornados. A predefinição é 3
.prompt_template
Uma substituição do prompt usado para gerar a resposta com base na pergunta e nos resultados da pesquisa. seed
O valor seed para quaisquer chamadas para modelos GPT. A definição de uma semente resulta em resultados mais consistentes em todas as avaliações. Altere o
target_url
valor para o valor de URI do seu aplicativo de chat, que você reuniu na seção Pré-requisitos . O aplicativo de bate-papo deve estar em conformidade com o protocolo de bate-papo. O URI tem o seguinte formato:https://CHAT-APP-URL/chat
. Verifique se o protocolo e achat
rota fazem parte do URI.
Gerar dados de exemplo
Para avaliar novas respostas, elas devem ser comparadas a uma resposta de verdade básica , que é a resposta ideal para uma determinada pergunta. Gere perguntas e respostas a partir de documentos armazenados na Pesquisa de IA do Azure para a aplicação de chat.
Copie a
example_input
pasta para uma nova pasta chamadamy_input
.Em um terminal, execute o seguinte comando para gerar os dados de exemplo:
python -m evaltools generate --output=my_input/qa.jsonl --persource=2 --numquestions=14
Os pares de perguntas e respostas são gerados e armazenados ( my_input/qa.jsonl
em formato JSONL) como entrada para o avaliador que é usado na próxima etapa. Para uma avaliação de produção, você geraria mais pares de perguntas e respostas. Mais de 200 são gerados para este conjunto de dados.
Nota
Apenas algumas perguntas e respostas são geradas por fonte para que você possa concluir rapidamente este procedimento. Não é destinada a ser uma avaliação de produtividade, que deveria ter mais perguntas e respostas por fonte.
Execute a primeira avaliação com um prompt refinado
Edite as propriedades do
my_config.json
arquivo de configuração.Propriedade Novo valor results_dir
my_results/experiment_refined
prompt_template
<READFILE>my_input/prompt_refined.txt
O prompt refinado é específico sobre o domínio do assunto.
If there isn't enough information below, say you don't know. Do not generate answers that don't use the sources below. If asking a clarifying question to the user would help, ask the question. Use clear and concise language and write in a confident yet friendly tone. In your answers, ensure the employee understands how your response connects to the information in the sources and include all citations necessary to help the employee validate the answer provided. For tabular information, return it as an html table. Do not return markdown format. If the question is not in English, answer in the language used in the question. Each source has a name followed by a colon and the actual information. Always include the source name for each fact you use in the response. Use square brackets to reference the source, e.g. [info1.txt]. Don't combine sources, list each source separately, e.g. [info1.txt][info2.pdf].
Em um terminal, execute o seguinte comando para executar a avaliação:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Este script criou uma nova pasta de experimento com
my_results/
a avaliação. A pasta contém os resultados da avaliação.Nome do ficheiro Descrição config.json
Uma cópia do arquivo de configuração usado para a avaliação. evaluate_parameters.json
Os parâmetros utilizados para a avaliação. Semelhante a, config.json
mas inclui outros metadados, como carimbo de data/hora.eval_results.jsonl
Cada pergunta e resposta, juntamente com as métricas GPT para cada par de perguntas e respostas. summary.json
Os resultados gerais, como as métricas médias de GPT.
Realize a segunda avaliação com um prompt fraco
Edite as propriedades do
my_config.json
arquivo de configuração.Propriedade Novo valor results_dir
my_results/experiment_weak
prompt_template
<READFILE>my_input/prompt_weak.txt
Esse prompt fraco não tem contexto sobre o domínio do assunto.
You are a helpful assistant.
Em um terminal, execute o seguinte comando para executar a avaliação:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Executar a terceira avaliação com uma temperatura específica
Use um prompt que permita mais criatividade.
Edite as propriedades do
my_config.json
arquivo de configuração.Existente Propriedade Novo valor Existente results_dir
my_results/experiment_ignoresources_temp09
Existente prompt_template
<READFILE>my_input/prompt_ignoresources.txt
Novo temperature
0.9
O padrão
temperature
é 0.7. Quanto maior a temperatura, mais criativas são as respostas.O
ignore
prompt é curto.Your job is to answer questions to the best of your ability. You will be given sources but you should IGNORE them. Be creative!
O objeto de configuração deve assemelhar-se ao exemplo seguinte, exceto que deverá substituir
results_dir
pelo seu caminho:{ "testdata_path": "my_input/qa.jsonl", "results_dir": "my_results/prompt_ignoresources_temp09", "target_url": "https://YOUR-CHAT-APP/chat", "target_parameters": { "overrides": { "temperature": 0.9, "semantic_ranker": false, "prompt_template": "<READFILE>my_input/prompt_ignoresources.txt" } } }
Em um terminal, execute o seguinte comando para executar a avaliação:
python -m evaltools evaluate --config=my_config.json --numquestions=14
Rever os resultados da avaliação
Você executou três avaliações com base em diferentes prompts e configurações do aplicativo. Os resultados são armazenados na my_results
pasta. Analise como os resultados diferem com base nas configurações.
Use a ferramenta de revisão para ver os resultados das avaliações.
python -m evaltools summary my_results
Os resultados são algo como:
Cada valor é retornado como um número e uma porcentagem.
Use a tabela a seguir para entender o significado dos valores.
valor Descrição Fundamentação Verifica até que ponto as respostas do modelo se baseiam em informações factuais e verificáveis. Uma resposta é considerada fundamentada se for factualmente precisa e refletir a realidade. Relevância Mede o grau de alinhamento das respostas do modelo com o contexto ou o prompt. Uma resposta relevante aborda diretamente a consulta ou instrução do usuário. Coerência Verifica o quão logicamente consistentes são as respostas do modelo. Uma resposta coerente mantém um fluxo lógico e não se contradiz. Citação Indica se a resposta foi retornada no formato solicitado no prompt. Duração Mede a duração da resposta. Os resultados devem indicar que as três avaliações tiveram alta relevância, enquanto o
experiment_ignoresources_temp09
teve a menor relevância.Selecione a pasta para ver a configuração para a avaliação.
Digite Ctrl + C para sair do aplicativo e retornar ao terminal.
Compare as respostas
Compare as respostas retornadas das avaliações.
Selecione duas das avaliações para comparar e, em seguida, use a mesma ferramenta de revisão para comparar as respostas.
python -m evaltools diff my_results/experiment_refined my_results/experiment_ignoresources_temp09
Reveja os resultados. Os resultados podem variar.
Digite Ctrl + C para sair do aplicativo e retornar ao terminal.
Sugestões para avaliações posteriores
- Edite os prompts para
my_input
personalizar as respostas, como domínio do assunto, comprimento e outros fatores. - Edite o
my_config.json
arquivo para alterar os parâmetros, comotemperature
, esemantic_ranker
execute experimentos novamente. - Compare respostas diferentes para entender como o prompt e a pergunta afetam a qualidade da resposta.
- Gere um conjunto separado de perguntas e fundamente respostas verdadeiras para cada documento no índice Azure AI Search. Em seguida, execute novamente as avaliações para ver como as respostas diferem.
- Altere os prompts para indicar respostas mais curtas ou mais longas adicionando o requisito ao final do prompt. Um exemplo é
Please answer in about 3 sentences.
Limpar recursos e dependências
As etapas a seguir orientam você pelo processo de limpeza dos recursos usados.
Limpar recursos do Azure
Os recursos do Azure criados neste artigo são cobrados na sua assinatura do Azure. Se você não espera precisar desses recursos no futuro, exclua-os para evitar incorrer em mais cobranças.
Para excluir os recursos do Azure e remover o código-fonte, execute o seguinte comando da CLI do Desenvolvedor do Azure:
azd down --purge
Limpar os Codespaces do GitHub e o Visual Studio Code
Excluir o ambiente do GitHub Codespaces garante que possais maximizar o número de horas gratuitas por núcleo a que tendes direito na vossa conta.
Importante
Para obter mais informações sobre os direitos da sua conta do GitHub, consulte Codespaces do GitHub mensalmente incluídos armazenamento e horas principais.
Faça login no painel de controlo do GitHub Codespaces.
Localize os seus espaços de código atualmente em execução que têm origem no repositório Azure-Samples/ai-rag-chat-evaluator no GitHub.
Abra o menu de contexto para o espaço de código e, em seguida, selecione Excluir.
Retorne ao artigo do app de chat para limpar esses recursos.
Conteúdo relacionado
- Consulte o repositório de avaliações.
- Consulte o repositório GitHub do aplicativo de bate-papo corporativo.
- Crie um aplicativo de chat com a arquitetura de solução de práticas recomendadas do Azure OpenAI .
- Saiba mais sobre o controle de acesso em aplicativos de IA generativa com o Azure AI Search.
- Crie uma solução OpenAI do Azure pronta para a empresa com o Azure API Management.
- Consulte Azure AI Search: Superando a pesquisa vetorial com recursos híbridos de recuperação e classificação.