.qna ファイル形式

この記事の対象: SDK v4

Note

Azure AI QnA Maker は 2025 年 3 月 31 日に廃止されます。 2022 年 10 月 1 日以降、新しい QnA Maker リソースまたはナレッジ ベースを作成できなくなります。 Azure AI Language の一部として、質問応答機能の新しいバージョンが提供されました。

Azure AI Language の機能であるカスタム質問応答は、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 ファイルを参照する

別の .qna ファイルを参照するには、[link name](<.qna file name>) を使用します。 参照は、絶対パスまたは格納されている.qna ファイルからの相対パスにすることができます。

.qna ファイルを格納するフォルダーへの参照

他の .qna ファイルを格納するフォルダーへの参照は、次の方法でサポートされます。

  • [link name](<.qna file path>/*): 指定した絶対パスまたは相対パスの下にある .qna ファイルが検索されます。
  • [link name](<.qna file path>/**): サブフォルダーを含め、指定した絶対パスまたは相対パスの下にある .qna ファイルが再帰的に検索されます。

URL を参照する

[link name](<URL>) によって KB の作成時に、取り込む QnAMaker の URL を参照します。

特定のファイルから参照する

特定のファイルに定義されている発話への参照を意図セクションの下か、または QnA ペアとして追加することもできます。

  • [link name](<.lu file path>#<INTENT-NAME>): .lu ファイル内の <INTENT-NAME> の下にあるすべての発話が検索され、参照が指定された質問の一覧に、それらが追加されます。
  • [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 コンテンツを正しく処理するように指示できます。

Note

Language Understanding (LUIS) は、2025 年 10 月 1 日に廃止されます。 2023 年 4 月 1 日以降は、新しい LUIS リソースを作成することはできません。 より新しいバージョンの言語理解が、現在、Azure AI Language の一部として提供されています。

Azure AI Language の機能である会話言語理解 (CLU) は、LUIS の更新バージョンです。 Bot Framework SDK での言語理解のサポートの詳細については、「自然言語の理解」を参照してください。

次に、> !# を使用して構成情報を追加する方法を示します。

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

フォローアップ プロンプト

開発者には、フォローアップ プロンプトを作成するための 2 つのオプションがあります。質問をフォローアップ プロンプトとして直接使用するか、または QnA ペアに明示的な ID を割り当てます。

質問を直接使用する

question としてリンク テキストがある最初の QnA ペアが、プロンプトとして追加されます。 さらに明示的に制御する必要がある場合は、代わりに 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 レンダラーでは、リンクは実際には選択可能なリンクとしてレンダリングされません。

QnA ペアに明示的な 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.
```

その他のリソース