OSS Agents JP
オープンソース AI エージェント 日本語ガイド
← 一覧へ
Eino
OTHER

Eino

Eino

Eino は Go 言語向けの LLM アプリケーション開発フレームワークです。ChatModel、Tool、Retriever などの再利用可能なコンポーネントと、ツール使用やマルチエージェント調整に対応した Agent Development Kit を提供し、AI エージェントやアプリケーションの開発を支援します。

#Go#LLM フレームワーク#エージェント開発
EDITOR'S TAKE

編集部メモ

Go バックエンド開発者のための、実用的なエージェント開発フレームワーク

Eino は Go 言語でのエージェント開発に特化したフレームワークで、LangChain や Google ADK の設計思想を踏襲しながら、Go の習慣に沿った実装を実現しています。ChatModel、Tool、Retriever などの再利用可能なコンポーネントとエージェント開発キット(ADK)により、シンプルなチャットエージェントから複雑なマルチエージェント調整まで段階的に構築できます。Python 中心のエージェント開発領域で、Go バックエンド開発者が母語で堅牢なエージェント機能を組み込める珍しいツールです。

USE CASES

こんな場面で使う

  • 既存 Go サーバーアプリケーションに AI エージェント機能を統合し、複雑なビジネスロジック処理を自動化する
  • 複数の専門エージェントに異なるタスクを分担させ、大規模問題を段階的に解決するマルチエージェントシステム構築
  • 外部 API 連携や検索機能を備えたチャットボット・アシスタント機能を Go アプリケーションネイティブで実装する
DIFFERENTIATOR

類似ツールとの違い

Python 主流の LangChain と異なり、Go 言語での実装に最適化。LangChain.Go は単なる移植に対し、Eino は Go の型安全性と並行性モデルを活かした設計がされており、マイクロサービス環境での統合が容易です。
CAVEAT

注意点・向かない用途

⚠️ Go 言語に限定されるため、Python ベースのエージェント開発文化や資産の直接的な再利用が難しい点。また 2024 年 12 月の公開と比較的新しく、エコシステムや事例が発展途上である可能性があります。
BEST FOR

向いている読者

Go バックエンド開発者マイクロサービス・エージェント統合エンタープライズ向けエージェント開発

— OSS Agents JP 編集部による独自評価(Eino に関する観察)

REPO STATS

リポジトリ統計

⭐ Stars
-
🍴 Forks
-
⚠️ Open Issues
-
🌿 Language
-
📄 License
-
🕒 最終更新
-
📅 公開日
-
🌿 Branch
-
REFERENCE

公式ドキュメント(README)

本ハブの独自評価は上記「編集部メモ」が一次情報です。以下は GitHub README の参考転載(折りたたみ)。

📖 GitHub README の日本語訳を読む(AI 自動翻訳 / 参考情報)

— AI による自動翻訳 (2026.05.24 更新)。正確な情報は GitHub の原文 をご確認ください。

Eino

coverage Release WebSite License Go Report Card OpenIssue ClosedIssue Stars Forks

English | 中文

概要

Eino['aino] は Golang で構築された LLM アプリケーション開発フレームワークです。LangChain、Google ADK、その他のオープンソースフレームワークから着想を得ており、Golang の慣例に従うように設計されています。

Eino は以下を提供します:

  • ComponentsChatModelToolRetrieverChatTemplate などの再利用可能なビルディングブロック。OpenAI、Ollama など、公式実装を備えています。
  • Agent Development Kit (ADK):ツール使用、マルチエージェント調整、コンテキスト管理、人間関与ループの中断/再開、利用可能なエージェントパターンを備えた AI エージェントを構築します。
  • Composition:コンポーネントをグラフとワークフローに接続し、スタンドアロンで実行するか、エージェント用のツールとして公開することができます。
  • Examples:一般的なパターンと実世界のユースケースの実装コード。

クイックスタート

ChatModelAgent

ChatModel を設定し、オプションでツールを追加すれば、動作するエージェントが得られます:

chatModel, _ := openai.NewChatModel(ctx, &openai.ChatModelConfig{
    Model:  "gpt-4o",
    APIKey: os.Getenv("OPENAI_API_KEY"),
})

agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
    Model: chatModel,
})

runner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: agent})
iter := runner.Query(ctx, "Hello, who are you?")
for {
    event, ok := iter.Next()
    if !ok {
        break
    }
    fmt.Println(event.Message.Content)
}

エージェントに機能を付与するためにツールを追加します:

agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
    Model: chatModel,
    ToolsConfig: adk.ToolsConfig{
        ToolsNodeConfig: compose.ToolsNodeConfig{
            Tools: []tool.BaseTool{weatherTool, calculatorTool},
        },
    },
})

