短いコードで試す
検索する。好みを直す。条件ごと覚える。どれも、同じ memory から始められます。
以下の例はそれぞれ独立して動きます。クイックスタートの memory.mjs と同じフォルダーに保存し、node ファイル名.mjs で実行してください。
覚えたことを探す
旅行のメモも保存してから、コーヒーの話だけを検索します。
mjs
import { memory } from './memory.mjs';
await memory.write('コーヒーはブラックが好き。');
await memory.write('旅行には小さなカメラを持っていく。');
const found = await memory.search('コーヒー');
console.log(found.items.map((item) => item.text).join('\n'));text
コーヒーはブラックが好き。search は候補を返します。各候補の ref を inspect に渡せば、本文だけでなく出典やつながりも調べられます。検索のオプション →
好みが変わったら
今度はミルク入りが好きになったとします。保存時の参照を使って改訂します。
mjs
import { memory } from './memory.mjs';
const note = await memory.write('コーヒーはブラックが好き。');
const edited = await memory.edit((draft) => draft.revise(note.ref, 'コーヒーはミルク入りが好き。'));
console.log((await memory.inspect(edited.value.ref)).atom.text);
console.log((await memory.inspect(note.ref)).atom.text);text
コーヒーはミルク入りが好き。
コーヒーはブラックが好き。新しい参照では訂正後の内容を、元の参照ではそのときの内容を確認できます。次の read は更新後の記憶から選びます。編集のオプション →
条件も、一緒に思い出す
「招待できる」とだけ覚えると、「承認が必要」という条件を落とすかもしれません。条件を別のメモにする場合は、必須の参照で結び付けます。
mjs
import { memory } from './memory.mjs';
const condition = await memory.write('招待には管理者の承認が必要です。');
await memory.write({
text: '外部のメンバーを招待できます。',
links: { 条件: { ref: condition.ref, required: true } },
});
const recalled = await memory.read({ context: '外部のメンバーを招待したい。' });
console.log(
recalled.items
.map((item) => item.text)
.sort()
.join('\n'),
);text
外部のメンバーを招待できます。
招待には管理者の承認が必要です。required: true の参照先は、主張と一緒に本文を含めます。両方が予算に入らなければ、主張を省きます。関係の使い方 →
自分のアプリへ
ここまでの例は、外部モデルを呼ばずに記憶を扱っています。次は エージェントにつなぐで、モデル呼出し前の自動取得を試してみましょう。