{"id":24123533,"url":"https://github.com/cloudwego/eino","last_synced_at":"2026-04-09T12:01:13.497Z","repository":{"id":268537145,"uuid":"898304583","full_name":"cloudwego/eino","owner":"cloudwego","description":"The ultimate LLM/AI application development framework in Go.","archived":false,"fork":false,"pushed_at":"2026-03-31T03:40:08.000Z","size":11591,"stargazers_count":10337,"open_issues_count":73,"forks_count":812,"subscribers_count":66,"default_branch":"main","last_synced_at":"2026-03-31T03:54:01.330Z","etag":null,"topics":["ai","ai-application","ai-framework","langchain","langchain-for-go","langchaingo","llm-application"],"latest_commit_sha":null,"homepage":"https://www.cloudwego.io/docs/eino/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudwego.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-12-04T06:47:27.000Z","updated_at":"2026-03-31T03:37:51.000Z","dependencies_parsed_at":"2025-01-03T03:27:42.166Z","dependency_job_id":"21e475fd-bc58-4236-b552-66cff8f52f2d","html_url":"https://github.com/cloudwego/eino","commit_stats":null,"previous_names":["cloudwego/eino"],"tags_count":170,"template":false,"template_full_name":"cloudwego/.github","purl":"pkg:github/cloudwego/eino","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Feino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Feino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Feino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Feino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudwego","download_url":"https://codeload.github.com/cloudwego/eino/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudwego%2Feino/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31308446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T12:59:32.332Z","status":"ssl_error","status_checked_at":"2026-04-02T12:54:48.875Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-application","ai-framework","langchain","langchain-for-go","langchaingo","llm-application"],"created_at":"2025-01-11T13:01:08.869Z","updated_at":"2026-04-02T14:49:05.822Z","avatar_url":"https://github.com/cloudwego.png","language":"Go","funding_links":[],"categories":["Go","Repos","Other LLM Frameworks","A01_文本生成_文本对话","Large Language Model","Agent Framework 🧠","Coding \u0026 Development","2. Libraries \u0026 Frameworks","5. Retrieval-Augmented Generation (RAG) \u0026 Knowledge"],"sub_categories":["Videos Playlists","大语言对话模型及数据","DevTools","5. The Convergence: Harness-as-a-Service (HaaS)","Go"],"readme":"# Eino\n\n![coverage](https://raw.githubusercontent.com/cloudwego/eino/badges/.badges/main/coverage.svg)\n[![Release](https://img.shields.io/github/v/release/cloudwego/eino)](https://github.com/cloudwego/eino/releases)\n[![WebSite](https://img.shields.io/website?up_message=cloudwego\u0026url=https%3A%2F%2Fwww.cloudwego.io%2F)](https://www.cloudwego.io/)\n[![License](https://img.shields.io/github/license/cloudwego/eino)](https://github.com/cloudwego/eino/blob/main/LICENSE)\n[![Go Report Card](https://goreportcard.com/badge/github.com/cloudwego/eino)](https://goreportcard.com/report/github.com/cloudwego/eino)\n[![OpenIssue](https://img.shields.io/github/issues/cloudwego/eino)](https://github.com/cloudwego/kitex/eino)\n[![ClosedIssue](https://img.shields.io/github/issues-closed/cloudwego/eino)](https://github.com/cloudwego/eino/issues?q=is%3Aissue+is%3Aclosed)\n![Stars](https://img.shields.io/github/stars/cloudwego/eino)\n![Forks](https://img.shields.io/github/forks/cloudwego/eino)\n\nEnglish | [中文](README.zh_CN.md)\n\n# Overview\n\n**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.\n\nEino provides:\n- **[Components](https://github.com/cloudwego/eino-ext)**: reusable building blocks like `ChatModel`, `Tool`, `Retriever`, and `ChatTemplate`, with official implementations for OpenAI, Ollama, and more.\n- **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.\n- **Composition**: connect components into graphs and workflows that can run standalone or be exposed as tools for agents.\n- **[Examples](https://github.com/cloudwego/eino-examples)**: working code for common patterns and real-world use cases.\n\n![](.github/static/img/eino/eino_concept.jpeg)\n\n# Quick Start\n\n## ChatModelAgent\n\nConfigure a ChatModel, optionally add tools, and you have a working agent:\n\n```Go\nchatModel, _ := openai.NewChatModel(ctx, \u0026openai.ChatModelConfig{\n    Model:  \"gpt-4o\",\n    APIKey: os.Getenv(\"OPENAI_API_KEY\"),\n})\n\nagent, _ := adk.NewChatModelAgent(ctx, \u0026adk.ChatModelAgentConfig{\n    Model: chatModel,\n})\n\nrunner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: agent})\niter := runner.Query(ctx, \"Hello, who are you?\")\nfor {\n    event, ok := iter.Next()\n    if !ok {\n        break\n    }\n    fmt.Println(event.Message.Content)\n}\n```\n\nAdd tools to give the agent capabilities:\n\n```Go\nagent, _ := adk.NewChatModelAgent(ctx, \u0026adk.ChatModelAgentConfig{\n    Model: chatModel,\n    ToolsConfig: adk.ToolsConfig{\n        ToolsNodeConfig: compose.ToolsNodeConfig{\n            Tools: []tool.BaseTool{weatherTool, calculatorTool},\n        },\n    },\n})\n```\n\nThe agent handles the ReAct loop internally — it decides when to call tools and when to respond.\n\n→ [ChatModelAgent examples](https://github.com/cloudwego/eino-examples/tree/main/adk/intro) · [docs](https://www.cloudwego.io/docs/eino/core_modules/eino_adk/agent_implementation/chat_model/)\n\n## DeepAgent\n\nFor complex tasks, use DeepAgent. It breaks down problems into steps, delegates to sub-agents, and tracks progress:\n\n```Go\ndeepAgent, _ := deep.New(ctx, \u0026deep.Config{\n    ChatModel: chatModel,\n    SubAgents: []adk.Agent{researchAgent, codeAgent},\n    ToolsConfig: adk.ToolsConfig{\n        ToolsNodeConfig: compose.ToolsNodeConfig{\n            Tools: []tool.BaseTool{shellTool, pythonTool, webSearchTool},\n        },\n    },\n})\n\nrunner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: deepAgent})\niter := runner.Query(ctx, \"Analyze the sales data in report.csv and generate a summary chart\")\n```\n\nDeepAgent can be configured to coordinate multiple specialized agents, run shell commands, execute Python code, and search the web.\n\n→ [DeepAgent example](https://github.com/cloudwego/eino-examples/tree/main/adk/multiagent/deep) · [docs](https://www.cloudwego.io/docs/eino/core_modules/eino_adk/agent_implementation/deepagents/)\n\n## Composition\n\nWhen you need precise control over execution flow, use `compose` to build graphs and workflows:\n\n```Go\ngraph := compose.NewGraph[*Input, *Output]()\ngraph.AddLambdaNode(\"validate\", validateFn)\ngraph.AddChatModelNode(\"generate\", chatModel)\ngraph.AddLambdaNode(\"format\", formatFn)\n\ngraph.AddEdge(compose.START, \"validate\")\ngraph.AddEdge(\"validate\", \"generate\")\ngraph.AddEdge(\"generate\", \"format\")\ngraph.AddEdge(\"format\", compose.END)\n\nrunnable, _ := graph.Compile(ctx)\nresult, _ := runnable.Invoke(ctx, input)\n```\n\nCompositions can be exposed as tools for agents, bridging deterministic workflows with autonomous behavior:\n\n```Go\ntool, _ := graphtool.NewInvokableGraphTool(graph, \"data_pipeline\", \"Process and validate data\")\n\nagent, _ := adk.NewChatModelAgent(ctx, \u0026adk.ChatModelAgentConfig{\n    Model: chatModel,\n    ToolsConfig: adk.ToolsConfig{\n        ToolsNodeConfig: compose.ToolsNodeConfig{\n            Tools: []tool.BaseTool{tool},\n        },\n    },\n})\n```\n\nThis lets you build domain-specific pipelines with exact control, then let agents decide when to use them.\n\n→ [GraphTool examples](https://github.com/cloudwego/eino-examples/tree/main/adk/common/tool/graphtool) · [compose docs](https://www.cloudwego.io/docs/eino/core_modules/chain_and_graph_orchestration/)\n\n# Key Features\n\n## Component Ecosystem\n\nEino defines component abstractions (ChatModel, Tool, Retriever, Embedding, etc.) with official implementations for OpenAI, Claude, Gemini, Ark, Ollama, Elasticsearch, and more.\n\n→ [eino-ext](https://github.com/cloudwego/eino-ext)\n\n## Stream Processing\n\nEino 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.\n\n→ [docs](https://www.cloudwego.io/docs/eino/core_modules/chain_and_graph_orchestration/stream_programming_essentials/)\n\n## Callback Aspects\n\nInject logging, tracing, and metrics at fixed points (OnStart, OnEnd, OnError, OnStartWithStreamInput, OnEndWithStreamOutput) across components, graphs, and agents.\n\n→ [docs](https://www.cloudwego.io/docs/eino/core_modules/chain_and_graph_orchestration/callback_manual/)\n\n## Interrupt/Resume\n\nAny agent or tool can pause execution for human input and resume from checkpoint. The framework handles state persistence and routing.\n\n→ [docs](https://www.cloudwego.io/docs/eino/core_modules/eino_adk/agent_hitl/) · [examples](https://github.com/cloudwego/eino-examples/tree/main/adk/human-in-the-loop)\n\n# Framework Structure\n\n![](.github/static/img/eino/eino_framework.jpeg)\n\nThe Eino framework consists of:\n\n- Eino (this repo): Type definitions, streaming mechanism, component abstractions, orchestration, agent implementations, aspect mechanisms\n\n- [EinoExt](https://github.com/cloudwego/eino-ext): Component implementations, callback handlers, usage examples, evaluators, prompt optimizers\n\n- [Eino Devops](https://github.com/cloudwego/eino-ext/tree/main/devops): Visualized development and debugging\n\n- [EinoExamples](https://github.com/cloudwego/eino-examples): Example applications and best practices\n\n## Documentation\n\n- [Eino User Manual](https://www.cloudwego.io/zh/docs/eino/)\n- [Eino: Quick Start](https://www.cloudwego.io/zh/docs/eino/quick_start/)\n\n## Dependencies\n- Go 1.18 and above.\n\n## Code Style\n\nThis repo uses `golangci-lint`. Check locally with:\n\n```bash\ngolangci-lint run ./...\n```\n\nRules enforced:\n- Exported functions, interfaces, packages, etc. should have GoDoc comments\n- Code should be formatted with `gofmt -s`\n- Import order should follow `goimports` (std -\u003e third party -\u003e local)\n\n## Security\n\nIf you discover a potential security issue in this project, or think you may\nhave discovered a security issue, we ask that you notify Bytedance Security via our [security center](https://security.bytedance.com/src) or [vulnerability reporting email](mailto:sec@bytedance.com?subject=Feedback%20On%20Eino).\n\nDo **not** create a public GitHub issue.\n\n## Contact\n- Membership: [COMMUNITY MEMBERSHIP](https://github.com/cloudwego/community/blob/main/COMMUNITY_MEMBERSHIP.md)\n- Issues: [Issues](https://github.com/cloudwego/eino/issues)\n- Lark: Scan the QR code below with [Feishu](https://www.feishu.cn/en/) to join the CloudWeGo/eino user group.\n\n\u0026ensp;\u0026ensp;\u0026ensp; \u003cimg src=\".github/static/img/eino/lark_group_zh.png\" alt=\"LarkGroup\" width=\"200\"/\u003e\n\n## License\n\nThis project is licensed under the [Apache-2.0 License](LICENSE-APACHE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwego%2Feino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudwego%2Feino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwego%2Feino/lists"}