Predicateに値を記録し、その内容を出力します。
一般的に、このタグの出力は使用しないことが多いため、<think>
タグ内に記述します。
また、Predicateの値を初期化する場合は空要素としてください。
記録したPredicateは明示的に初期化しない限り、いつでも<get>
タグで出力できます。この性質のPredicateを不揮発性Predicateと呼びます。
1 2 3 4 5 6 |
<category> <pattern>セット</pattern> <template> <set name="apple">りんご</set> </template> </category> |
ご注意
- システムPredicateおよび以下のプレフィックスで始まるPredicate名は、
<set>
タグで使用できません。
これらのPredicateはシステムにより自動的に設定されます。
「_ext_」「_client_」「_sraix_」「_namelister_」「_task_」 - Predicate名は大文字(例:Apple)と小文字(例:apple)の区別をしていません。
<topic>
に使用できる文字数は全角・半角問わず100文字までです。- AIMLのインデントはタブ文字の利用を推奨いたします。
インデントにタブ文字ではなく空白文字を使用し、<set>
タグ内で改行を行うと意図しない空白が値に含まれることがあります。
インデントにつきましては、こちらをご参照ください。
属性
名称 | 型 | 必須 | デフォルト | 説明 |
---|---|---|---|---|
name |
string |
※ | – | 値の保存先とするPredicate名を記述します。 ※子要素 <name> を指定しない場合、この属性が必須となります。 |
name
name
属性は<set>
タグの内容を保存するPredicate名を指定します。
name
属性の代わりに子要素として<name>
タグを使用できます。
<name>
タグの子要素では<get>
タグの利用が可能です。
ご注意
<name>
タグに記載するPredicate名の文字数は全角・半角問わず100文字までです。
Example
xAIML
1 2 3 4 5 6 7 |
<category> <pattern>セット</pattern> <template> <!-- Predicate名「apple」に「りんご」を保存します。 --> <set name="apple">りんご</set> </template> </category> |
実行結果
1 2 |
user > セット bot > りんご |
応用的な書き方
<set>
タグ内に<srai>
タグや<condition>
タグを記述し、セットする値を変化させることができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<category> <pattern>*</pattern> <template> <think><set name="_var_time"><srai>#TIME</srai></set></think> <condition name="_var_time"> <li value="|undefined">ごめんなさい、わかりませんでした。</li> <li><get name="_var_time"/>です。</li> </condition> </template> </category> <category> <pattern>#TIME</pattern> <template> <ext name="nludatetime"> <!-- 指定なしの場合は現在日時がデフォルト値/指定ありの場合は"+3Y2M3D"(3年2ヶ月3日後の日時情報)のようにリクエストする --> <arg name="extracted_word"><get name="_task_slot_time"/></arg> </ext> <!-- 絶対日時表現に変換後の日時(日本語)情報 --> <get name="_ext_nludatetime_string_date_jp"/> </template> </category> |
実行結果
1 2 |
user > 明日の日付 bot > 2018年11月1日です。 |
子要素
<template>
タグで利用可能な子要素の他に、さらに以下の要素を使用できます。
名称 | 必須 | 説明 |
---|---|---|
name |
– | 値の保存先とするPredicate名を記述します。 |
name
値の保存先とするPredicate名を記述します。
Predicate名が動的に変わる場合など、name
属性では対処できない場合に使用します。
Example
1 2 3 4 5 6 7 |
<category> <pattern>セット</pattern> <template> <!-- Predicate名「apple」に「りんご」を保存します。 --> <set><name>apple</name>りんご</set> </template> </category> |