🦾

Function Callingだけで自然言語のタスクからコード自動生成 => 実行を実装してみた

に公開

目的

AI Agentが来る!的な流れがあるので、自前(+cursor)で簡易的なAI Agentを実装してみた。
使い古されたフレームワークとしてはLangchainなどあるが、Function callingの組み合わせても実装できるのでは?と思い、思いついたので実装。

以下リポジトリ
https://github.com/tesla0225/manage-executor-test

※docker等は使用していないので、安全な環境が用意できない方は実行しないことをお勧めします

1/2くらいの確率でpackageをinstallやコードの実行に失敗するが、実行コードの質の担保が目的ではないので良しとした。

賢い方(o1 Pro)による説明

  • OpenAIのFunction Calling 機能とTypeScriptを連携させ、
    「ユーザーがリクエストしたタスクを実行するためのツールを動的に生成・管理する」 一連の仕組みをデモするプロジェクトです。
  • TaskManager → Executor → ToolManager の流れでタスクを捌き、ツールが無い場合には OpenAIが自動生成。
  • 生成されたツールは generated-tools ディレクトリに保存され、即時に利用可能となる。
  • 必要なnpmパッケージの検知・インストールも自動化している。

https://chatgpt.com/share/6779d9f8-ebc4-800e-8306-54224b66aabb

わかりやすい実行の流れ

実際のシーケンス図

詰まったところ

コードから必要なnpm packageの発見 + installの部分で、cursorによしなにやってもらおうとしたが、いまいち動かず...
自分で一つ一つロジックを定義して、やっと正しく動くようになった。

感想

ここから例えば

並列にしたい => Promise.allで多重実行する
タスクを分割して大きいタスクを実行したい => メモリーレイヤーを追加する
安全な環境で何度も実行する => docker、webcontainerで実行する

などを実装すればLangchainなどのAgentや他サービスに近付いていく手応えを得られた。

正月休みのうちに実装できてよかった!!!

Discussion