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