Tutorial 3: 组件系统

组件概述

Eino 的 Pillar 1 是组件抽象层:每种组件都有清晰的 接口(Input / Output / Option)、执行方式(如 Generate/InvokeStream)以及可选的 回调 支持。实现可替换,调用方只依赖接口。

参考:Eino ComponentsDeepWiki Core Concepts - Components

主要组件类型

ChatModel / ToolCallingChatModel

  • ChatModel:与 LLM 交互,输入消息列表,输出回复(或流)。

  • ToolCallingChatModel:在对话之外支持 工具调用(function calling),用于 ReAct 等 Agent。

实现通常来自 eino-ext,例如:

  • OpenAI、Claude、Gemini、DeepSeek、Qwen、Ollama、Qianfan 等

  • AgenticModel(如 ARK)用于更复杂的 Agent 能力

文档:Eino: ChatModel Guide、Ecosystem 中的 ChatModel 集成。

ChatTemplate

  • 将「用户输入 + 可选的系统提示、历史等」格式化为 LLM 所需的消息列表(如 system/user/assistant)。

  • 保证与各模型的消息格式(如 OpenAI、Claude)一致。

文档:Eino: ChatTemplate Guide

BaseTool、ToolsNode

  • BaseTool:单个工具的抽象,包含名称、描述、参数定义;支持 InvokableTool(同步)或 StreamableTool(流式)。

  • ToolsNode:在 Graph 中执行一组工具的节点,根据模型输出的 tool_calls 调用对应 Tool,并把结果填回消息。

创建自定义工具见 How to Create a Tool,配置与执行见 ToolsNode & Tool Guide
Eino-ext 提供多种现成 Tool:DuckDuckGo/Bing/Google 搜索、Wikipedia、HTTP、MCP、Commandline、Browseruse 等。

Retriever

  • 给定查询,返回一组相关文档或片段(通常带分数或元数据)。

  • 用于 RAG:先检索再拼进 Prompt 或上下文。

eino-ext 提供多种 Retriever:Elasticsearch 7/8/9、Milvus v1/v2、OpenSearch、Redis、Volc VikingDB、Dify、Volc Knowledge 等。
文档:Eino: Retriever Guide.

Embedder / Indexer

  • Embedder:文本 → 向量。

  • Indexer:写入/查询向量索引(如 Milvus、Elasticsearch、Redis、VikingDB)。

用于 RAG 的「建库」与「检索」链路。
文档:Eino: Indexer GuideEino: Embedding Guide
Ecosystem 中有 ARK、OpenAI、DashScope、Ollama、Qianfan、TencentCloud 等 Embedding 集成。

DocumentLoader / DocumentTransformer

  • DocumentLoader:从本地文件、S3、URL 等加载原始文档。

  • DocumentTransformer:对文档做切分、过滤等(如 RecursiveSplitter、SemanticSplitter、MarkdownSplitter)。

  • Document Parser:解析 HTML、PDF 等格式。

文档:Eino: Document Loader GuideDocument ParserDocument Transformer

Lambda

  • 在编排图中插入 自定义函数 节点:输入 → 业务逻辑 → 输出。

  • 用于简单变换、过滤、聚合等,无需单独实现某类组件接口。

文档:Eino: Lambda Guide

组件在编排中的使用

  • Chain:按顺序连接若干组件(如 Template → Model → Lambda 解析)。

  • Graph:将组件作为节点,用边和状态连接;例如 Model 节点 + ToolsNode + Lambda。

  • Workflow:无环 DAG + 字段级映射,适合「多输入多输出」的数据流。

下一节将介绍 Chain、Graph、Workflow 的编排能力与统一运行时。

小结

  • Eino 组件包括:ChatModel、ChatTemplate、BaseTool/ToolsNode、Retriever、Embedder/Indexer、DocumentLoader/Transformer、Lambda。

  • 实现集中在 eino-ext,通过接口可替换。

  • 组件通过 Chain/Graph/Workflow 编排,形成完整应用。