你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

.qna 文件格式

适用于: SDK v4

注意

Azure AI QnA Maker 将于2025年3月31日停用。 从2022年10月1日开始,您将无法创建新的 QnA Maker 资源或知识库。 问答功能的较新版本现已作为 Azure AI 语言的一部分提供。

自定义问答是 Azure AI 语言的一项功能,是 QnA Maker 服务的更新版本。 有关 Bot Framework SDK 中的问答支持的详细信息,请参阅 自然语言理解

.qna 文件包含 QnAmaker.ai 概念的基于类似于 Markdown 文本的定义。 本文介绍通过 .qna 文件格式表达的各种概念。

添加注释

使用 > 创建注释。 下面是一个示例:

> This is a comment and will be ignored

问答集

.qna 文件和分析器支持问答定义。

下面是基本的问答定义的语法:

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

下面是问答定义的示例:

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

请注意,answermarkdown 类型标识符是可选的。

多个问题

只需向问题添加变体,即可向相同回答添加多个问题。

### ? Aren't you feeling happy today?
- Feeling cheerful?
```markdown
I'm quite happy, thank you.
```

QnAMaker 筛选器

QnA Maker 中的筛选器是简单的键值对,可用于缩小搜索结果范围,增加答案以及存储上下文。

使用以下语法添加筛选器:

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

下面是如何使用筛选器的示例:

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

QnA Maker PDF 文件引入

QnA Maker 还支持在创建 KB 时引入 PDF 文件。 可使用 URL 引用方案添加 QnA Maker 要引入的文件。 如果 URI 的内容类型不是文本或 HTML,则分析器会将它添加到 QnA Maker 要引入的文件集合中。

[SurfaceManual.pdf](https://download.microsoft.com/download/2/9/B/29B20383-302C-4517-A006-B0186F04BE28/surface-pro-4-user-guide-EN.pdf)

外部引用

外部引用在 .qna 文件中受支持,并使用 Markdown 链接语法。

引用其他 .qna 文件

使用 [link name](<.qna file name>) 引用其他 .qna 文件。 引用可以是绝对路径或包含 .qna 文件中的相对路径。

对包含 .qna 文件的文件夹的引用

支持通过以下方式引用包含其他 .qna 文件的文件夹:

  • [link name](<.qna file path>/*):在指定的绝对路径或相对路径下查找 .qna 文件。
  • [link name](<.qna file path>/**):以递归方式在指定的包含子文件夹的绝对路径或相对路径下查找 .qna 文件。

引用 URL

通过 [link name](<URL>) 引用 QnAMaker 在创建 KB 时要引入的 URL。

从特定文件中引用

还可添加对意向部分下的指定文件中定义的言语的引用,或添加为 QnA 对。

  • [link name](<.lu file path>#<INTENT-NAME>): 可查找在 .lu 文件中的 <INTENT-NAME> 下找到的所有lu 文件,并将其添加到指定引用的问题列表。
  • [link name](<.lu file path>#*utterances*):可查找 .lu 文件中的所有语句,并将其添加到指定引用的问题列表中。
  • [link name](<.qna file path>#?):可查找 .qna 文件中定义的所有 QnA 队的问题,并将其添加到指定此引用的语句列表中。
  • [link name](<.qna folder>/*#?):可查找指定文件夹中所有 .qna 文件中的所有问题,并将其添加到指定此引用的语句列表。

这是上述引用的一个示例:

> 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/**)

模型说明

可以在 .qna 文件中包含 LUIS 应用程序或 QnA Maker KB 的配置信息,以帮助指导分析器正确处理 LU 内容。

注意

语言理解(LUIS)将于2025年10月1日停用。 从2023年4月1日开始,将无法创建新的 LUIS 资源。 语言理解功能的较新版本现已作为 Azure AI 语言的一部分提供。

对话语言理解(CLU)是 Azure AI 语言的一项功能,是 LUIS 的更新版本。 有关 Bot Framework SDK 中的语言理解支持的详细信息,请参阅 自然语言理解

下面是添加配置信息 sing > !# 的方法:

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

请注意,通过 CLI 参数显式传递的任何信息都将替代 .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>

多轮次内容

多轮次内容使用 Markdown 链接表示法以 .qna 格式呈现。 链接使用以下方法进行指定:

- [display text](#<ID or question>)

对于是否适用于某个问题取决于上下文的任何提示,都可选择包含 context-only。 如需详细了解如何使用 context,请阅读关于添加现有的问答集作为跟进提示的部分。

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

跟进提示

开发人员有两个可用于创建跟进提示的选项:将问题直接用作跟进提示,或将显式 ID 分配给问答集。

直接使用问题

第一个问答集(将链接文本作为 question)将被添加为提示。 如果需要更多显式控制,请改用 ID

直接使用问题时,请使用 Markdown 约定并将空格替换为连字符(例如,使用 #?when-is-the-portland-store-open 而不是 #?when is the portland store open)。 分析器将尽力查找链接。

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

提示

链接实际上不会在大多数 Markdown 呈现器中呈现为可选择的链接。

将显式 ID 分配到问答集

为每个带编号的提示符分配 ID。 如下面的示例所示,每个存储的提示都已分配不同的数值。

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

其他资源