Tag: AI

  • AI Agent向け長期記憶ツールを作った話

    AI Agent向け長期記憶ツールを作った話

    はじめに 今回は、AI Agent向けの長期記憶機能を担うツールを作成してみたので、それについてまとめていきたいと思います。 本記事の内容は2026/8時点のものです。各サービスの機能・名称は、今後変更される可能性があります。 作成理由 昨今のAgentは、contextに入った情報をもとにタスクを遂行する構成が基本です。そのため、contextをいかに効率的に使うかという点が重要になっています。その中で、前のタスクでやったことを覚えていてほしいとか、前回やった修正が巻き戻ったといった経験は一度はあるかと思います。こうした課題に対し、OpenAIやAnthropicなどのプロバイダはMemory機能を提供しています。Memory機能について大まかに話すと、Agentがセッション内で有用だと思った情報をMemory(ファイル)に保存していき、別セッションでMemoryを読むことで、過去のセッションの知識を再利用できるというものです。最初はこの機能を使ってAgentを利用していたのですが、使っているうちにいくつか不満がありました。 今回はCodex(ChatGPT)を前提に書いています。Claudeだといくつか解決できているものもあります。 そこで、これらの不満を解消するべく新しくツールを作成しました。 全体の構成 まず全体像を見ていきます。 名称 内容 Application Service メインシステム Document Store 実ファイルの保存領域 Background Worker 保存済みMemoryをチャンク化・ベクトル化し、Qdrantへ非同期登録する処理 Embedding Provider 意味的なインデックスを貼るための埋め込みモデル Qdrant ベクトルDB この構成は全てローカル環境で動作するものになっています。長期記憶や外部記憶はObsidianやGemini Notebookを使う方がシンプルに済みますが、今回は外部依存をできるだけ削るために全てローカルで動作させるようにしています。ローカルで全て動作させる場合、複数端末からの利用やCloud環境で使えないのですが、色々面倒だったので全てローカルで動作させるようにしました。 記憶部分の主要機能 主要な記憶機能についてはCLIで実装し、コマンドで利用できるようにしています。実装されている主要機能としては、 名称 内容 remember MemoryをDBに保存 recall DBからMemoryを検索 dedupe Memoryの重複チェック 管理機能 全文参照、一覧、論理削除、インデックス再構築など が実装されています。これらの機能を細かく見ていきましょう。 Remember Rememberは、受け取ったMemoryをファイルとして保存します。その後、WorkerがMemoryを分割・ベクトル化し、検索用インデックスとしてQdrantへ非同期で登録します。Qdrantは検索専用であり、Memoryの実データとしては扱っていません。Memoryの更新もRememberで行っています。 Memoryとして、再利用可能なアイデアや傾向などをAgentが独自に判断し保存するようになっています。 プロジェクトの判別はAgentに任せていません。CLIが実行時の作業ディレクトリから保存先のプロジェクトを決定し、Rememberへ引き継ぎます。そのため、Agentは保存先を意識せず、現在のプロジェクトに対応するMemoryを保存できます。これは、後述するDedupeでも同様です。 Recall Recallは、任意の検索文から関連するMemoryを検索します。今回のCodex向け連携では、UserPromptSubmit Hookからユーザープロンプトを検索文として渡しています。検索結果にはMemory全文ではなく、関連するチャンクの本文、Memory ID、検索スコアなどを含めます。その情報だけでは不足する場合に、AgentがReadを使ってMemory全体を取得します。 検索時には検索文を埋め込みモデルでベクトル化し、あらかじめチャンク単位でベクトル化してあるMemoryとQdrant上で比較します。そのため、単語が完全に一致していなくても意味が近い内容を検索でき、類似度の高いチャンクから順に候補として返せます。 検索対象は、現在のプロジェクトとそれより上位の階層です。上位階層のMemoryには、階層の距離に応じたペナルティを検索スコアへ与えます。プロジェクト固有のMemoryに加えて、上位階層へ保存した横断的なMemoryも検索できます。一方、同列や下位の階層は現在の検索対象に含めていません。 たとえば、プロジェクトが次のような階層構造になっているとします。 user/projects/main-projectから検索すると、現在の階層に加えてuser/projectsとuserも検索します。同列にあたるuser/projects/other-projectは検索しません。下位や同列の階層を検索対象に含めることには検討の余地がありますが、下位や同列はどの程度関連させるかなどが上位に比べて複雑化すると思ったため現在は実装していません。 Dedupe Dedupeは入力全体の一致を確認し、一致しない場合は同じプロジェクト内から意味的に近いMemoryを探します。Recallとは異なり、上位階層は検索しません。…

  • ローカル環境で、画像生成してみた。

    ローカル環境で、画像生成してみた。

    今回はローカル環境で、棒人間からアニメ調の女性キャラクターを生成できるかに挑戦してみます。 今回使用した環境 項目 使用したもの OS Windows 11 GPU NVIDIA GeForce RTX 3050 Laptop GPU VRAM 4GB アプリ Stable Diffusion WebUI Forge モデル Stable Diffusion 1.5 Stable Diffusion WebUI Forge とは 画像生成をブラウザ上で簡単に操作できるツールです。高速化・省メモリ化されており、低スペック環境でも使いやすいのが特徴です。 作業の流れ 今回の作業は、次の順番で進めました。 必要なものをダウンロード、インストールする 今回用意したのは、PythonとStable Diffusion WebUI Forgeです。 Python 3.10.11 Pythonは公式サイトから、64-bit版のPython 3.10.11をダウンロードしました。 インストールするときは、「Add Python to PATH」にチェックを入れておきます。 インストール後、PowerShellでバージョンが表示されれば、Pythonの準備は完了です。 Stable Diffusion WebUI Forge 次に、Stable Diffusionをブラウザから操作するためのStable Diffusion WebUI…

  • プロンプトを書くだけで、AIでどこまでゲームを作れるのか

    会津ラボの吉田です。 最近のAIコーディングツールの進化は目覚ましく、「プロンプトを書くだけでアプリが作れる」という話をよく耳にするようになりました。 では実際のところ、AIだけでどこまでゲームを作れるのか?今回は以下の3ジャンルに挑戦してみました。 検証環境 挑戦①:タイピングゲーム & テトリス風ゲーム ― あっさり完成 最初に挑戦したのはタイピングゲームとテトリス風ゲームです。「表示されたカタカナをローマ字入力で攻撃し、敵を倒すタイピングゲームを作って」というプロンプトからスタートしました。 実際に使用したプロンプトはこちらです。 結果、両ゲームとも無事完成しました。 タイピングゲームについては、敵キャラクターの表示、ローマ字入力の判定、スコア・コンボシステム、HP管理まで、ほぼ一発で動作するものができあがりました。 テトリス風ゲームについても、かなり雑なプロンプトでそれらしきものができてしまいました。 両ゲームとも共通のARCADE UIフレームワーク内で動作しており、モード切り替えもシームレスです。NEXT表示やスコアパネルもきちんと機能しています。2Dのロジック系ゲームであれば、AIだけでも十分に実用レベルのものが作れることが分かりました。 挑戦②:FPS ― ここでAIの限界が見えた 最後に挑戦したのがFPS(一人称シューティング)です。 上記2ゲームに比べて、これは非常に苦戦しました。 一応動くものはできあがりました。しかし、問題が山積みでした。 問題点①:素材なしだと敵の見た目がこのようになる 画像素材を一切使わない縛りのため、敵キャラクターはすべてThree.jsのジオメトリ(直方体や球)を組み合わせて描画しています。結果、ご覧の通り幽霊というよりも、てるてる坊主のような見た目になりました。ホラー感が皆無です。 問題点②:不具合が多発 3D空間での当たり判定、敵の移動、ウェーブ管理などが絡み合い、複数の不具合が発生しました。 操作キャラが想定する方向に動かない、敵が壁にめり込む、弾が当たっているのにダメージが入らない、ウェーブが正しく進行しないなど、修正の影響が別機能に波及する状態が続きました 問題点③:動作が重い ブラウザ上でThree.jsを使った3D描画を行っているため、敵の数が増えるとフレームレートが著しく低下しました。前方進行の「W」キーを「チョン」と触っただけで、キャラが数メートル前に進む始末・・・。 AIゲーム開発で見えた境界線 今回の検証で、AIによるゲーム開発の得意・不得意がかなり明確になりました。 AIが得意なゲーム AIが苦手なゲーム まとめ 「プロンプトを書くだけで、AIでどこまでゲームを作れるのか」という疑問に対しては、「ジャンルによる」という結論になりました。 タイピングゲームやテトリス風ゲームのような2Dロジック系ゲームであれば、プロンプトだけで高品質なものができる一方で、FPSのような3Dゲームは、現状では実用レベルに持っていくのは難しいと感じました。 3Dゲーム制作の知見をお持ちの方であれば、的確な修正プロンプトを出すことでクオリティを上げることは十分可能だと思います。AIに全てを任せるのではなく、補助してもらう使い方が現実的だと思います。