<category>
タグをグループ化する為に使用します。<topic>
タグを省略した場合は、トピック名がワイルドカード(*
)と同じ扱いになります。トピック名は、英数字とハイフン(-
)、縦線 (|
)、半角スペース、アスタリスク(*
)、アンダースコア(_
)のみ記述できます。
<set>
タグでtopic
を初期化した場合、topic
には*
が設定されます。
1 2 3 4 5 6 |
<topic name="topicA"> <category> <pattern>*</pattern> <template>topicAでグループ化してます。</template> </category> </topic> |
ご注意
トピックには有効期限があります。
対話タイムアウトの設定時間を過ぎるか、対話APIパラメータのinitTalkingFlag
の値がtrue
の場合に、現在設定のトピックIDが<topic name="*">
の初期化状態になります。
属性
名称 | 型 | 必須 | デフォルト | 説明 |
---|---|---|---|---|
name |
string |
〇 | – | 定義するトピック名(英数字, * , | , _ , - )を記述します。 |
name
name
属性にトピック名を指定することで、<category>
タグをそのトピック名でグループ化できます。
基本的にシナリオマッチングはAPIリクエスト時に指定したトピック内で行われますが、<set>
タグでトピックを変更した場合は、変更後のトピックでマッチングを行います。
name
属性に*
を指定した場合、ワイルドカードトピックとして扱われ、各トピックにマッチングしなかった場合に参照されます。_
を指定した場合は*
と同様にワイルドカードトピックとして扱いますが、どのトピックよりも先に参照されます。
トピック名に、縦線 (|
) を指定した場合は、複数のトピックで同じカテゴリを共用します。
ご注意
*
, _
は、文字列の一部として設定することはできません。
1 2 3 4 |
〇: <topic name="_"> 〇: <topic name="TOPIC _ * NAME"> ×: <topic name="TOPIC_NAME"> 〇: <topic name="TOPIC-NAME"> |
Example
xAIML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<category> <pattern>なにか話して</pattern> <template> <random> <li>焼き肉<think><set name="topic">yakiniku</set></think></li> <li>お寿司<think><set name="topic">sushi</set></think></li> </random> の話をしよう。 </template> </category> <topic name="yakiniku"> <category> <pattern>どのメニューが好き</pattern> <template>やっぱりカルビが好きです</template> </category> </topic> <topic name="sushi"> <category> <pattern>どのメニューが好き</pattern> <template>玉子です。生もの苦手で・・・</template> </category> </topic> |
実行結果
1 2 3 4 5 6 7 8 9 |
user > なにか話して bot > お寿司の話をしよう。 user > どのメニューがすき? bot > 玉子です。生もの苦手で・・・ user > なにか話して bot > 焼き肉の話をしよう。 user > どのメニューがすき? bot > やっぱりカルビが好きです |
子要素
名称 | 必須 | 説明 |
---|---|---|
category |
〇 | シナリオの対話ルール1単位を定義します。 |
category
シナリオの対話ルール1単位を定義します。
詳細はこちらをご覧ください。