Skip to content

短いコードで試す

検索する。好みを直す。条件ごと覚える。どれも、同じ 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 は候補を返します。各候補の refinspect に渡せば、本文だけでなく出典やつながりも調べられます。検索のオプション →

好みが変わったら

今度はミルク入りが好きになったとします。保存時の参照を使って改訂します。

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 の参照先は、主張と一緒に本文を含めます。両方が予算に入らなければ、主張を省きます。関係の使い方 →

自分のアプリへ

ここまでの例は、外部モデルを呼ばずに記憶を扱っています。次は エージェントにつなぐで、モデル呼出し前の自動取得を試してみましょう。

MIT License · TypeScript / Node.js