AIエージェント学習の残酷な真実:17個の壊れたバージョンを作って学んだこと
正直に言うと、私が自分のAIエージェントの仕組みを作ろうと決めたとき、「週末で天才になれる」くらいに思っていました。ネタバレです:なれませんでした。実際に私が身につけたのは、壊れていてほとんど機能しないAIシステムを作ることのプロで、それは結果的に、私のキャリア全体を見直させることに主に役立っただけでした。
Project: AI Agent学習ガイド (BRAG) - GitHubリポジトリ
そこから6か月、そして17個の壊れたバージョンを経た今、ようやく「ちゃんと動くもの」を作れました。ですが、それがドキュメントで聞かされていたものとは違う、というのがポイントです。
夢(Dream)と現実(Reality)の違い
この旅を始めた当初、AIエージェントのチュートリアルは「こんなに簡単」と思わせる内容でした。「LLMを足して、メモリを少し混ぜるだけで、ほら—AIエージェントの完成!」と。でも私に教えてくれなかったのは、「メモリを混ぜる」って、教科書を食べようと必死な幼児に量子物理を教えようとするのと同じだ、ということです。
実際に私が見つけたことは次の通りです:
正直言うと、良いところ(Pros):
時間とともに本当に賢くなる:メモリの仕組みが分かってくると、エージェントは対話からちゃんと学習します。何年もコーヒーを淹れてコピーを取った後に、仕事が少しずつできるようになっていくのを見るような感じです。
パーソナライズは本物:あなたが「量子物理の話は嫌いだけど、コーヒーショップの話は好き」だと言ったことを、エージェントが実際に覚えていると、妙なつながりの感覚が生まれます。ちゃんと聞いてくれる、デジタルな友だちがいるようなものです。
自動化は魔法みたい:200行の設定ファイルと依存関係地獄を越えると、本当にエージェントがメールを書いたり、ドキュメントを要約したり、さらにはコードのデバッグまでしてくれる。まるで人生にチートを入れたみたいです。
で、問題はこれだ—残酷なデメリット(So Here's the Thing - The Brutal Cons):
メモリのパラドックス:メモリを増やすほど、エージェントは遅くなります。私のエージェントが私のことを全部覚える頃には、1998年のダイヤルアップ回線より遅くなっていました。結果として、重度のADHDを持つ天才を作ってしまい、自分の名前を思い出すのに10分かかる状態になった、ということです。
設定地獄:今の設定ファイルは347行あります。これは私の最初の小説の下書きより多いです。そして何かがうまくいかないとき、これら347行のうちどれが犯人かを見つけるのは大変です。目隠しをしてビーチで砂粒を1つ探すようなものです。
「賢さ」の税金:AIエージェントは安くありません。月額の請求は「無料のコーヒー」から「住宅ローンの支払い」ゾーンへと移動しました。私は結局、サーバーコストのせいで文句を言うテック系の人になっていて、しかも作っているものの大半は私に水を飲むことを思い出させるだけ、という状態です。
学習の道のり: 「簡単だ!」から「なんでこんなことしてるんだ?」へ
フェーズ1:自信満々の素人(1か月目)
私は「最初のAIエージェントを作ってみよう」系のチュートリアルを終えた直後の人のような自信を持って始めました。チュートリアルは本当に簡単そうに見せてくれたんです!コードをコピペして、APIキーを追加して終わり、みたいな感じでした。
// 最初の挑戦:天才のつもり
class BRAGAgent {
constructor() {
this.memory = [];
this.personality = "helpful";
}
async respond(message) {
// これで本当に動くと思っていました
return await this.callLLM("You are helpful. Respond to: " + message);
}
}
// ネタバレ:動きませんでした
2日後、私は「分かりません」と何に対しても返してくるエージェントを手に入れていました。歴史上最も高額なマジック8ボールを作ったようなものです。
フェーズ2:現実の確認(2〜3か月目)
ここで私は、「役に立つAI(helpful AI)」と「実際に機能するAI(actually functional AI)」は全く別物だ、ということを苦い経験で学びました。私のエージェントは量子物理についての美しい文章を書くことはできたのに、同時に「量子物理は嫌いだ」と伝えたことを忘れてしまっていました。
// 挑戦2:覚えすぎてしまうメモリシステム
class BetterBRAGAgent {
constructor() {
this.memory = new Map(); // きっとこれで全部解決するはず!
this.memory.set("user_preferences", {
hates_quantum_physics: true,
loves_coffee_shops: true
});
}
async respond(message) {
const prefs = this.memory.get("user_preferences");
if (message.includes("quantum") && prefs.hates_quantum_physics) {
return "I know you don't like quantum physics, so let's talk about coffee shops instead!";
}
返却形式: {"translated": "翻訳されたHTML"}return await this.callLLM("あなたはすべてを覚えています。次の内容に応答してください: " + message);
}
}
// ネタバレ: それはすべてを覚えてしまい、何にも集中できませんでした
私は本質的には、写真記憶のAIエージェントを作ったのですが、重度のADHDでした。ユーザーが四半期レポートについて尋ねている最中でも、彼らの7年生(中学1年相当)の理科の自由研究に気を取られてしまうのです。
第3フェーズ: ブレイクスルー(4〜6か月目)
そこで私は秘密を見つけました。記憶は少ないほど、集中はよくなる。さらに、「パーソナライズ」とは、誰かの人生全てについてをすべて覚えることを意味するわけではない、ということもです。
// 最終試行: ちょうどいい落としどころ
class WorkingBRAGAgent {
constructor() {
this.contextWindow = 4096; // 無限ではない
this.userProfile = {
name: "Kevin",
work_context: "ソフトウェアエンジニアリング",
preferred_topics: ["技術", "生産性", "コーヒー"]
};
}
async respond(message) {
// 最近のコンテキスト + ユーザーの嗜好に注目
const relevantMemories = this.recentMemories.filter(mem =>
this.isRelevant(message, mem)
);
const context = this.buildContext(relevantMemories);
const systemPrompt = `あなたは ${this.userProfile.name}のAIアシスタントです。
注目するのは: ${this.userProfile.preferred_topics.join(", ")}
コンテキスト: ${context}`;
return await this.callLLM(systemPrompt, message);
}
}
そして信じられないかもしれませんが、これは実際にうまくいきました!私のエージェントは筋の通った会話ができて、大事なことは覚えられました。そして、ユーザーの子どものペットが好きなドッグフードのメーカーにまで気を取られることもありませんでした。
困難だったからこそ学んだ、厳しい現実
1. 動くものより、壊れたバージョンの方がたくさん作ることになる
私は17種類の異なるバージョンを作りました。そのうち16個は程度の差はあれ「壊れている」ものでした。実際に確実に動くのは1つだけです。つまり成功率は5.88%。これは私のダイエットの目標達成率よりも悪いですね。
2. ドキュメントは(たいてい)嘘をつく
ほとんどのチュートリアルは、うまくいく道筋だけを見せてくれます。あなたのエージェントがアシスタントではなくパイナップルだと思い込んでしまう理由を突き止めようとしている、午前3時のデバッグセッションは載せてくれません。
3. 「シンプル」は相対的なもの
チュートリアルが「シンプル」と呼んでいるものは、実際には「ソフトウェアエンジニアリングの経験が10年あって、分散システム、データベース設計、自然言語処理が分かっているなら簡単」なだけです。
4. 自分のキャリア選択に疑問を持つことになる
500行もの設定ファイルを見つめながら、「もしかしてパン屋に戻るべきかも」と思う瞬間が何度もありました。少なくともパンは、量子物理を説明しろとは求めてきません。
予想外のメリット(彼らが教えてくれないもの)
1. その過程で自分を学ぶことになる
あなたを理解するAIエージェントを作るには、自分の好み、価値観、コミュニケーションのパターンを言語化せざるを得ません。この仕組みを作っている間に学んだことは、5年分のカウンセリングで得たより多かったです。
2. より良いコミュニケーターになる
AIエージェントに対して「人間にどうやって伝えるか」を説明しなければならなくなると、自分自身が人間に伝えるのがずっと上手くなります。まるで自分の脳をリバースエンジニアリングしているみたいです。
3. 魔法をもっとありがたく感じるようになる
バイナリで話し始めたり、ランダムに喋り方を切り替えたりしないAIエージェントを作るのに、どれだけの手間がかかるのかを見たあとでは、ちゃんと動くものへの評価が一気に上がります。Siriも、彼女が何と格闘しているのかが分かると、そんなにうるさく感じなくなります。
結論: それは価値があるの?
正直に言うと? はい。けれど、私が思っていた理由とは違います。
私はこれを、AIの天才になるためでも、パーティーで人を感心させるためでもありませんでした(ただし「自分でAIアシスタントを作ったんだ」という話は、たいてい感心した表情をいくつか引き出します)。私が作ったのは、本当に自分を理解して、自分のやり方で助けてくれる何かが欲しかったからです。
そしてそれが本当の魔法です。デジタルアシスタントがあなたと一緒に成長し、癖を学び、人生を難しくするのではなく、実際に楽にしてくれること。
今、私が取り組んでいること
動くバージョンができたので、次の課題に取り組んでいます:
- より速くする(応答を3秒待つのはまだ長すぎるため)
- より安くする(財布が泣いているので)
- より役に立つものにする(「役に立つ」と「実際に役に立つ」は違うため)
大きな疑問
返却形式: {"translated": "翻訳されたHTML"}ここで私が本当に気になっているのはこれです:あなたは、自分について学ぼうとするAIエージェントの経験をどのように感じていますか?
AIシステムがあなたの好みや行動パターンを覚えてくれるのは役に立つと思いますか、それとも少し踏み込み過ぎに感じますか?「本当にあなたを理解してくれるもの」の便利さと、プライバシーやコントロールの必要性とのバランスは、どう取ればいいのでしょうか?
そして最も大事なこと:自分でAIエージェントを作ったことはありますか? もしあるなら、あなたの恐ろしい(ホラーな)体験談を聞かせてください。大丈夫、私にはみんな分あります。
コメントで教えてください。あなたがこれまでに作った、最も壊れた(まともに動かなかった)AIは何ですか?




