Formato de arquivo .qna
APLICA-SE A: SDK v4
Nota
O Azure AI QnA Maker será desativado em 31 de março de 2025. A partir de 1º de outubro de 2022, você não poderá criar novos recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente do recurso de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.
A resposta a perguntas personalizadas, um recurso do Azure AI Language, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, consulte Compreensão de linguagem natural.
Os arquivos .qna contêm definições baseadas em texto do tipo Markdown para QnAmaker.ai conceitos. Este artigo aborda os vários conceitos expressos através do formato de arquivo .qna.
Adicionar comentários
Use > para criar um comentário. Eis um exemplo:
> This is a comment and will be ignored
Pares de perguntas e respostas
O arquivo .qna e o analisador suportam definições de perguntas e respostas.
Aqui está a sintaxe de uma definição básica de pergunta e resposta:
# ? Question
[list of question variations]
```
Answer
```
Aqui estão exemplos de definições de perguntas e respostas:
> # QnA Definitions
### ? who is the ceo?
```
You can change the default message if you use the QnAMakerDialog.
For details, see [Azure AI Bot Service documentation](/articles/adaptive-dialog/adaptive-dialog-prebuilt-actions.md).
```
### ? How do I programmatically update my KB?
```
You can use our REST apis to manage your KB.
\#1. See here for details: https://westus.dev.cognitive.microsoft.com/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9baa
```
Observe que o markdown
identificador de tipo para um answer
é opcional.
Várias perguntas
Você pode adicionar várias perguntas à mesma resposta simplesmente adicionando variações às perguntas.
### ? Aren't you feeling happy today?
- Feeling cheerful?
```markdown
I'm quite happy, thank you.
```
Filtros QnAMaker
Os filtros no QnA Maker são pares chave-valor simples que podem ser usados para restringir os resultados da pesquisa, aumentar as respostas e armazenar o contexto.
Use a sintaxe a seguir para adicionar filtros:
***Filters:***
- name = value
- name = value
Aqui está um exemplo de como um filtro pode ser usado:
### ? Where can I get coffee?
- I need coffee
**Filters:**
- location = seattle
```markdown
You can get coffee in our Seattle store at 1 pike place, Seattle, WA
```
### ? Where can I get coffee?
- I need coffee
**Filters:**
- location = portland
```markdown
You can get coffee in our Portland store at 52 marine drive, Portland, OR
```
Ingestão de ficheiros PDF do QnA Maker
O QnA Maker também suporta a ingestão de arquivos PDF durante a criação do KB. Você pode adicionar arquivos para o QnA Maker ingerir usando o esquema de referência de URL. Se o tipo de conteúdo do URI não for texto ou HTML, o analisador o adicionará à coleção de arquivos para o QnA Maker ingerir.
[SurfaceManual.pdf](https://download.microsoft.com/download/2/9/B/29B20383-302C-4517-A006-B0186F04BE28/surface-pro-4-user-guide-EN.pdf)
Referências externas
As referências externas são suportadas no arquivo .qna e usam a sintaxe do link Markdown.
Fazer referência a outro arquivo .qna
Referência a outro arquivo .qna usando [link name](<.qna file name>)
. As referências podem ser um caminho absoluto ou um caminho relativo do arquivo .qna que contém.
Referência a uma pasta que contém arquivos .qna
A referência a uma pasta com outros arquivos .qna é suportada através de:
[link name](<.qna file path>/*)
: procura arquivos .qna sob o caminho absoluto ou relativo especificado.[link name](<.qna file path>/**)
: procura recursivamente arquivos .qna no caminho absoluto ou relativo especificado, incluindo subpastas.
Fazer referência a um URL
Faça referência a uma URL para o QnAMaker ingerir durante a criação do KB via [link name](<URL>)
.
Referência de um ficheiro específico
Você também pode adicionar referências a enunciados definidos em um arquivo específico em uma seção de intenção ou como pares QnA.
[link name](<.lu file path>#<INTENT-NAME>)
: localiza todos os enunciados encontrados em <INTENT-NAME> no arquivo .lu e os adiciona à lista de perguntas onde a referência é especificada.[link name](<.lu file path>#*utterances*)
: localiza todos os enunciados no arquivo .lu e os adiciona à lista de perguntas onde a referência é especificada.[link name](<.qna file path>#?)
: localiza perguntas de todos os pares QnA definidos no arquivo .qna e as adiciona à lista de enunciados onde essa referência é especificada.[link name](<.qna folder>/*#?)
: localiza todas as perguntas de todos os arquivos .qna na pasta especificada e as adiciona à lista de enunciados onde essa referência é especificada.
Aqui está um exemplo das referências acima:
> QnA URL reference
[QnaURL](/azure/ai-services/qnamaker/)
> Include all content in ./kb1.qna
[KB1](./kb1.qna)
> Look for all .qna files under a path
[ChitChat](./chitchat/*)
> Recursively look for .qna files under a path including subfolders.
[ChitChat](../chitchat/resources/**)
Descrição do modelo
Você pode incluir informações de configuração para seu aplicativo LUIS ou QnA Maker KB no arquivo .qna para ajudar a direcionar o analisador para manipular o conteúdo LU corretamente.
Nota
O Language Understanding (LUIS) será aposentado em 1 de outubro de 2025. A partir de 1 de abril de 2023, não será possível criar novos recursos LUIS. Uma versão mais recente do entendimento de idiomas agora está disponível como parte do Azure AI Language.
O entendimento de linguagem conversacional (CLU), um recurso do Azure AI Language, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte à compreensão de linguagem no SDK do Bot Framework, consulte Compreensão de linguagem natural.
Veja como adicionar informações de configuração cante > !#:
> !# @<property> = <value>
> !# @<scope>-<property> = <value>
> !# @<scope>-<property> = <semicolon-delimited-key-value-pairs>
Observe que qualquer informação passada explicitamente por meio de argumentos da CLI substituirá as informações no arquivo .qna.
> Parser instruction - this is optional; unless specified, the parser will default to the latest version.
> !# @version = 1.0
> QnA Maker KB description
> !# @kb.name = my qna maker kb name
> Source for a specific QnA pair
> !# @qna.pair.source = <source value>
Conteúdo multiturno
O conteúdo multiturno é representado no formato .qna usando a notação de link Markdown. Os links são especificados da seguinte maneira:
- [display text](#<ID or question>)
Opcionalmente, você pode incluir context-only
para quaisquer prompts que estejam disponíveis apenas contextualmente para uma pergunta. Leia a seção sobre como adicionar um par de perguntas e respostas existente como um prompt de acompanhamento para saber mais sobre o uso do context
.
- [tell me a joke](#?joke) `context-only`
Prompts de acompanhamento
Os desenvolvedores têm duas opções para criar prompts de acompanhamento: usar uma pergunta como um prompt de acompanhamento diretamente ou atribuir uma ID explícita a um par QnA.
Use uma pergunta diretamente
O primeiro par QnA que tem o texto do link como um question
será adicionado como o prompt. Se você precisar de um controle mais explícito, use IDs .
Quando estiver usando diretamente uma pergunta, use a convenção Markdown e substitua espaços por hífenes (por exemplo, use #?when-is-the-portland-store-open
em vez de #?when is the portland store open
). O analisador fará o seu melhor para encontrar o link.
# ?store hours
```
Most our stores are open M-F 9AM-10PM.
```
**Prompts:**
- [Seattle store](#?seattle)
- [Portland store](#?when-is-the-portland-store-open)
# ?seattle
```
The Seattle store is open M-F 9AM-10PM.
```
# ?when is the portland store open
- portland store hours
```
The Portland store is open 24/7.
```
Gorjeta
Na verdade, o link não será renderizado como um link selecionável na maioria dos renderizadores Markdown.
Atribuir uma ID explícita a um par de QnA
Atribua IDs para cada prompt com um número. Você pode ver no exemplo abaixo o prompt para cada loja foi atribuído um valor numérico diferente.
# ?store hours
```
Most our stores are open M-F 9AM-10PM.
```
**Prompts:**
- [Seattle store](#1)
- [Portland store](#2)
<a id = "1"></a>
# ?seattle
```
The Seattle store is open M-F 9AM-10PM.
```
<a id = "2"></a>
# ?when is the portland store open
- portland store hours
```
The Portland store is open 24/7.
```
Recursos Adicionais
- Consulte o formato de arquivo .lu para obter informações sobre o formato de arquivo .lu.