cloudwego/eino

GitHub: cloudwego/eino

基于 Go 语言的 LLM 应用开发框架,借鉴 LangChain 设计理念,提供 Agent 构建、多 Agent 协作和工作流编排能力。

Stars: 9792 | Forks: 755

# Eino ![覆盖率](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7f2287575e135410.svg) [![Release](https://img.shields.io/github/v/release/cloudwego/eino)](https://github.com/cloudwego/eino/releases) [![网站](https://img.shields.io/website?up_message=cloudwego&url=https%3A%2F%2Fwww.cloudwego.io%2F)](https://www.cloudwego.io/) [![License](https://img.shields.io/github/license/cloudwego/eino)](https://github.com/cloudwego/eino/blob/main/LICENSE) [![Go Report Card](https://goreportcard.com/badge/github.com/cloudwego/eino)](https://goreportcard.com/report/github.com/cloudwego/eino) [![OpenIssue](https://img.shields.io/github/issues/cloudwego/eino)](https://github.com/cloudwego/kitex/eino) [![ClosedIssue](https://img.shields.io/github/issues-closed/cloudwego/eino)](https://github.com/cloudwego/eino/issues?q=is%3Aissue+is%3Aclosed) ![Stars](https://img.shields.io/github/stars/cloudwego/eino) ![Forks](https://img.shields.io/github/forks/cloudwego/eino) English | [中文](README.zh_CN.md) # 概述 **Eino['aino]** 是一个基于 Golang 的 LLM 应用开发框架。它借鉴了 LangChain、Google ADK 等开源框架的设计理念,并遵循 Golang 的惯例。 Eino 提供: - **[组件](https://github.com/cloudwego/eino-ext)**:可复用的构建模块,如 `ChatModel`、`Tool`、`Retriever` 和 `ChatTemplate`,并提供了 OpenAI、Ollama 等官方实现。 - **Agent 开发套件 (ADK)**:构建具备工具使用、多 Agent 协作、上下文管理、中断/恢复以支持人工介入功能的 AI Agent,以及开箱即用的 Agent 模式。 - **编排**:将组件连接成图或工作流,既可以独立运行,也可以作为工具暴露给 Agent 调用。 - **[示例](https://github.com/cloudwego/eino-examples)**:涵盖常见模式和实际用例的可运行代码。 ![](https://raw.githubusercontent.com/cloudwego/eino/main/.github/static/img/eino/eino_concept.jpeg) # 快速开始 ## ChatModelAgent 配置一个 ChatModel,可选地添加工具,即可得到一个可运行的 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) } ``` 添加工具以赋予 Agent 能力: ``` agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{ Model: chatModel, ToolsConfig: adk.ToolsConfig{ ToolsNodeConfig: compose.ToolsNodeConfig{ Tools: []tool.BaseTool{weatherTool, calculatorTool}, }, }, }) ``` Agent 内部会处理 ReAct 循环——它会自行决定何时调用工具以及何时响应。 → [ChatModelAgent 示例](https://github.com/cloudwego/eino-examples/tree/main/adk/intro) · [文档](https://www.cloudwego.io/docs/eino/core_modules/eino_adk/agent_implementation/chat_model/) ## DeepAgent 对于复杂任务,请使用 DeepAgent。它会将问题分解为多个步骤,委托给子 Agent,并跟踪进度: ``` 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 可以配置为协调多个专用 Agent、运行 shell 命令、执行 Python 代码以及搜索网页。 → [DeepAgent 示例](https://github.com/cloudwego/eino-examples/tree/main/adk/multiagent/deep) · [文档](https://www.cloudwego.io/docs/eino/core_modules/eino_adk/agent_implementation/deepagents/) ## 编排 当需要对执行流程进行精确控制时,可以使用 `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) ``` 编排后的流程可以作为工具暴露给 Agent,从而将确定性的工作流与自主行为连接起来: ``` 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}, }, }, }) ``` 这允许你构建具有精确控制的特定领域流水线,然后让 Agent 决定何时使用它们。 → [GraphTool 示例](https://github.com/cloudwego/eino-examples/tree/main/adk/common/tool/graphtool) · [编排文档](https://www.cloudwego.io/docs/eino/core_modules/chain_and_graph_orchestration/) # 关键特性 ## 组件生态 Eino 定义了组件抽象(ChatModel、Tool、Retriever、Embedding 等),并提供了 OpenAI、Claude、Gemini、Ark、Ollama、Elasticsearch 等官方实现。 → [eino-ext](https://github.com/cloudwego/eino-ext) ## 流式处理 Eino 在整个编排过程中自动处理流式传输:在节点间流动时对数据流进行拼接、装箱、合并和复制。组件只需实现对其有意义的流式范式,其余的由框架处理。 → [文档](https://www.cloudwego.io/docs/eino/core_modules/chain_and_graph_orchestration/stream_programming_essentials/) ## 回调切面 在组件、图和 Agent 的固定节点(OnStart、OnEnd、OnError、OnStartWithStreamInput、OnEndWithStreamOutput)注入日志、链路追踪和指标。 → [文档](https://www.cloudwego.io/docs/eino/core_modules/chain_and_graph_orchestration/callback_manual/) ## 中断/恢复 任何 Agent 或工具都可以暂停执行以等待人工输入,并从检查点恢复。框架负责状态持久化和路由。 → [文档](https://www.cloudwego.io/docs/eino/core_modules/eino_adk/agent_hitl/) · [示例](https://github.com/cloudwego/eino-examples/tree/main/adk/human-in-the-loop) # 框架结构 ![](https://raw.githubusercontent.com/cloudwego/eino/main/.github/static/img/eino/eino_framework.jpeg) Eino 框架包含: - Eino(本仓库):类型定义、流式处理机制、组件抽象、编排、Agent 实现、切面机制 - [EinoExt](https://github.com/cloudwego/eino-ext):组件实现、回调处理器、使用示例、评估器、提示词优化器 - [Eino Devops](https://github.com/cloudwego/eino-ext/tree/main/devops):可视化开发和调试 - [EinoExamples](https://github.com/cloudwego/eino-examples):示例应用和最佳实践 ## 文档 - [Eino 用户手册](https://www.cloudwego.io/zh/docs/eino/) - [Eino:快速开始](https://www.cloudwego.io/zh/docs/eino/quick_start/) ## 依赖 - Go 1.18 及以上版本。 ## 代码风格 本仓库使用 `golangci-lint`。通过以下命令在本地检查: ``` golangci-lint run ./... ``` 强制执行的规则: - 导出的函数、接口、包等应有 GoDoc 注释 - 代码应使用 `gofmt -s` 格式化 - Import 顺序应遵循 `goimports`(标准库 -> 第三方 -> 本地) ## 安全 如果你发现潜在的安全问题,请通过[安全中心](https://security.bytedance.com/src)或[漏洞报告邮件](sec@bytedance.com)通知 Bytedance 安全团队。 **请勿**创建公开的 GitHub Issue。 ## 联系我们 - 成员:[COMMUNITY MEMBERSHIP](https://github.com/cloudwego/community/blob/main/COMMUNITY_MEMBERSHIP.md) - 问题:[Issues](https://github.com/cloudwego/eino/issues) - Lark:使用 [飞书](https://www.feishu.cn/en/) 扫描下方二维码加入 CloudWeGo/eino 用户群。     LarkGroup ## 许可证 本项目基于 [Apache-2.0 License](LICENSE-APACHE) 授权。
标签:Agent, AI基础设施, AI风险缓解, ChatModel, CloudWeGo, DLL 劫持, Eino, EVTX分析, EVTX分析, Golang, Go语言, LangChain, LLM, OpenSearch, RAG, Retriever, Tools, Unmanaged PE, 中间件, 人工智能, 企业级AI, 大语言模型, 安全编程, 工作流编排, 开发框架, 开源框架, 持续集成, 日志审计, 检索增强生成, 用户模式Hook绕过, 程序破解, 组件库, 网络调试, 自动化, 轻量级