Share via


Formato de arquivo .qna

APLICA-SE A: SDK v4

Observação

O QnA Maker da IA do Azure será desativada em 31 de março de 2025. A partir de 1° de outubro de 2022, não será mais possível criar recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente da funcionalidade de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.

Respostas às perguntas personalizadas, um recurso de Linguagem de IA do Azure, é 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, confira reconhecimento de linguagem natural.

Os arquivos .qna contêm definições baseadas em texto Markdown para os conceitos do QnAmaker.ai. Este artigo aborda os vários conceitos expressos por meio do formato de arquivo .qna.

Como adicionar comentários

Use > para criar um comentário. Aqui está um exemplo:

> This is a comment and will be ignored

Pares de perguntas e respostas

O arquivo .qna e o analisador dão suporte a definições de perguntas e respostas.

Este é um exemplo da sintaxe de definição de perguntas e respostas básicas:

# ? Question
[list of question variations]
```
Answer
```

Este é um exemplo 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 identificador de tipo markdown para uma 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 do QnA Maker

Os filtros do QnA Maker são pares chave-valor simples que podem ser usados para restringir os resultados da busca, aumentar as respostas e armazenar o contexto.

Use a sintaxe a seguir para adicionar filtros:

***Filters:***
- name = value
- name = value

Este é um exemplo de como um filtro poderá 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 arquivos PDF do QnA Maker

O QnA Maker também dá suporte à ingestão de arquivos PDF durante a criação da KB. Você pode adicionar arquivos para ingestão do QnA Maker usando o esquema de referência de URL. Se o tipo de conteúdo do URI não for texto nem HTML, o analisador o adicionará à coleção de arquivos para ingestão do QnA Maker.

[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

Há suporte para referências externas no arquivo .qna e uso da sintaxe de link Markdown.

Referenciar outro arquivo .qna

Referência a outro arquivo .qna por meio de [link name](<.qna file name>). As referências podem ser um caminho absoluto ou um caminho relativo do arquivo .qna contido.

Referência a uma pasta contendo arquivos .qna

Há suporte para a referência a uma pasta com outros arquivos .qna por meio do seguinte:

  • [link name](<.qna file path>/*): procura os arquivos .lu no caminho relativo ou absoluto especificado.
  • [link name](<.qna file path>/**): procura recursivamente os arquivos .lu no caminho relativo ou absoluto especificado, incluindo as subpastas.

Referenciar uma URL

Referencie uma URL para ingestão do QnA Maker durante a criação da KB por meio de [link name](<URL>).

Referência de um arquivo específico

Adicione também referências aos enunciados definidos em um arquivo específico em uma seção de intenção ou como pares de QnA.

  • [link name](<.lu file path>#<INTENT-NAME>): localiza todos os enunciados encontrados em <NOME-DA-INTENÇÃO> no arquivo .lu e os adiciona à lista de perguntas em que a referência é especificada.
  • [link name](<.lu file path>#*utterances*): localiza todos os enunciados no arquivo .lu e os adiciona à lista de perguntas em que a referência é especificada.
  • [link name](<.qna file path>#?): localiza as perguntas de todos os pares de pergunta e resposta definidos no arquivo .qna e os adiciona à lista de enunciados em que 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 em que essa referência é especificada.

Este é 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

Inclua informações de configuração do aplicativo LUIS ou da KB do QnA Maker no arquivo .qna para ajudar a instruir o analisador a processar o conteúdo do LU corretamente.

Observação

O reconhecimento de linguagem (LUIS) será desativado em 1º de outubro de 2025. A partir de 1º de abril de 2023, você não poderá criar recursos do LUIS. Uma versão mais recente do reconhecimento de linguagem já está disponível como parte da Linguagem de IA do Azure.

A compreensão da linguagem coloquial (CLU), um recurso da Linguagem de IA do Azure, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte ao reconhecimento de linguagem no SDK do Bot Framework, confira Reconhecimento de linguagem natural.

Veja a seguir como adicionar informações de configuração sing > !#:

> !# @<property> = <value>
> !# @<scope>-<property> = <value>
> !# @<scope>-<property> = <semicolon-delimited-key-value-pairs>

Observe que todas as informações passadas explicitamente por meio de argumentos da CLI substituirão as informações do 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 de vários turnos

O conteúdo de vários turnos é representado no formato .qna por meio da 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 as solicitações que só estão contextualmente disponíveis para essa 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 de context.

- [tell me a joke](#?joke) `context-only`

Solicitações de acompanhamento

Os desenvolvedores têm duas opções para criar solicitações de acompanhamento: usando uma pergunta como um prompt de acompanhamento diretamente ou atribuindo uma ID explícita a um par de pergunta e resposta.

Usar uma pergunta diretamente

O primeiro par de P e R que tenha o texto de link como uma question será adicionado como a solicitação. Se você precisar de um controle mais explícito, use IDs.

Quando estiver usando uma pergunta diretamente, use a convenção Markdown e substitua espaços por hifens (por exemplo, use #?when-is-the-portland-store-open em vez de #?when is the portland store open). O analisador fará o melhor para localizar 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.
```

Dica

Na verdade, o link não será renderizado como um link selecionável na maioria dos renderizadores de Markdown.

Atribuir uma ID explícita a um par de P e R

Atribua IDs a cada solicitação com um número. Veja no exemplo abaixo que um valor numérico diferente foi atribuído à solicitação de cada loja.

# ?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