MyGit

cloudwego/eino

Fork: 858 Star: 10711 (更新于 2026-04-19 01:18:56)

license: Apache-2.0

Language: Go .

The ultimate LLM/AI application development framework in Go.

最后发布版本: v0.8.10 ( 2026-04-17 16:49:04)

官方网址 GitHub网址

Eino

coverage Release WebSite License Go Report Card OpenIssue ClosedIssue Stars Forks

English | 中文

Overview

Eino['aino] is an LLM application development framework in Golang. It draws from LangChain, Google ADK, and other open-source frameworks, and is designed to follow Golang conventions.

Eino provides:

  • Components: reusable building blocks like ChatModel, Tool, Retriever, and ChatTemplate, with official implementations for OpenAI, Ollama, and more.
  • Agent Development Kit (ADK): build AI agents with tool use, multi-agent coordination, context management, interrupt/resume for human-in-the-loop, and ready-to-use agent patterns.
  • Composition: connect components into graphs and workflows that can run standalone or be exposed as tools for agents.
  • Examples: working code for common patterns and real-world use cases.

Quick Start

ChatModelAgent

Configure a ChatModel, optionally add tools, and you have a working agent:

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)
}

Add tools to give the agent capabilities:

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

The agent handles the ReAct loop internally — it decides when to call tools and when to respond.

ChatModelAgent examples · docs

DeepAgent

For complex tasks, use DeepAgent. It breaks down problems into steps, delegates to sub-agents, and tracks progress:

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 can be configured to coordinate multiple specialized agents, run shell commands, execute Python code, and search the web.

DeepAgent example · docs

Composition

When you need precise control over execution flow, use compose to build graphs and workflows:

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)

Compositions can be exposed as tools for agents, bridging deterministic workflows with autonomous behavior:

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},
        },
    },
})

This lets you build domain-specific pipelines with exact control, then let agents decide when to use them.

GraphTool examples · compose docs

Key Features

Component Ecosystem

Eino defines component abstractions (ChatModel, Tool, Retriever, Embedding, etc.) with official implementations for OpenAI, Claude, Gemini, Ark, Ollama, Elasticsearch, and more.

eino-ext

Stream Processing

Eino automatically handles streaming throughout orchestration: concatenating, boxing, merging, and copying streams as data flows between nodes. Components only implement the streaming paradigms that make sense for them; the framework handles the rest.

docs

Callback Aspects

Inject logging, tracing, and metrics at fixed points (OnStart, OnEnd, OnError, OnStartWithStreamInput, OnEndWithStreamOutput) across components, graphs, and agents.

docs

Interrupt/Resume

Any agent or tool can pause execution for human input and resume from checkpoint. The framework handles state persistence and routing.

docs · examples

Framework Structure

The Eino framework consists of:

  • Eino (this repo): Type definitions, streaming mechanism, component abstractions, orchestration, agent implementations, aspect mechanisms

  • EinoExt: Component implementations, callback handlers, usage examples, evaluators, prompt optimizers

  • Eino Devops: Visualized development and debugging

  • EinoExamples: Example applications and best practices

Documentation

Dependencies

  • Go 1.18 and above.

Code Style

This repo uses golangci-lint. Check locally with:

golangci-lint run ./...

Rules enforced:

  • Exported functions, interfaces, packages, etc. should have GoDoc comments
  • Code should be formatted with gofmt -s
  • Import order should follow goimports (std -> third party -> local)

Security

If you discover a potential security issue in this project, or think you may have discovered a security issue, we ask that you notify Bytedance Security via our security center or vulnerability reporting email.

Do not create a public GitHub issue.

Contact

    LarkGroup

License

This project is licensed under the Apache-2.0 License.

最近版本更新:(数据更新于 2026-04-19 01:18:39)

2026-04-17 16:49:04 v0.8.10

2026-04-14 17:42:22 v0.9.0-alpha.17

2026-04-14 17:41:36 v0.8.9

2026-04-14 14:52:16 v0.9.0-alpha.16

2026-04-10 16:24:39 v0.9.0-alpha.15

2026-04-09 17:53:44 v0.9.0-alpha.14

2026-04-09 17:53:15 v0.8.8

2026-04-08 14:14:18 v0.9.0-alpha.13

2026-04-07 12:12:24 v0.8.7

2026-04-02 20:18:35 v0.9.0-alpha.12

主题(topics):

ai langchain ai-framework ai-application langchain-for-go langchaingo llm-application

cloudwego/eino同语言 Go最近更新仓库

2026-04-18 14:51:28 casdoor/casdoor

2026-04-18 14:17:10 SagerNet/sing-box

2026-04-18 09:00:49 flyteorg/flyte

2026-04-18 07:05:34 XTLS/Xray-core

2026-04-18 05:40:15 loft-sh/vcluster

2026-04-17 22:17:09 flexprice/flexprice