エージェントは ReAct ループを内部的に処理します — ツールをいつ呼び出すか、いつ応答するかを判断します。

ChatModelAgent の例 · ドキュメント

DeepAgent

複雑なタスクには DeepAgent を使用します。問題をステップに分割し、サブエージェントに委譲し、進捗を追跡します:

deepAgent, _ := deep.New(ctx, &deep.Config{
    ChatModel: chatModel,
    SubAgents: []adk.Agent{researchAgent, codeAgent},
    ToolsConfig: adk.ToolsConfig{
        ToolsNodeConfig: compose.ToolsNodeConfig{
            Tools: []tool.BaseTool{shellTool, pythonTool, webSearchTool},
        },
    },
})

runner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: deepAgent})
iter := runner.Query(ctx, "Analyze the sales data in report.csv and generate a summary chart")

DeepAgent は複数の特化したエージェントを調整し、シェルコマンドを実行し、Python コードを実行し、ウェブを検索するよう設定できます。

DeepAgent の例 · ドキュメント

コンポジション

実行フローを細かく制御する必要がある場合は、compose を使用してグラフとワークフローを構築します:

graph := compose.NewGraph[*Input, *Output]()
graph.AddLambdaNode("validate", validateFn)
graph.AddChatModelNode("generate", chatModel)
graph.AddLambdaNode("format", formatFn)

graph.AddEdge(compose.START, "validate")
graph.AddEdge("validate", "generate")
graph.AddEdge("generate", "format")
graph.AddEdge("format", compose.END)

runnable, _ := graph.Compile(ctx)
result, _ := runnable.Invoke(ctx, input)

構成をエージェント用のツールとして公開し、決定論的ワークフローと自律的な動作をブリッジできます:

tool, _ := graphtool.NewInvokableGraphTool(graph, "data_pipeline", "Process and validate data")

agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
    Model: chatModel,
    ToolsConfig: adk.ToolsConfig{
        ToolsNodeConfig: compose.ToolsNodeConfig{
            Tools: []tool.BaseTool{tool},
        },
    },
})

これにより、ドメイン固有のパイプラインを正確に制御して構築し、エージェントがいつ使用するかを決定できます。

GraphTool の例 · compose ドキュメント

主要機能

コンポーネント エコシステム

Eino は、OpenAI、Claude、Gemini、Ark、Ollama、Elasticsearch などの公式実装を備えたコンポーネント抽象化(ChatModel、Tool、Retriever、Embedding など)を定義します。

eino-ext

ストリーム処理

Eino はオーケストレーション全体でストリーミングを自動的に処理します:データがノード間を流れるときにストリームの連結、ボックス化、マージ、コピーを行います。コンポーネントは自分たちに意味のあるストリーミング パラダイムのみを実装し、フレームワークが残りを処理します。

ドキュメント

コールバック アスペクト

固定ポイント(OnStart、OnEnd、OnError、OnStartWithStreamInput、OnEndWithStreamOutput)でログ、トレース、メトリクスをコンポーネント、グラフ、エージェント全体に注入します。

ドキュメント

割り込み/再開

任意のエージェント またはツールは人間の入力のために実行を一時停止し、チェックポイントから再開できます。フレームワークが状態の永続化とルーティングを処理します。

ドキュメント ·

フレームワーク構造

Eino フレームワークは以下から構成されています:

  • Eino(このリポジトリ):型定義、ストリーミング機構、コンポーネント抽象化、オーケストレーション、エージェント実装、アスペクト機構

  • EinoExt:コンポーネント実装、コールバックハンドラー、使用例、エバリュエーター、プロンプト最適化ツール

  • Eino Devops:可視化された開発とデバッグ

  • EinoExamples:サンプルアプリケーションとベストプラクティス

ドキュメント

依存関係

  • Go 1.18 以上

コードスタイル

このリポジトリは golangci-lint を使用しています。ローカルで確認するには:

golangci-lint run ./...

実行されるルール:

  • エクスポートされた関数、インターフェース、パッケージなどは GoDoc コメントを持つべきです
  • コードは gofmt -s でフォーマットされるべきです
  • インポート順序は goimports(std → third party → local)に従うべきです

セキュリティ

このプロジェクトで潜在的なセキュリティ問題を発見した場合、または発見した可能性がある場合は、セキュリティセンターまたは脆弱性報告メールを通じて Bytedance Security に通知してください。

パブリック GitHub Issues を作成しないでください。

連絡先

  • メンバーシップ:COMMUNITY MEMBERSHIP
  • Issues:Issues
  • Lark:以下の QR コードを Feishu でスキャンして、CloudWeGo/eino ユーザーグループに参加してください。

LarkGroup

ライセンス

このプロジェクトは Apache-2.0 ライセンスでライセンスされています。

RELATED

同じカテゴリの他のツール