Поделиться через


Формат QNA-файла

ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4

Примечание.

Azure AI QnA Maker будет прекращен 31 марта 2025 г. С 1 октября 2022 г. вы не сможете создавать новые ресурсы или базы знаний QnA Maker. Новая версия вопроса и возможности ответа теперь доступна как часть языка искусственного интеллекта Azure.

Пользовательский ответ на вопросы, компонент языка искусственного интеллекта Azure, — это обновленная версия службы QnA Maker. Дополнительные сведения о поддержке вопросов и ответов в пакете SDK Bot Framework см. в разделе "Распознавание естественного языка".

QNA-файлы содержат напоминающие Markdown текстовые определения понятий QnAmaker.ai. В этой статье описаны несколько понятий, которые выражаются в формате 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
```

Обратите внимание на то, что идентификатор типа markdown для answer является необязательным.

Несколько вопросов

Можно добавить несколько вопросов для одного ответа, просто добавив варианты вопроса.

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

Фильтры QnA Maker

Фильтры в 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
```

Прием PDF-файлов в QnA Maker

QnA Maker также поддерживает прием PDF-файлов во время создания базы знаний. Вы можете добавить файлы для приема в QnA Maker, используя схему URL-ссылок. Если тип контента 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-файл

Можно указать ссылку на другой QNA-файл с помощью [link name](<.qna file name>). Ссылка может быть абсолютным путем или относительным путем от содержащего сведения QNA-файла.

Ссылка на папку, содержащую QNA-файлы

Ссылка на папку с другими QNA-файлами поддерживается следующим образом.

  • [link name](<.qna file path>/*): ищет QNA-файлы под указанным абсолютным или относительным путем.
  • [link name](<.qna file path>/**): рекурсивно ищет QNA-файлы под указанным абсолютным или относительным путем, включая вложенные папки.

Ссылка на URL-адрес

Можно указать ссылку на URL-адрес для приема файлов в QnAMaker во время создания базы знаний с помощью [link name](<URL>).

Ссылка из указанного файла

Можно также добавить ссылки на речевые фрагменты, определенные в заданном файле в разделе intent или в виде пар вопросов и ответов.

  • [link name](<.lu file path>#<INTENT-NAME>): находит все речевые фрагменты, найденные в файле <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, чтобы указать средству синтаксического анализа, как правильно обработать содержимое LU-файла.

Примечание.

Распознавание речи (LUIS) будет прекращен 1 октября 2025 года. Начиная с 1 апреля 2023 года вы не сможете создавать новые ресурсы LUIS. Новая версия распознавания речи теперь доступна как часть языка ИИ Azure.

Распознавание речи (CLU) — это обновленная версия LUIS. Дополнительные сведения о поддержке распознавания речи в пакете SDK Bot Framework см. в разделе "Распознавание естественного языка".

Вот как добавить сведения о конфигурации sing > !#:

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

Обратите внимание на то, что любые сведения, явно переданные через аргументы интерфейса командной строки, переопределяют сведения в 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>

Многошаговое содержимое

Для представления многошагового содержимого в формате QNA-файла используется нотация ссылки Markdown. Ссылки указываются следующим образом:

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

При необходимости можно включить context-only любые запросы, которые доступны только контекстно для вопроса. Ознакомьтесь с разделом о добавлении существующей пары "вопрос-ответ" в качестве запроса для дальнейших действий, чтобы узнать больше об использовании context.

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

Запросы для дальнейших действий

У разработчиков есть два варианта создания запросов для дальнейших действий: использовать вопрос непосредственно в качестве запроса для дальнейших действий или назначить явный идентификатор паре "вопрос-ответ".

Непосредственное использование вопроса

Первая пара "вопрос-ответ" с текстом ссылки вида question будет добавлена в качестве запроса. Если требуется более явное управление, используйте вместо этого идентификаторы.

При непосредственном использовании вопроса используйте соглашение 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.

Назначение явного идентификатора паре "вопрос-ответ"

Назначьте каждому запросу идентификатор с номером. В приведенном ниже примере запросу для каждого магазина назначено уникальное числовое значение.

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

Дополнительные ресурсы