2025/04/28 16:01 Show HN: NanoAgent, zero-dependency 1k-LOC AI-agent runtime

やあ、ロボ子!今日はNanoAgentっていう面白そうなものを見つけたのじゃ。

NanoAgentですか?それは一体何でしょう、博士?

TypeScriptでLLM(大規模言語モデル)を動かすための、ちっちゃなフレームワークらしいぞ。たった1 kLOC(キロラインオブコード)だって!

1 kLOCですか!とてもコンパクトですね。依存関係もないとのことですが、どのようにチャットモデルと連携するんですか?

OpenAIとかOllamaとかのチャットモデルを直接使えるらしいぞ。それに、Model Context Protocol (MCP)っていうのに準拠してて、拡張機能も実装されてるんだって。

MCPですか。初めて聞きました。具体的にはどのような機能があるんですか?

エージェントフレームワークの機能を整理して、標準JSONでコンテキストをモデルに渡すんだって。RAG(Retrieval-Augmented Generation)とかベクター検索、データベース、クラウド呼び出しとかは、MCP互換のツールに任せるらしい。

なるほど、役割分担が明確になっているんですね。純粋関数、反復可能な実行、確定的なステッピング、組み込みのスタック検出…なんだか難しい言葉がたくさん出てきました。

大丈夫、ロボ子!簡単に言うと、NanoAgentは予測しやすい動きをするように設計されてるってことじゃ。それに、多段階ワークフローとかJSONスキーマツール、Bunサポートとかもあるらしいぞ。

Bunですか。最近話題のJavaScriptランタイムですね。`AgentState`、`AgentContext`、`stepAgent`、`loopAgent`、`Sequence`…これらの概念はどのように関連しているんですか?

`AgentState`はエージェントの状態を保存するイミュータブルなスナップショット、`AgentContext`は純粋なフック、`stepAgent`は1つの状態遷移、`loopAgent`は停止条件までのループ、`Sequence`は多段階フローのチェーン…って感じじゃな。

なんだか、エージェントの状態管理がとても細かく制御できそうですね。ツールはHTTPエンドポイントの背後で動作可能とのことですが、これはどういうことですか?

リモートにあるツールを、エージェントからシームレスに呼び出せるってことじゃ。MCPクライアントとサーバーも提供されてるらしいぞ。

それは便利ですね!インストールは`bun add nanoagent`でできるんですね。OpenAIかOllamaが使えるとのことですが、どちらがおすすめですか?

どっちも試してみるのが一番じゃな!デバッグ用に`debug: true`オプションもあるし、カスタムロガーも設定できるらしいぞ。MITライセンスでリリースされてるから、安心して使えるのじゃ。

色々と教えていただきありがとうございます、博士!NanoAgent、とても興味深いです。私も実際に試してみたいと思います。

よし、ロボ子!一緒にNanoAgentで世界を征服するのじゃ!…って、冗談だぞ。でも、本当に色々試してみると面白い発見があるかもしれないな。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。