freshcrate
Home > Frameworks > eino

eino

The ultimate LLM/AI application development framework in Go.

Description

The ultimate LLM/AI application development framework in Go.

README

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.

Release History

VersionChangesUrgencyDate
v0.8.11## What's Changed * fix(adk): eagerly consume stream in GobEncode to prevent checkpoint failure on model retry by @shentongmartin in https://github.com/cloudwego/eino/pull/980 **Full Changelog**: https://github.com/cloudwego/eino/compare/v0.8.10...v0.8.11High4/20/2026
v0.8.10## What's Changed * feat(adk): PreserveSkillsConfig support MaxTokensPerSkill and SkillsTokenBudget by @mrh997 in https://github.com/cloudwego/eino/pull/967 **Full Changelog**: https://github.com/cloudwego/eino/compare/v0.8.9...v0.8.10High4/17/2026
v0.8.9## What's Changed * feat(adk): reduction middleware support TruncExcludeTools by @N3kox in https://github.com/cloudwego/eino/pull/946 * feat(adk): refactor summarization middleware with retry support by @mrh997 in https://github.com/cloudwego/eino/pull/902 * feat(adk): add SummarizeMessages for on-demand synchronous summarization by @mrh997 in https://github.com/cloudwego/eino/pull/958 **Full Changelog**: https://github.com/cloudwego/eino/compare/v0.8.8...v0.8.9High4/14/2026
v0.9.0-alpha.15## What's Changed * fix(adk): propagate missing ToolsNodeConfig fields in ChatModelAgent by @JonXSnow in https://github.com/cloudwego/eino/pull/945 **Full Changelog**: https://github.com/cloudwego/eino/compare/v0.9.0-alpha.14...v0.9.0-alpha.15High4/10/2026
v0.8.7## What's Changed * docs(schema): fix invalid StreamReader Recv examples by @iwen-conf in https://github.com/cloudwego/eino/pull/919 * fix(adk): improve resume error messages to avoid exposing internal types by @shentongmartin in https://github.com/cloudwego/eino/pull/924 * feat(skill): add extension hooks for fork skill execution and tool params by @ohxiaowo in https://github.com/cloudwego/eino/pull/905 ## New Contributors * @iwen-conf made their first contribution in https://github.com/High4/7/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

localforgeLocal coding agent with neat UIv1.0.24
aletheiaOperating framework for AI-assisted work with decision, governance, validation, and learnings before execution.main@2026-04-21
ai-dev-assistant-frameworkA plug-and-play framework for AI-assisted software development, enhancing context-aware collaboration in complex codebases. Perfect for tools like GitHub Copilot. πŸ™βœ¨main@2026-04-21
kelosKelos - The Kubernetes-native framework for orchestrating autonomous AI coding agents.v0.30.0
neuron-php-docNeuron PHP Framework documentationmain@2026-04-16