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.
A avaliação de modelos de linguagem grandes é uma etapa crítica para medir seu desempenho em várias tarefas e dimensões. Isso é bastante importante para modelos ajustados, em que avaliar os ganhos (ou perdas) de desempenho após o treinamento é essencial. Avaliações completas podem ajudar a entender como diferentes versões do modelo podem afetar seu aplicativo ou cenário.
A avaliação do OpenAI do Azure permite que os desenvolvedores criem execuções de avaliação para testar pares de entrada/saída esperados, analisando o desempenho do modelo entre as principais métricas, como exatidão, confiabilidade e desempenho geral.
Suporte à avaliação
Disponibilidade regional
- Leste da Austrália
- Sul do Brasil
- Canadá Central
- EUA Central
- Leste dos EUA 2
- França Central
- Centro-oeste da Alemanha
- Norte da Itália
- Leste do Japão
- Oeste do Japão
- Coreia Central
- Centro-Norte dos EUA
- Leste da Noruega
- Polônia Central
- Norte da África do Sul
- Sudeste Asiático
- Espanha Central
- Suécia Central
- Norte da Suíça
- Oeste da Suíça
- Norte dos EAU
- Sul do Reino Unido
- Oeste do Reino Unido
- Oeste da Europa
- Oeste dos EUA
- Oeste dos EUA 2
- Oeste dos EUA 3
Se sua região preferencial estiver ausente, consulte as regiões do Azure OpenAI e verifique se ela é uma das zonas de disponibilidade regionais do Azure OpenAI.
Tipos de implantação com suporte
- Standard
- Padrão global
- Padrão de zona de dados
- Provisionado-gerenciado
- Provisionado-gerenciado global
- Provisionado-gerenciado de zona de dados
API de avaliação (versão prévia)
A API de avaliação permite testar saídas de modelo diretamente por meio de chamadas à API e avaliar programaticamente a qualidade e o desempenho do modelo. Para usar a API de Avaliação, confira a documentação da API REST.
Pipeline de avaliação
Dados de teste
Você precisará montar um conjunto de dados de referência (ground truth) para testar. Em geral, a criação do conjunto de dados é um processo iterativo que garante que suas avaliações permaneçam relevantes para seus cenários ao longo do tempo. Esse conjunto de dados de referência é, normalmente, criado de forma manual e representa o comportamento esperado do modelo. O conjunto de dados também é rotulado e inclui as respostas esperadas.
Observação
Alguns testes de avaliação, como Sentimento e Validação de JSON ou XML, não exigem dados de referência.
Sua fonte de dados deve estar no formato JSONL. Abaixo você encontra dois exemplos de conjuntos de dados de avaliação JSONL:
Formato de avaliação
{"question": "Find the degree for the given field extension Q(sqrt(2), sqrt(3), sqrt(18)) over Q.", "subject": "abstract_algebra", "A": "0", "B": "4", "C": "2", "D": "6", "answer": "B", "completion": "B"}
{"question": "Let p = (1, 2, 5, 4)(2, 3) in S_5 . Find the index of <p> in S_5.", "subject": "abstract_algebra", "A": "8", "B": "2", "C": "24", "D": "120", "answer": "C", "completion": "C"}
{"question": "Find all zeros in the indicated finite field of the given polynomial with coefficients in that field. x^5 + 3x^3 + x^2 + 2x in Z_5", "subject": "abstract_algebra", "A": "0", "B": "1", "C": "0,1", "D": "0,4", "answer": "D", "completion": "D"}
Quando você carrega e seleciona seu arquivo de avaliação, uma prévia das três primeiras linhas será exibida:
Você pode escolher conjuntos de dados já carregados ou carregar um novo conjunto de dados.
Criar respostas (opcional)
O prompt usado na avaliação deve corresponder ao prompt que você planeja usar na produção. Esses prompts fornecem as instruções que o modelo deve seguir. Semelhante às experiências de playground, você pode criar várias entradas para incluir exemplos few-shot em seu prompt. Para mais informações, confira o artigo técnicas de engenharia de prompts, que detalha técnicas avançadas de design e engenharia de prompts.
Você pode referenciar os dados de entrada nos prompts usando o formato {{input.column_name}}, onde column_name corresponde aos nomes das colunas em seu arquivo de entrada.
As saídas geradas durante a avaliação serão referenciadas nos próximos passos, também usando o formato {{sample.output_text}}.
Observação
Você precisa usar chaves para fazer referência aos seus dados corretamente.
Implantação de modelo
No Azure OpenAI, você precisa criar uma implantação de modelo a ser usada para sua avaliação. Você pode escolher e implantar um único modelo ou vários modelos, dependendo de suas necessidades. Essas implantações de modelo serão usadas ao classificar seu modelo base ou seu modelo ajustado com os critérios de teste de sua escolha. Você também pode usar os modelos implantados para gerar respostas automaticamente para o prompt fornecido.
As implantações disponíveis na sua lista dependerão daquelas criadas dentro do recurso OpenAI do Azure. Se você não encontrar a implantação desejada, poderá criar uma nova na página de Avaliação do OpenAI do Azure.
Critérios de teste
Os critérios de teste são usados para avaliar a eficácia de cada saída gerada pelo modelo alvo. Esses testes comparam os dados de entrada com os dados de saída para garantir a consistência. Você tem a flexibilidade de configurar diferentes critérios para testar e medir a qualidade e a relevância da saída em diferentes níveis.
Ao clicar em cada critério de teste, você verá diferentes tipos de classificadores, bem como esquemas predefinidos que podem ser modificados de acordo com seu próprio conjunto de dados de avaliação e critérios.
Como começar
Criar avaliação
Selecione a avaliação do Azure OpenAI (VERSÃO PRÉVIA) no portal do Azure AI Foundry. Para ver essa exibição como uma opção, primeiro selecione um recurso existente do Azure OpenAI em uma região com suporte.
Selecionar + Nova avaliação
Escolha como você deseja fornecer dados de teste para avaliação. Você pode importar conclusões de chat armazenadas, criar dados usando modelos padrão fornecidos ou carregar seus próprios dados. Vamos orientá-lo no processo de carregamento de seus próprios dados.
Selecione os dados de avaliação que estarão em
.jsonlformato. Se você já tiver dados existentes, poderá selecionar um ou carregar novos dados.Ao carregar novos dados, você verá as três primeiras linhas do arquivo como uma visualização no lado direito:
Se você precisar de um arquivo de teste de exemplo, poderá usar este texto de exemplo
.jsonl. Este exemplo contém frases de várias partes de conteúdo técnico e vamos avaliar a semelhança semântica entre essas frases.{"input": [{"role": "system", "content": "Provide a clear and concise summary of the technical content, highlighting key concepts and their relationships. Focus on the main ideas and practical implications."}, {"role": "user", "content": "Tokenization is a key step in preprocessing for natural language processing, involving the division of text into smaller components called tokens. These can be words, subwords, or characters, depending on the method chosen. Word tokenization divides text at word boundaries, while subword techniques like Byte Pair Encoding (BPE) or WordPiece can manage unknown words by breaking them into subunits. Character tokenization splits text into individual characters, useful for multiple languages and misspellings. The tokenization method chosen greatly affects model performance and its capacity to handle various languages and vocabularies."}], "output": "Tokenization divides text into smaller units (tokens) for NLP applications, using word, subword (e.g., BPE), or character methods. Each has unique benefits, impacting model performance and language processing capabilities."} {"input": [{"role": "system", "content": "Create a comprehensive yet concise summary that captures the essential technical details and significance of the topic."}, {"role": "user", "content": "Self-attention mechanisms are vital in modern transformer models, allowing them to evaluate the relevance of different parts of an input sequence when processing each element. In self-attention, each position in a sequence learns to focus on all other positions, forming a weighted sum of their values. Attention weights are derived using queries, keys, and values, with compatibility between a query and key determining attention to each value. This mechanism enables capturing long-range dependencies and relationships within a sequence, making it effective for tasks needing context understanding and inter-part relationships."}], "output": "Self-attention is crucial in transformers, enabling each sequence position to evaluate and collect data from all others. It uses queries, keys, and values for attention weights, effectively capturing long-range dependencies and contextual links."} {"input": [{"role": "system", "content": "Synthesize the technical information into a brief, accurate summary that maintains the core concepts and their significance."}, {"role": "user", "content": "The transformer architecture significantly changed natural language processing by introducing a new method for sequence processing. Unlike recurrent neural networks, transformers process whole sequences at once using self-attention. The architecture consists of an encoder and decoder, each with multiple layers of multi-head attention, feed-forward networks, and normalization layers. The encoder processes the input sequence, and the decoder produces the output sequence. Positional encodings are added to retain sequence order information since the model lacks inherent sequence position awareness. This architecture underlies many leading language models like BERT and GPT."}], "output": "Transformers are a transformative neural architecture processing sequences with self-attention instead of recurrence. Their encoder-decoder design, with multi-head attention and position encodings, is fundamental to modern language models like BERT and GPT."} {"input": [{"role": "system", "content": "Distill the technical content into a clear, concise summary that preserves the most important concepts and their practical applications."}, {"role": "user", "content": "Cosine similarity is a metric for measuring similarity between vectors by calculating the cosine of the angle between them. The outcome ranges from -1 to 1, with 1 indicating identical orientation, 0 orthogonality, and -1 opposite orientation. In machine learning and NLP, cosine similarity is useful for comparing document vectors, word embeddings, or any high-dimensional representations. It's often preferred over Euclidean distance because it's invariant to vector magnitude, focusing instead on orientation. This makes it particularly useful for comparing documents or embeddings of various lengths or scales."}], "output": "Cosine similarity evaluates vector similarity by computing their angle's cosine, with values from -1 to 1. It's widely used in ML and NLP for comparing document vectors and embeddings due to its magnitude-invariant nature."} {"input": [{"role": "system", "content": "Provide a succinct summary that captures the key technical concepts and their relationships while maintaining clarity and accuracy."}, {"role": "user", "content": "Neural network activation functions are crucial for introducing non-linearity to deep learning models. Commonly used activation functions include ReLU (Rectified Linear Unit), which outputs the input directly if positive and zero otherwise, sigmoid, which compresses values between 0 and 1, and tanh, which normalizes values between -1 and 1. Each function has specific benefits and applications: ReLU avoids vanishing gradients and enables sparse activation, sigmoid is useful for binary classification, and tanh is often used in hidden layers for its zero-centered output. The activation function choice greatly affects model training dynamics and ultimate performance."}], "output": "Activation functions introduce non-linearity to neural networks, with ReLU, sigmoid, and tanh being the most common. Each serves distinct purposes: ReLU prevents vanishing gradients, sigmoid is suitable for binary classification, and tanh offers zero-centered output, all affecting model performance differently."} {"input": [{"role": "system", "content": "Create a focused summary that emphasizes the main technical concepts and their practical implications while maintaining accuracy."}, {"role": "user", "content": "Batch normalization is a technique that stabilizes and accelerates deep neural network training by normalizing each layer's inputs. It normalizes activations using the mean and variance computed over the current data batch. This normalization reduces internal covariate shift, where the input distribution changes during training. Batch normalization includes learnable parameters (gamma and beta) allowing the network to reverse normalization if necessary. Benefits include enabling higher learning rates, lessening the importance of precise parameter initialization, and serving as a regularizer, potentially removing the need for dropout."}], "output": "Batch normalization stabilizes neural network training by normalizing layer inputs using batch statistics. It addresses internal covariate shift with learnable parameters, allowing higher learning rates and improved training dynamics, while offering regularization benefits."} {"input": [{"role": "system", "content": "Summarize the technical content while preserving the essential concepts and their interconnections, ensuring clarity and precision."}, {"role": "user", "content": "Gradient descent optimization algorithms are foundational to training machine learning models. The basic version updates parameters in the steepest descent direction of the loss function. Variants like Stochastic Gradient Descent (SGD) use random samples to estimate gradients, enhancing computational efficiency. Advanced optimizers like Adam combine momentum (helping overcome local minima) and RMSprop (adapting learning rates for each parameter). These optimizers maintain running averages of gradients and their squares, enabling adaptive learning rates and more efficient training. The optimizer choice can significantly influence model convergence speed and final performance."}], "output": "Gradient descent algorithms optimize ML models by updating parameters based on loss gradients. Variants like SGD use sampling for efficiency, while advanced optimizers like Adam combine momentum with adaptive learning rates for improved training performance."} {"input": [{"role": "system", "content": "Deliver a concise yet comprehensive summary that highlights the key technical aspects and their practical significance."}, {"role": "user", "content": "Cross-validation is a resampling method used to evaluate machine learning models on limited data. The most common form, k-fold cross-validation, involves dividing the dataset into k equal parts, training the model on k-1 folds while validating on the remaining fold, and rotating through all combinations. This provides a more robust model performance assessment than a single train-test split, helping detect overfitting and estimate model generalization to unseen data. Variations include stratified k-fold (maintaining class distribution), leave-one-out (k equals dataset size), and time series cross-validation for temporal data."}], "output": "Cross-validation evaluates ML models by training and testing on different data splits, typically using k-fold methodology. This approach offers better performance assessment than single splits, with variations for different data types and requirements."} {"input": [{"role": "system", "content": "Generate a clear and focused summary that captures the essential technical details while maintaining their relationships and significance."}, {"role": "user", "content": "Transfer learning is a machine learning method where a model developed for one task is reused as the starting point for a model on a second task. This approach is powerful in deep learning, where pre-trained models on large datasets (like ImageNet for computer vision or BERT for NLP) are fine-tuned on specific downstream tasks. Transfer learning reduces the need for large amounts of task-specific training data and computational resources, as the model has already learned useful features from the source ___domain. Common strategies include feature extraction (freezing pre-trained layers) and fine-tuning (updating all or some pre-trained weights)."}], "output": "Transfer learning reuses models trained on one task for different tasks, particularly effective in deep learning. It leverages pre-trained models through feature extraction or fine-tuning, reducing data and computational needs for new tasks."} {"input": [{"role": "system", "content": "Provide a precise and informative summary that distills the key technical concepts while maintaining their relationships and practical importance."}, {"role": "user", "content": "Ensemble methods combine multiple machine learning models to create a more robust and accurate predictor. Common techniques include bagging (training models on random data subsets), boosting (sequentially training models to correct earlier errors), and stacking (using a meta-model to combine base model predictions). Random Forests, a popular bagging method, create multiple decision trees using random feature subsets. Gradient Boosting builds trees sequentially, with each tree correcting the errors of previous ones. These methods often outperform single models by reducing overfitting and variance while capturing different data aspects."}], "output": "Ensemble methods enhance prediction accuracy by combining multiple models through techniques like bagging, boosting, and stacking. Popular implementations include Random Forests (using multiple trees with random features) and Gradient Boosting (sequential error correction), offering better performance than single models."}Se você quiser criar novas respostas usando entradas de seus dados de teste, poderá selecionar Gerar novas respostas. Isso irá inserir os campos de entrada do nosso arquivo de avaliação em prompts individuais, permitindo que um modelo de sua escolha gere a saída.
Você selecionará o modelo de sua escolha. Se você não tiver um modelo, poderá criar uma implantação de modelo. O modelo selecionado usará os dados de entrada e gerará suas próprias saídas exclusivas, que nesse caso serão armazenadas em uma variável chamada {{sample.output_text}}. Em seguida, usaremos essa saída mais tarde como parte de nossos critérios de teste. Como alternativa, você pode fornecer sua própria mensagem de sistema personalizada e exemplos de mensagens individuais manualmente.
Para criar um critério de teste, selecione Adicionar. Para o arquivo de exemplo que fornecemos, vamos avaliar a similaridade semântica. Selecione o Model Scorer, que contém predefinições de critérios de teste para Similaridade Semântica.
Selecione Similaridade Semântica na parte superior. Role até a parte inferior e, na
Userseção, especifique{{item.output}}comoGround truthe especifique{{sample.output_text}}comoOutput. Isso tirará a saída de referência original do arquivo de avaliação.jsonl(o arquivo de exemplo fornecido) e a comparará com a saída gerada pelo modelo escolhido na etapa anterior.
Selecione Adicionar para adicionar esses critérios de teste. Se você quiser adicionar critérios de teste adicionais, poderá adicioná-los nesta etapa.
Você está pronto para criar sua Avaliação. Forneça o nome da Avaliação, verifique se tudo está correto e Envie para criar o processo de Avaliação. Você será levado para uma página de status para seu trabalho de avaliação, que mostrará o status como Aguardando.
- Depois que o trabalho de avaliação for criado, você poderá selecionar o trabalho para exibir os detalhes completos do trabalho:
- Para testes de similaridade semântica, a opção Exibir detalhes da saída contém uma representação JSON que você pode copiar/colar dos testes aprovados.
- Você também pode adicionar mais execuções de Eval selecionando o botão + Adicionar Execução no canto superior esquerdo da página do seu trabalho de avaliação.
Criar avaliação
Você pode criar uma avaliação especificando uma configuração de fonte de dados e os critérios de teste de avaliação. Abaixo está uma das várias maneiras de definir uma configuração de fonte de dados. Você também pode especificar um ou muitos critérios de teste.
import asyncio
import json
import requests
async def create_eval():
response = await asyncio.to_thread(
requests.post,
f'{API_ENDPOINT}/openai/v1/evals',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
},
json={
'name': 'My Evaluation',
'data_source_config': {
'type': 'custom',
'item_schema': {
'type': 'object',
'properties': {
'question': {
'type': 'string'
},
'subject': {
'type': 'string'
},
'A': {
'type': 'string'
},
'B': {
'type': 'string'
},
'C': {
'type': 'string'
},
'D': {
'type': 'string'
},
'answer': {
'type': 'string'
},
'completion': {
'type': 'string'
}
}
}
},
'testing_criteria': [
{
'type': 'string_check',
'reference': '{{item.completion}}',
'input': '{{item.answer}}',
'operation': 'eq',
'name': 'string check'
}
]
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Criar uma única execução
A Avaliação do Azure OpenAI permite a criação de várias execuções em um trabalho de avaliação. Se você quiser adicionar uma única execução de avaliação a uma avaliação existente, poderá especificar a eval_id avaliação existente:
import asyncio
import requests
import json
response = await asyncio.to_thread(
requests.post,
f'{API_ENDPOINT}/openai/v1/evals/{eval_id}/runs',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
},
json={
"name": "No sample",
"metadata": {
"sample_generation": "off",
"file_format": "jsonl"
},
"data_source": {
"type": "jsonl",
"source": {
"type": "file_id",
"id": "file-75099d8d4b5b4abca7cc91e9eca7bba1"
}
}
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Atualizar avaliação existente
import asyncio
import requests
import json
async def update_eval():
response = await asyncio.to_thread(
requests.post,
f'{API_ENDPOINT}/openai/v1/evals/{eval_id}',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
},
json={
"name": "Updated Eval Name",
"metadata": {
"sample_generation": "off",
"file_format": "jsonl",
"updated": "metadata"
}
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Resultados da avaliação
Depois que a avaliação for concluída, você poderá buscar os resultados da avaliação para o trabalho de avaliação especificando o eval_id.
import asyncio
import requests
async def get_eval():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/{eval_id}',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(response.json())
Resultado da execução de avaliação única
Assim como você pode criar uma única execução de avaliação em um trabalho de avaliação existente, você também pode recuperar o resultado para uma única execução:
import asyncio
import requests
import json
async def get_eval_run():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/eval_67fd95c864f08190817f0dff5f42f49e/runs/evalrun_67fe987a6c548190ba6f33f7cd89343d',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Além dos parâmetros nos exemplos acima, você pode, opcionalmente, adicionar esses parâmetros para detalhamentos mais específicos nos resultados da avaliação:
| Nome | Em | Obrigatório | Tipo | Descrição |
|---|---|---|---|---|
| ponto de extremidade | caminho | Yes | cadeia | Pontos de extremidade do OpenAI do Azure com suporte (protocolo e nome do host, por exemplo: https://aoairesource.openai.azure.com. Substitua "aoairesource" pelo nome do recurso do OpenAI do Azure). https://{your-resource-name}.openai.azure.com |
| eval-id | caminho | Yes | cadeia | A ID da avaliação para a qual recuperar as execuções. |
| run-id | caminho | Yes | cadeia | A ID da execução para a qual recuperar itens de saída. |
| after | consulta | Não | cadeia | Identificador do último item de saída da solicitação de paginação anterior. |
| limite | consulta | Não | inteiro | Número de itens de saída a serem recuperados. |
| status | consulta | Não | cadeia | Valores possíveis: fail, pass. Filtrar itens de saída por status. Use fail to filter by itens de saída com falha ou passe para filtrar por itens de saída passados. |
| ordem | consulta | Não | cadeia | Valores possíveis: asc, desc. Ordem de classificação dos itens de saída por carimbo de data/hora. Use asc para ordem crescente ou desc para ordem decrescente. O padrão é asc. |
| versão da API | consulta | Yes | cadeia | A versão da API solicitada. |
Lista de avaliação
Para ver a lista de todos os trabalhos de avaliação que foram criados:
import asyncio
import requests
import json
async def get_eval_list():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Detalhes de saída para uma execução
Você pode exibir as saídas individuais geradas dos alunos para uma única execução de avaliação:
import asyncio
import requests
import json
async def get_eval_output_item_list():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/eval_67fd95c864f08190817f0dff5f42f49e/runs/evalrun_67fe987a6c548190ba6f33f7cd89343d/output_items',
headers={
'api-key': API_KEY,
'aoai-evals': 'preview'
})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Se você tiver um resultado de saída específico que gostaria de ver, poderá especificar a ID do item de saída:
import asyncio
import requests
import json
async def get_eval_output_item():
response = await asyncio.to_thread(
requests.get,
f'{API_ENDPOINT}/openai/v1/evals/eval_67fd95c864f08190817f0dff5f42f49e/runs/evalrun_67fe987a6c548190ba6f33f7cd89343d/output_items/outputitem_67fe988369308190b50d805120945deb',
headers={'api-key': API_KEY})
print(response.status_code)
print(json.dumps(response.json(), indent=2))
Criar avaliação
Você pode criar uma avaliação especificando uma configuração de fonte de dados e os critérios de teste de avaliação. Abaixo está uma das várias maneiras de definir uma configuração de fonte de dados. Você também pode especificar um ou muitos critérios de teste.
curl -X POST "$AZURE_OPENAI_ENDPOINT/openai/v1/evals" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-H "aoai-evals: preview" \
-d '{
"name": "Math Quiz",
"data_source_config": {
"type": "custom",
"include_sample_schema": true,
"item_schema": {
"type": "object",
"properties": {
"question": { "type": "string" },
"A": { "type": "string" },
"B": { "type": "string" },
"C": { "type": "string" },
"D": { "type": "string" },
"answer": { "type": "string" }
}
}
},
"testing_criteria": [
{
"type": "string_check",
"reference": "{{item.answer}}",
"input": "{{sample.output_text}}",
"operation": "eq",
"name": "string check"
}
]
}'
Criar uma única execução
A Avaliação do Azure OpenAI permite a criação de várias execuções em um trabalho de avaliação.
Você pode adicionar novas execuções de avaliação ao trabalho de avaliação criado na etapa anterior, especificando eval-id.
curl -X POST "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Atualizar avaliação existente
curl -X POST "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id} \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Resultados da avaliação
Depois que a avaliação for concluída, você poderá buscar os resultados da avaliação para o trabalho de avaliação especificando o eval_id.
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Resultado da execução de avaliação única
Assim como você pode criar uma única execução de avaliação em um trabalho de avaliação existente, você também pode recuperar o resultado para uma única execução:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs/{run-id}" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Além dos parâmetros nos exemplos acima, você pode, opcionalmente, adicionar esses parâmetros para detalhamentos mais específicos nos resultados da avaliação:
| Nome | Em | Obrigatório | Tipo | Descrição |
|---|---|---|---|---|
| ponto de extremidade | caminho | Yes | cadeia | Pontos de extremidade do OpenAI do Azure com suporte (protocolo e nome do host, por exemplo: https://aoairesource.openai.azure.com. Substitua "aoairesource" pelo nome do recurso do OpenAI do Azure). https://{your-resource-name}.openai.azure.com |
| eval-id | caminho | Yes | cadeia | A ID da avaliação para a qual recuperar as execuções. |
| run-id | caminho | Yes | cadeia | A ID da execução para a qual recuperar itens de saída. |
| after | consulta | Não | cadeia | Identificador do último item de saída da solicitação de paginação anterior. |
| limite | consulta | Não | inteiro | Número de itens de saída a serem recuperados. |
| status | consulta | Não | cadeia | Valores possíveis: fail, pass. Filtrar itens de saída por status. Use fail to filter by itens de saída com falha ou passe para filtrar por itens de saída passados. |
| ordem | consulta | Não | cadeia | Valores possíveis: asc, desc. Ordem de classificação dos itens de saída por carimbo de data/hora. Use asc para ordem crescente ou desc para ordem decrescente. O padrão é asc. |
| versão da API | consulta | Yes | cadeia | A versão da API solicitada. |
Lista de avaliação
Para ver a lista de todos os trabalhos de avaliação que foram criados:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Detalhes de saída para uma execução
Você pode exibir as saídas individuais geradas dos alunos para uma única execução de avaliação:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs/{run-id}/output_items" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Se você tiver um resultado de saída específico que gostaria de ver, poderá especificar a ID do item de saída:
curl -X GET "$AZURE_OPENAI_ENDPOINT/openai/v1/evals/{eval-id}/runs/{run-id}/output_items/{output-item-id}" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY"
-H "aoai-evals: preview" \
Tipos de critérios de teste
A Avaliação do Azure OpenAI oferece vários critérios de teste além da Similaridade Semântica que vimos no exemplo fornecido. Esta seção fornece informações sobre cada critério de teste com muito mais detalhes.
Factualidade
Avalia a exatidão factual de uma resposta submetida ao compará-la com uma resposta fornecida por um especialista.
A factualidade avalia a exatidão factual de uma resposta enviada comparando-a a uma resposta especializada. Utilizando um prompt detalhado com a técnica de cadeia de raciocínio (Chain-of-Thought, CoT), o avaliador determina se a resposta submetida está consistente com a resposta do especialista. Além disso, identifica se a resposta é um subconjunto, um superconjunto ou se entra em conflito com a resposta fornecida pelo especialista. Diferenças de estilo, gramática ou pontuação são desconsideradas, com foco exclusivo no conteúdo factual. A factualidade pode ser útil em diversos cenários, incluindo, mas não se limitando a, verificação de conteúdo e ferramentas educacionais, garantindo que as respostas fornecidas pela IA sejam precisas.
Você pode exibir o texto do prompt usado como parte desses critérios de teste selecionando o menu suspenso ao lado do prompt. O texto atual do prompt é:
Prompt
You are comparing a submitted answer to an expert answer on a given question.
Here is the data:
[BEGIN DATA]
************
[Question]: {input}
************
[Expert]: {ideal}
************
[Submission]: {completion}
************
[END DATA]
Compare the factual content of the submitted answer with the expert answer. Ignore any differences in style, grammar, or punctuation.
The submitted answer may either be a subset or superset of the expert answer, or it may conflict with it. Determine which case applies. Answer the question by selecting one of the following options:
(A) The submitted answer is a subset of the expert answer and is fully consistent with it.
(B) The submitted answer is a superset of the expert answer and is fully consistent with it.
(C) The submitted answer contains all the same details as the expert answer.
(D) There is a disagreement between the submitted answer and the expert answer.
(E) The answers differ, but these differences don't matter from the perspective of factuality.
Similaridade semântica
Mede o grau de similaridade entre a resposta do modelo e a referência.
Grades: 1 (completely different) - 5 (very similar).
Sentimento
Tenta identificar o tom emocional da saída.
Você pode exibir o texto do prompt usado como parte desses critérios de teste selecionando o menu suspenso ao lado do prompt. O texto atual do prompt é:
Prompt
You will be presented with a text generated by a large language model. Your job is to rate the sentiment of the text. Your options are:
A) Positive
B) Neutral
C) Negative
D) Unsure
[BEGIN TEXT]
***
[{text}]
***
[END TEXT]
First, write out in a step by step manner your reasoning about the answer to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character (without quotes or punctuation) on its own line corresponding to the correct answer. At the end, repeat just the letter again by itself on a new line
Verificação de cadeia
Verifica se a saída corresponde exatamente à cadeia de caracteres esperada.
A verificação de cadeia de caracteres realiza várias operações binárias em duas variáveis de cadeia, permitindo critérios de avaliação diversificados. Ajuda a verificar várias relações de cadeia, incluindo igualdade, independência e padrões específicos. Este avaliador permite comparações para diferenciar maiúsculas de minúsculas ou não. Também fornece classificações especificadas para resultados de verdadeiro ou falso, permitindo resultados de avaliação personalizados com base no resultado da comparação. Aqui estão os tipos de operações com suporte:
-
equals: verifica se a cadeia de saída é exatamente igual à cadeia de avaliação. -
contains: verifica se a cadeia de avaliação é uma subcadeia da cadeia de saída. -
starts-with: verifica se a cadeia de saída começa com a cadeia de avaliação. -
ends-with: verifica se a cadeia de saída termina com a cadeia de avaliação.
Observação
Ao definir certos parâmetros nos seus critérios de teste, você tem a opção de escolher entre variável e modelo. Selecione variável se quiser fazer referência a uma coluna nos seus dados de entrada. Escolha modelo se quiser fornecer uma cadeia de caracteres fixa.
Validação de JSON ou XML
Verifica se a saída é um JSON ou XML válido.
Correspondência de esquema
Garante que a saída segue a estrutura especificada.
Correspondência de critérios
Avalia se a resposta do modelo corresponde aos critérios estabelecidos. Classificação: A avaliação pode ser "Aprovado" ou "Reprovado".
Você pode exibir o texto do prompt usado como parte desses critérios de teste selecionando o menu suspenso ao lado do prompt. O texto atual do prompt é:
Prompt
Your job is to assess the final response of an assistant based on conversation history and provided criteria for what makes a good response from the assistant. Here is the data:
[BEGIN DATA]
***
[Conversation]: {conversation}
***
[Response]: {response}
***
[Criteria]: {criteria}
***
[END DATA]
Does the response meet the criteria? First, write out in a step by step manner your reasoning about the criteria to be sure that your conclusion is correct. Avoid simply stating the correct answers at the outset. Then print only the single character "Y" or "N" (without quotes or punctuation) on its own line corresponding to the correct answer. "Y" for yes if the response meets the criteria, and "N" for no if it does not. At the end, repeat just the letter again by itself on a new line.
Reasoning:
Qualidade do texto
Avalia a qualidade do texto comparando-o com um texto de referência.
Resumo:
- Pontuação BLEU: avalia a qualidade do texto gerado ao compará-lo com uma ou mais traduções de referência de alta qualidade usando a pontuação BLEU.
- Pontuação ROUGE: avalia a qualidade do texto gerado ao compará-lo com resumos de referência usando pontuações ROUGE.
- Cosseno: também de similaridade cosseno, mede o quão próximos duas incorporações de texto (como as saídas do modelo e os textos de referência) se alinham em significado, ajudando a avaliar a similaridade semântica entre eles. Isso é feito medindo a distância entre elas em um espaço vetorial.
Detalhes:
A pontuação BLEU (BiLingual Evaluation Understudy) é comumente usada em processamento de linguagem natural (NLP) e tradução automática. Ela é amplamente usada em casos de uso de resumo de texto e geração de texto. Avalia o quão próximo o texto gerado está do texto de referência. A pontuação BLEU varia de 0 a 1, onde valores mais altos indicam melhor qualidade.
ROUGE (Recall-Oriented Understudy for Gisting Evaluation) é um conjunto de métricas usadas para avaliar o resumo automático e a tradução automática. Ela mede a sobreposição entre o texto gerado e os resumos de referência. A pontuação ROUGE se concentra em medidas voltadas para o recall para avaliar o quão bem o texto gerado aborda o texto de referência. A pontuação ROUGE fornece várias métricas, incluindo:
- ROUGE-1: sobreposição de unigramas (palavras simples) entre texto gerado e de referência.
- ROUGE-2: sobreposição de bigramas (duas palavras consecutivas) entre o texto gerado e o texto de referência.
- ROUGE-3: sobreposição de trigramas (três palavras consecutivas) entre o texto gerado e o texto de referência.
- ROUGE-4: sobreposição de quatro gramas (quatro palavras consecutivas) entre o texto gerado e o texto de referência.
- ROUGE-5: sobreposição de cinco gramas (cinco palavras consecutivas) entre o texto gerado e o texto de referência.
- ROUGE-L: sobreposição de L-gramas (L palavras consecutivas) entre o texto gerado e o texto de referência.
A sumarização de texto e a comparação de documentos estão entre os casos de uso ideais para ROUGE, especialmente em cenários em que a coerência e a relevância do texto são críticas.
Cosseno:mede o quão próximos duas incorporações de texto (como as saídas do modelo e os textos de referência) se alinham em significado, ajudando a avaliar a similaridade semântica entre eles. Assim como outros avaliadores baseados em modelo, é necessário fornecer uma implantação de modelo para usar a avaliação.
Importante
Somente modelos de incorporações são compatíveis com esse avaliador:
text-embedding-3-smalltext-embedding-3-largetext-embedding-ada-002
Prompt personalizado
Usa o modelo para classificar a saída em um conjunto de rótulos especificados. Esse avaliador usa um prompt personalizado que você precisará definir.