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.
Este guia de início rápido orienta você pelas etapas essenciais necessárias para criar, testar e implantar um projeto CQA (resposta a perguntas personalizadas) no Microsoft Foundry. Se você estiver fazendo a transição do Language Studio ou começando do zero, este início rápido é para você. Ele fornece instruções claras e acionáveis para obter uma implantação de projeto de CQA rápida e bem-sucedida.
Observação
- Se você já tiver um idioma do Azure nas Ferramentas Foundry ou recurso de multi-serviços, seja sozinho ou por meio do Language Studio, poderá continuar a usar esses recursos de Linguagem existentes no portal do Foundry. Para obter mais informações, consulte Como usar as Ferramentas do Foundry no portal do Foundry.
- Recomendamos fortemente que você use um recurso do Foundry no Foundry; no entanto, você também pode seguir estas instruções usando um recurso de Linguagem.
Pré-requisitos
Antes de começar, você precisa dos seguintes recursos e permissões:
- Uma assinatura ativa do Azure. Caso não tenha uma, crie uma gratuitamente.
- Permissões de requisito. Verifique se a pessoa que está estabelecendo a conta e o projeto é designada como proprietária da conta de IA do Azure no nível da assinatura. Como alternativa, ter a função Colaborador ou Colaborador dos Serviços Cognitivos no escopo da assinatura também atende a esse requisito. Para obter mais informações, consulteRBAC (controle de acesso baseado em função).
- Um recurso de Foundry ou um recurso linguístico.
- Um recurso da Pesquisa de IA do Azure (necessário para acessar o CQA). Para obter mais informações sobre como conectar seu recurso de Pesquisa de IA do Azure, consulteConfigurar conexões no Foundry
- Um projeto do Foundry criado no Foundry. Para mais informações, vejaCriar um projeto do Foundry.
Introdução
Acesse o Foundry.
Se você ainda não estiver conectado, o portal solicitará que você faça isso com suas credenciais do Azure.
Depois de conectado, você pode criar ou acessar seus projetos existentes no Foundry.
Se você ainda não estiver em seu projeto para esta tarefa, selecione-a.
Crie sua tarefa de ajuste do CQA
Na Foundry, uma tarefa de ajuste fino serve como seu espaço de trabalho para suas soluções CQA. Anteriormente, uma tarefa de ajuste era conhecida como um projeto de CQA. Você pode encontrar ambos os termos usados de forma intercambiável na documentação mais antiga do CQA.
Depois de selecionar o projeto do Foundry a ser usado neste início rápido, selecione ajuste fino no menu de navegação à esquerda.
Na janela principal, selecione a guia Ajuste do serviço de IA e, em seguida, o botão + Ajuste.
Na janela Criar serviço de ajuste, escolha a guia Respostas às perguntas personalizadas e, em seguida, selecione Avançar.
Selecione o recurso de Pesquisa de IA do Azure conectado na janela Criar tarefa de ajuste do CQA. Para obter mais informações, consulteConfigurar conexões de recursos do Azure.
Em seguida, conclua os campos Nome e Idioma. Para este projeto, você pode deixar a Resposta padrão quando nenhuma resposta é retornada no campo como está (Nenhuma resposta encontrada).
Selecione o botão Criar.
Adicionar uma fonte de base de dados de conhecimento CQA
Uma base de dados de conhecimento CQA é um conjunto estruturado de pares de perguntas e respostas otimizados para IA de conversa. A base de dados de conhecimento usa o processamento de linguagem natural para interpretar consultas de usuário e retornar respostas precisas e com reconhecimento de contexto de um conjunto de dados específico.
No menu Introdução, selecione Gerenciar fontes.
Na janela principal, selecione o menu suspenso + Adicionar fonte.
No menu suspenso, você pode selecionar Adicionar bate-papo, Adicionar URLs ou Adicionar Arquivos.
Para este projeto, vamos escolher Adicionar bate-papo.
Na janela Adicionar nova fonte, vamos escolher Amigável.
Por fim, selecione Adicionar. Pode levar alguns minutos para a fonte ser criada.
Depois de criada, a fonte é listada na janela Gerenciar fontes.
Testar a base de dados de conhecimento
Selecione Testar a base de dados de conhecimento no menu Introdução.
Digite o seguinte no campo Digitar sua pergunta e selecione Executar.
Hello! How are you doing today?Na interface de inspeção, você pode examinar o nível de confiança da resposta e escolher a resposta mais adequada.
Implantar sua base de dados de conhecimento
Implantar uma base de dados de conhecimento CQA significa publicar seu conteúdo de perguntas e respostas coletado como um ponto de extremidade dinâmico e que pode ser pesquisado. Esse processo move seu projeto de uma fase de teste para um ambiente de produção, permitindo que os aplicativos cliente o usem para vários projetos e soluções, incluindo chatbots.
Depois que a inspeção for concluída, escolha a seção Implantar base de dados de conhecimento no menu Introdução.
Selecione o botão Implantar primeiro na janela principal Implantar base de dados de conhecimento e, em seguida, na janela pop-up Implantar este projeto. Isso leva alguns minutos para ser implantado.
Após a conclusão da implantação, o projeto implantado será listado na janela Implantar base de dados de conhecimento.
É isso! Sua base de dados de conhecimento CQA (Respostas às Perguntas Personalizadas) fornece uma interface de linguagem natural para seus dados, permitindo que os usuários interajam com informações de maneira conversacional. Ao implantar essa solução, você pode criar chatbots avançados e agentes interativos que compreendam as perguntas do usuário, fornecem respostas precisas e se ajustam às mudanças nos requisitos informativos.
Pré-requisitos
- A versão atual do cURL. Várias opções de linha de comando são usadas nos inícios rápidos, indicadas na documentação do cURL.
- Assinatura do Azure – Criar uma gratuitamente
- A resposta a perguntas personalizadas requer um recurso de linguagem com o recurso de resposta de pergunta personalizado habilitado para gerar uma chave de API e um ponto de extremidade.
- Após a implantação do recurso de Idioma, selecione Ir para o recurso. Você precisará da chave e do ponto de extremidade do recurso criado para conectar à API. Cole a chave e o ponto de extremidade no código mais adiante no guia de início rápido.
- Crie um recurso de linguagem com a CLI do Azure e forneça as seguintes propriedades:
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Um projeto existente a ser consultado. Se você não tiver configurado um projeto, poderá seguir as instruções no início rápido do Foundry. Ou adicione um projeto que use essa URL do Guia do Usuário do Surface como fonte de dados.
Configurando
Criar variáveis de ambiente
Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente no computador local que está executando o aplicativo.
Para definir a variável de ambiente da chave de recurso de linguagem, abra uma janela do console e siga as instruções para o seu sistema operacional e ambiente de desenvolvimento.
- Para definir a variável de ambiente
LANGUAGE_KEY, substituayour-keypor uma das chaves do recurso. - Para definir a variável de ambiente
LANGUAGE_ENDPOINT, substituayour-endpointpelo ponto de extremidade do recurso.
Importante
Recomendamos a autenticação da ID do Microsoft Entra com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.
Use as chaves de API com cautela. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Azure Key Vault, faça a rotação de chaves regularmente e restrinja o acesso ao Azure Key Vault usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte as chaves de API com o Azure Key Vault.
Para obter mais informações sobre a segurança dos serviços de IA, consulte Autenticar solicitações para os serviços de IA do Azure.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Observação
Se for necessário acessar somente as variáveis de ambiente no console em execução no momento, você pode definir a variável de ambiente com set em vez de setx.
Depois de adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se estiver usando o Visual Studio como seu editor, reinicie-o antes de executar o exemplo.
Consultar um projeto
Gerar uma resposta de um projeto
Para consultar um projeto de resposta a perguntas personalizadas com as APIs REST e cURL, você precisa das seguintes informações:
| Nome da variável | Valor |
|---|---|
Endpoint |
Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao analisar o recurso no portal do Azure. Um ponto de extremidade de exemplo é: https://southcentralus.cognitiveservices.azure.com/ |
API-Key |
Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao analisar o recurso no portal do Azure. Você pode usar Key1 ou Key2. Sempre tenha duas chaves válidas para uma rotação de chaves segura sem tempo de inatividade. O valor da chave faz parte da solicitação de exemplo. |
Project |
O nome do projeto de respostas às perguntas personalizadas. |
Deployment |
Há dois valores possíveis: test e production. |
O comando cURL é executado em um shell BASH. Edite esse comando com os valores de nome de recurso, chave de recurso e JSON e o tamanho do JSON.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question": "How much battery life do I have left?"
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-knowledgebases?projectName={YOUR_PROJECT_NAME}&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'
Ao executar o código, se você estiver usando a fonte de dados dos pré-requisitos, receberá uma resposta semelhante à seguinte:
{
"answers": [
{
"questions": [
"Check battery level"
],
"answer": "If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.",
"confidenceScore": 0.9185,
"id": 101,
"source": "https://support.microsoft.com/en-us/surface/how-to-use-your-surface-pen-8a403519-cd1f-15b2-c9df-faa5aa924e98",
"metadata": {},
"dialog": {
"isContextOnly": false,
"prompts": []
}
}
]
}
confidenceScore retorna um valor entre 0 e 1. Considere a pontuação de confiança como uma porcentagem multiplicando-a por 100. Por exemplo, uma pontuação de confiança de 0,9185 indica que o sistema personalizado de resposta a perguntas é 91,85% confiante de que sua resposta está correta com base nas informações do projeto.
Se quiser excluir respostas em que a pontuação de confiança fica abaixo de um determinado limite, adicione o parâmetro confidenceScoreThreshold.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question": "How much battery life do I have left?",
"confidenceScoreThreshold": "0.95",
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com//language/:query-knowledgebases?projectName=Sample-project&api-version=2021-10-01&deploymentName={DEPLOYMENT_NAME}'
Como sabemos pela execução anterior do código que nossa pontuação de confiança é: .9185 definir o limite para .95 resultar no retorno da resposta padrão .
{
"answers": [
{
"questions": [],
"answer": "No good match found in KB",
"confidenceScore": 0.0,
"id": -1,
"metadata": {}
}
]
}
Texto de consulta sem um projeto
Você também pode usar respostas de perguntas personalizadas sem um projeto com a API REST de resposta à pergunta personalizada predefinida, que é chamada por meio de query-text. Nesse caso, você fornece à respostas às perguntas uma pergunta e os registros de texto associados nos quais gostaria de pesquisar uma resposta no momento em que a solicitação for enviada.
Para este exemplo, você só precisa modificar as variáveis para API KEY e ENDPOINT.
curl -X POST -H "Ocp-Apim-Subscription-Key: $LANGUAGE_KEY" -H "Content-Type: application/json" -d '{
"question":"How long does it takes to charge a surface?",
"records":[
{"id":"doc1","text":"Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you\u0027re using your Surface for power-intensive activities like gaming or video streaming while you\u0027re charging it"},
{"id":"doc2","text":"You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."}],
"language":"en",
"stringIndexType":"Utf16CodeUnit"
}' '$LANGUAGE_ENDPOINT.cognitiveservices.azure.com/language/:query-text?&api-version=2021-10-01'
Este exemplo retorna um resultado de:
{
"answers": [
{
"answer": "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
"confidenceScore": 0.9118788838386536,
"id": "doc1",
"answerSpan": {
"text": "two to four hours",
"confidenceScore": 0.9850527,
"offset": 27,
"length": 18
},
"offset": 0,
"length": 243
},
{
"answer": "It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it",
"confidenceScore": 0.052793052047491074,
"id": "doc1",
"answerSpan": {
"text": "longer",
"confidenceScore": 0.6694634,
"offset": 11,
"length": 7
},
"offset": 109,
"length": 134
},
{
"answer": "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
"confidenceScore": 0.017600709572434425,
"id": "doc2",
"answerSpan": {
"text": "USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. The USB port on the power supply is only for charging",
"confidenceScore": 0.1544854,
"offset": 15,
"length": 165
},
"offset": 0,
"length": 280
}
]
}
Use esse início rápido para a biblioteca de clientes de respostas às perguntas personalizadas para .NET para:
- Obtenha uma resposta de um projeto.
- Obter uma resposta de um corpo de texto que você envia com sua pergunta.
- Obter a pontuação de confiança da resposta à sua pergunta.
Documentação de referência | Pacote (NuGet) | Exemplos | Código-fonte da biblioteca
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- O IDE do Visual Studio ou a versão atual do .NET Core.
- A resposta a perguntas personalizadas requer um recurso de linguagem com o recurso de resposta de pergunta personalizado habilitado para gerar uma chave de API e um ponto de extremidade.
- Após a implantação do recurso de Idioma, selecione Ir para o recurso. Você precisará da chave e do ponto de extremidade do recurso criado para conectar à API. Cole a chave e o ponto de extremidade no código mais adiante no guia de início rápido.
- Crie um recurso de linguagem com a CLI do Azure e forneça as seguintes propriedades:
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Um projeto existente a ser consultado. Se você não tiver um projeto, poderá seguir as instruções no início rápido do Microsoft Foundry. Ou adicione um projeto que use essa URL do Guia do Usuário do Surface como fonte de dados.
Configurando
Criar variáveis de ambiente
Seu aplicativo deve ser autenticado para enviar solicitações de API. Para produção, use uma maneira segura de armazenar e acessar suas credenciais. Neste exemplo, você gravará suas credenciais em variáveis de ambiente no computador local que está executando o aplicativo.
Para definir a variável de ambiente da chave de recurso de linguagem, abra uma janela do console e siga as instruções para o seu sistema operacional e ambiente de desenvolvimento.
- Para definir a variável de ambiente
LANGUAGE_KEY, substituayour-keypor uma das chaves do recurso. - Para definir a variável de ambiente
LANGUAGE_ENDPOINT, substituayour-endpointpelo ponto de extremidade do recurso.
Importante
Recomendamos a autenticação da ID do Microsoft Entra com identidades gerenciadas para recursos do Azure para evitar o armazenamento de credenciais com seus aplicativos executados na nuvem.
Use as chaves de API com cautela. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se estiver usando chaves de API, armazene-as com segurança no Azure Key Vault, faça a rotação de chaves regularmente e restrinja o acesso ao Azure Key Vault usando controle de acesso baseado em função e restrições de acesso à rede. Para obter mais informações sobre como usar chaves de API com segurança em seus aplicativos, consulte as chaves de API com o Azure Key Vault.
Para obter mais informações sobre a segurança dos serviços de IA, consulte Autenticar solicitações para os serviços de IA do Azure.
setx LANGUAGE_KEY your-key
setx LANGUAGE_ENDPOINT your-endpoint
Observação
Se for necessário acessar somente as variáveis de ambiente no console em execução no momento, você pode definir a variável de ambiente com set em vez de setx.
Depois de adicionar as variáveis de ambiente, talvez seja necessário reiniciar todos os programas em execução que precisarão ler as variáveis de ambiente, incluindo a janela do console. Por exemplo, se estiver usando o Visual Studio como seu editor, reinicie-o antes de executar o exemplo.
CLI
Em uma janela de console (como cmd, PowerShell ou Bash), use o comando dotnet new para criar um novo aplicativo do console com o nome question-answering-quickstart. Esse comando cria um projeto C# "Olá, Mundo" simples com um único arquivo de origem: program.cs.
dotnet new console -n question-answering-quickstart
Altere o diretório para a pasta do aplicativo recém-criado. É possível criar o aplicativo com:
dotnet build
A saída de compilação não deve conter nenhum aviso ou erro.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
No diretório do aplicativo, instale a biblioteca de cliente de resposta às perguntas personalizadas para .NET com o seguinte comando:
dotnet add package Azure.AI.Language.QuestionAnswering
Consultar um projeto
Gerar uma resposta de um projeto
O exemplo a seguir permitirá que você consulte um projeto usando GetAnswers para obter uma resposta à sua pergunta.
Você precisará atualizar o código e fornecer seus valores para as variáveis a seguir:
| Nome da variável | Valor |
|---|---|
endpoint |
Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao analisar o recurso no portal do Azure. Um ponto de extremidade de exemplo é: https://southcentralus.cognitiveservices.azure.com/ |
credential |
Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao analisar o recurso no portal do Azure. Você pode usar Key1 ou Key2. Sempre tenha duas chaves válidas para uma rotação de chaves segura sem tempo de inatividade. O valor da chave faz parte da solicitação de exemplo. |
projectName |
O nome do projeto de respostas às perguntas personalizadas. |
deploymentName |
Há dois valores possíveis: test e production. |
Importante
Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações, consulte segurança das ferramentas Foundry.
No diretório do projeto, abra o arquivo program.cs e substitua pelo seguinte código:
using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;
namespace question_answering
{
class Program
{
static void Main(string[] args)
{
// This example requires environment variables named "LANGUAGE_KEY" and "LANGUAGE_ENDPOINT"
Uri endpoint = new Uri("LANGUAGE_ENDPOINT");
AzureKeyCredential credential = new AzureKeyCredential("LANGUAGE_KEY");
string projectName = "{YOUR-PROJECT-NAME}";
string deploymentName = "production";
string question = "How long should my Surface battery last?";
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
Response<AnswersResult> response = client.GetAnswers(question, project);
foreach (KnowledgeBaseAnswer answer in response.Value.Answers)
{
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
}
}
}
}
Enquanto estamos embutindo as variáveis em código em nosso exemplo. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Por exemplo, o cofre de chaves do Azure fornece armazenamento seguro de chaves.
Depois de atualizar Program.cs e substituir os valores de variável corretos. Execute o aplicativo com o comando dotnet run do seu próprio diretório de aplicativo.
dotnet run
A resposta é a seguinte:
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Para obter informações sobre pontuações de confiança, adicione a seguinte instrução de impressão abaixo das instruções de impressão existentes:
Console.WriteLine($"Q:{question}");
Console.WriteLine($"A:{answer.Answer}");
Console.WriteLine($"({answer.Confidence})"); // add this line
Se executar dotnet run novamente, você receberá um resultado com uma pontuação de confiança:
Q:How much battery life do I have left?
A:If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
(0.9185)
Considere a pontuação de confiança como uma porcentagem multiplicando-a por 100. Por exemplo, uma pontuação de confiança de 0,9185 indica que o sistema personalizado de resposta a perguntas é 91,85% confiante de que sua resposta está correta com base nas informações do projeto.
Se quiser excluir respostas em que a pontuação de confiança fica abaixo de um determinado limite, use AnswerOptions para adicionar a propriedade ConfidenceScoreThreshold.
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
QuestionAnsweringProject project = new QuestionAnsweringProject(projectName, deploymentName);
AnswersOptions options = new AnswersOptions(); //Add this line
options.ConfidenceThreshold = 0.95; //Add this line
Response<AnswersResult> response = client.GetAnswers(question, project, options); //Add the additional options parameter
Como sabemos pela execução anterior do código que nossa pontuação de confiança é: .9185 definir o limite para .95 resultar no retorno da resposta padrão .
Q:How much battery life do I have left?
A:No good match found in KB
(0)
Texto de consulta sem um projeto
Você também pode usar as respostas às perguntas personalizadas sem um projeto com GetAnswersFromText. Nesse caso, você fornece à respostas às perguntas personalizadas uma pergunta e os registros de texto associados nos quais gostaria de pesquisar uma resposta no momento em que a solicitação é enviada.
Para este exemplo, você só precisa modificar as variáveis para endpoint e credential.
using Azure;
using Azure.AI.Language.QuestionAnswering;
using System;
using System.Collections.Generic;
namespace questionansweringcsharp
{
class Program
{
static void Main(string[] args)
{
Uri endpoint = new Uri("https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/");
AzureKeyCredential credential = new AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY");
QuestionAnsweringClient client = new QuestionAnsweringClient(endpoint, credential);
IEnumerable<TextDocument> records = new[]
{
new TextDocument("doc1", "Power and charging.It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
"It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it"),
new TextDocument("doc2", "You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
"The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface."),
};
AnswersFromTextOptions options = new AnswersFromTextOptions("How long does it takes to charge a surface?", records);
Response<AnswersFromTextResult> response = client.GetAnswersFromText(options);
foreach (TextAnswer answer in response.Value.Answers)
{
if (answer.Confidence > .9)
{
string BestAnswer = response.Value.Answers[0].Answer;
Console.WriteLine($"Q:{options.Question}");
Console.WriteLine($"A:{BestAnswer}");
Console.WriteLine($"Confidence Score: ({response.Value.Answers[0].Confidence:P2})"); //:P2 converts the result to a percentage with 2 decimals of accuracy.
break;
}
else
{
Console.WriteLine($"Q:{options.Question}");
Console.WriteLine("No answers met the requested confidence score.");
break;
}
}
}
}
}
Para executar o código, substitua o Program.cs pelo conteúdo do bloco de script e modifique as variáveis endpoint e credential para que correspondam ao recurso de linguagem criado como parte dos pré-requisitos.
Nesse caso, iteramos por todas as respostas e retornamos apenas a resposta com a pontuação de confiança mais alta, que é maior que 0,9. Para entender mais sobre as opções disponíveis com GetAnswersFromText.
Use este início rápido para a biblioteca de clientes de respostas às perguntas personalizadas para Python para:
- Obtenha uma resposta de um projeto.
- Obter uma resposta de um corpo de texto que você envia com sua pergunta.
- Obter a pontuação de confiança da resposta à sua pergunta.
Pacote (PyPI) | Exemplos | Código-fonte da biblioteca
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- Python 3.x
- A resposta a perguntas personalizadas requer um recurso de linguagem com o recurso de resposta de pergunta personalizado habilitado para gerar uma chave de API e um ponto de extremidade.
- Após a implantação do recurso de Idioma, selecione Ir para o recurso. Você precisará da chave e do ponto de extremidade do recurso criado para conectar à API. Cole a chave e o ponto de extremidade no código mais adiante no guia de início rápido.
- Crie um recurso de linguagem com a CLI do Azure e forneça as seguintes propriedades:
--api-properties qnaAzureSearchEndpointId=/subscriptions/<azure-subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Search/searchServices/<azure-search-service-name> qnaAzureSearchEndpointKey=<azure-search-service-auth-key> - Um projeto existente a ser consultado. Se você não tiver um projeto, poderá seguir as instruções no início rápido do Microsoft Foundry. Ou adicione um projeto que use essa URL do Guia do Usuário do Surface como fonte de dados.
Configurando
Instalar a biblioteca de clientes
Depois de instalar o Python, você pode instalar a biblioteca de clientes com:
pip install azure-ai-language-questionanswering
Consultar um projeto
Gerar uma resposta de um projeto
O exemplo permite que você consulte um projeto usando get_answers para obter uma resposta à sua pergunta. Você pode copiar esse código em um arquivo de .py dedicado ou em uma célula no Jupyter Notebook/Lab.
Você precisa atualizar o código e fornecer seus valores para as variáveis a seguir.
| Nome da variável | Valor |
|---|---|
endpoint |
Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao analisar o recurso no portal do Azure. Um ponto de extremidade de exemplo é: https://southcentralus.cognitiveservices.azure.com/ |
credential |
Esse valor pode ser encontrado na seção Chaves e Ponto de Extremidade ao analisar o recurso no portal do Azure. Você pode usar Key1 ou Key2. Sempre tenha duas chaves válidas para uma rotação de chaves segura sem tempo de inatividade. O valor da chave faz parte da solicitação de exemplo. |
knowledge_base_project |
O nome do projeto de respostas às perguntas. |
deployment |
Há dois valores possíveis: test e production.
production. |
Importante
Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Para obter mais informações, consulte o artigo de segurança das Ferramentas Foundry.
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("{YOUR-LANGUAGE-RESOURCE-KEY}")
knowledge_base_project = "{YOUR-PROJECT-NAME}"
deployment = "production"
def main():
client = QuestionAnsweringClient(endpoint, credential)
with client:
question="How much battery life do I have left?"
output = client.get_answers(
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
if __name__ == '__main__':
main()
Enquanto estamos embutindo as variáveis em código em nosso exemplo. Para produção, considere o uso de uma maneira segura de armazenar e acessar suas credenciais. Por exemplo, o cofre de chaves do Azure fornece armazenamento seguro de chaves.
Ao executar o código, se você estiver usando a fonte de dados dos pré-requisitos, receberá uma resposta semelhante à seguinte:
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Para obter informações sobre pontuações confiantes, adicione as seguintes instruções de impressão:
print("Q: {}".format(question))
print("A: {}".format(output.answers[0].answer))
print("Confidence Score: {}".format(output.answers[0].confidence)) # add this line
Agora, você recebe um resultado com uma pontuação de confiança:
Q: How much battery life do I have left?
A: If you want to see how much battery you have left, go to **Start **> **Settings **> **Devices **> **Bluetooth & other devices **, then find your pen. The current battery level will appear under the battery icon.
Confidence Score: 0.9185
Considere a pontuação de confiança como uma porcentagem multiplicando-a por 100. Por exemplo, uma pontuação de confiança de 0,9185 indica que o sistema personalizado de resposta a perguntas é 91,85% confiante de que sua resposta está correta com base nas informações do projeto.
Se você quiser excluir respostas em que a pontuação de confiança está abaixo de um determinado limite, você pode modificar o AnswerOptions para adicionar o confidence_threshold parâmetro.
output = client.get_answers(
confidence_threshold = 0.95, #add this line
question = question,
project_name=knowledge_base_project,
deployment_name=deployment
)
Como sabemos pela execução anterior do código que nossa pontuação de confiança é: .9185 definir o limite para .95 resultar no retorno da resposta padrão .
Q: How much battery life do I have left?
A: No good match found in KB
Confidence Score: 0.0
Texto de consulta sem um projeto
Você também pode usar as respostas às perguntas personalizadas sem um projeto com get_answers_from_text. Nesse caso, você fornece à respostas às perguntas personalizadas uma pergunta e os registros de texto associados nos quais gostaria de pesquisar uma resposta no momento em que a solicitação é enviada.
Para este exemplo, você só precisa modificar as variáveis para endpoint e credential.
import os
from azure.core.credentials import AzureKeyCredential
from azure.ai.language.questionanswering import QuestionAnsweringClient
from azure.ai.language.questionanswering import models as qna
endpoint = "https://{YOUR-ENDPOINT}.cognitiveservices.azure.com/"
credential = AzureKeyCredential("YOUR-LANGUAGE-RESOURCE-KEY")
def main():
client = QuestionAnsweringClient(endpoint, credential)
with client:
question="How long does it takes to charge a surface?"
input = qna.AnswersFromTextOptions(
question=question,
text_documents=[
"Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. " +
"It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.",
"You can use the USB port on your Surface Pro 4 power supply to charge other devices, like a phone, while your Surface charges. " +
"The USB port on the power supply is only for charging, not for data transfer. If you want to use a USB device, plug it into the USB port on your Surface.",
]
)
output = client.get_answers_from_text(input)
best_answer = [a for a in output.answers if a.confidence > 0.9][0]
print(u"Q: {}".format(input.question))
print(u"A: {}".format(best_answer.answer))
print("Confidence Score: {}".format(output.answers[0].confidence))
if __name__ == '__main__':
main()
Você pode copiar esse código em um arquivo de .py dedicado ou em uma nova célula no Jupyter Notebook/Lab. Este exemplo retorna um resultado de:
Q: How long does it takes to charge surface?
A: Power and charging. It takes two to four hours to charge the Surface Pro 4 battery fully from an empty state. It can take longer if you're using your Surface for power-intensive activities like gaming or video streaming while you're charging it.
Confidence Score: 0.9254655838012695
Nesse caso, iteramos por todas as respostas e retornamos apenas a resposta com a pontuação de confiança mais alta, que é maior que 0,9. Para entender mais sobre as opções disponíveis com get_answers_from_text, examine os parâmetros AnswersFromTextOptions.
Limpar os recursos
Para limpar e remover um recurso de IA do Azure, você pode excluir o recurso individual ou todo o grupo de recursos. Se você excluir o grupo de recursos, todos os recursos contidos também serão excluídos.