本文内容
适用于: SDK v4
备注
Azure QnA Maker 将于 2025 年 3 月 31 日停用。 从 2022 年 10 月 1 日开始,你将无法创建新的 QnA Maker 资源或知识库。 问答功能的较新版本现已作为 Azure AI 语言的一部分提供。
自定义问答是 Azure 语言认知服务的一项功能,是 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/bot-service/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://chinaeast2.dev.cognitive.azure.cn/docs/services/58994a073d9e04097c7ba6fe/operations/58994a073d9e041ad42d9baa
```
请注意,markdown
的 answer
类型标识符是可选的。
只需向问题添加变体,即可向相同回答添加多个问题。
### ? Aren't you feeling happy today?
- Feeling cheerful?
```markdown
I'm quite happy, thank you.
```
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 还支持在创建 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 链接语法。
使用 [link name](<.qna file name>)
引用其他 .qna 文件。 引用可以是绝对路径或包含 .qna 文件中的相对路径。
支持通过以下方式引用包含其他 .qna 文件的文件夹:
-
[link name](<.qna file path>/*)
:在指定的绝对路径或相对路径下查找 .qna 文件。 -
[link name](<.qna file path>/**)
:以递归方式在指定的包含子文件夹的绝对路径或相对路径下查找 .qna 文件。
通过 [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](https://learn.microsoft.com/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。 如下面的示例所示,每个存储的提示都已分配不同的数值。
# ?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.
```
- 请参阅.lu 文件格式以了解关于 .lu 文件格式的信息。