Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion content/en/docs/eino/Cookbook.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
Description: ""
date: "2026-03-16"
date: "2026-05-19"
lastmod: ""
tags: []
title: Cookbook
Expand Down Expand Up @@ -63,6 +63,27 @@ This document serves as an example index for the eino-examples project, helping
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/adk/multiagent/integration-excel-agent">adk/multiagent/integration-excel-agent</a></td><td>Excel Agent (ADK Integration)</td><td>ADK integrated Excel Agent, including Planner, Executor, Replanner, Reporter</td></tr>
</table>

### Agent

<table>
<tr><td>Directory</td><td>Name</td><td>Description</td></tr>
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/adk/agent/ralph-loop">adk/agent/ralph-loop</a></td><td>Ralph Loop</td><td>Autonomous iteration mode: an outer <pre>for</pre> loop with <pre>Runner.Run</pre> implements single-turn iteration. The Agent perceives prior work through the file system; a verification gate checks for BUG markers before accepting completion claims</td></tr>
</table>

### Cancel

<table>
<tr><td>Directory</td><td>Name</td><td>Description</td></tr>
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/adk/cancel/graceful-exit">adk/cancel/graceful-exit</a></td><td>Graceful Exit</td><td>Demonstrates Agent Cancel + Resume: captures terminal signals, then cancels nested Agents using <pre>CancelAfterChatModel</pre> + <pre>WithRecursive</pre> mode, waits for a safe point to save Checkpoint, then resumes execution</td></tr>
</table>

### Middlewares

<table>
<tr><td>Directory</td><td>Name</td><td>Description</td></tr>
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/adk/middlewares/skill">adk/middlewares/skill</a></td><td>Skill Middleware</td><td>Loads Agent skills from the file system (e.g., log_analyzer), demonstrating skill middleware usage</td></tr>
</table>

### GraphTool

<table>
Expand Down Expand Up @@ -209,6 +230,7 @@ This document serves as an example index for the eino-examples project, helping
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/quickstart/chat">quickstart/chat</a></td><td>Chat QuickStart</td><td>The most basic LLM conversation example, including template, generation, streaming output</td></tr>
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/quickstart/eino_assistant">quickstart/eino_assistant</a></td><td>Eino Assistant</td><td>Complete RAG application example, including knowledge indexing, Agent service, Web interface</td></tr>
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/quickstart/todoagent">quickstart/todoagent</a></td><td>Todo Agent</td><td>Simple Todo management Agent example</td></tr>
<tr><td><a href="https://github.com/cloudwego/eino-examples/tree/main/quickstart/chatwitheino">quickstart/chatwitheino</a></td><td>Chat with Eino (Tutorial)</td><td>9-chapter progressive tutorial, from ChatModel → Runner → Session → Tool → Middleware → Callback → Interrupt → GraphTool → Skill, building a complete Agent step by step</td></tr>
</table>

---
Expand Down
297 changes: 255 additions & 42 deletions content/en/docs/eino/FAQ.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
Description: ""
date: "2026-03-02"
date: "2026-05-17"
lastmod: ""
tags: []
title: 'Eino: Orchestration Design Principles'
title: Orchestration Design Principles
weight: 2
---

Expand Down Expand Up @@ -321,7 +321,7 @@ func Init() {

Eino's Graph type alignment check occurs at `err = graph.AddEdge("node1", "node2")` when checking whether the two nodes' types match. This allows discovering type mismatch errors during `graph building` or `Compile process`, applicable to rules ① ② ③ listed in [Eino: Orchestration Design Principles](/docs/eino/core_modules/chain_and_graph_orchestration/orchestration_design_principles).

When the upstream node's output is `interface`, if the downstream node type implements that `interface`, upstream may be convertible to downstream type (type assertion), but can only be determined during `runtime`. At this point, if it's determined that upstream cannot be assigned to downstream, an error will be thrown.
When the upstream node's output is `interface`, if the downstream node type implements that `interface`, upstream may be convertible to downstream type (type assertion), but this can only be determined during `runtime`. The type check for this scenario has been moved to runtime.

The structure is shown in the figure below:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
Description: ""
date: "2025-07-21"
date: "2026-05-17"
lastmod: ""
tags: []
title: 'Eino: Document Transformer User Guide'
Expand Down Expand Up @@ -160,9 +160,11 @@ for idx, doc := range outDocs {

## **Existing Implementations**

1. Markdown Header Splitter: Document splitting based on Markdown headers [Splitter - markdown](/docs/eino/ecosystem_integration/document/splitter_markdown)
2. Text Splitter: Document splitting based on text length or delimiters [Splitter - semantic](/docs/eino/ecosystem_integration/document/splitter_semantic)
3. Document Filter: Filter document content based on rules [Splitter - recursive](/docs/eino/ecosystem_integration/document/splitter_recursive)
<table>
<tr><td>markdown</td><td><a href="https://github.com/cloudwego/eino-ext/blob/main/components/document/transformer/splitter/markdown/README_zh.md">README_zh.md</a></td><td><a href="https://github.com/cloudwego/eino-ext/blob/main/components/document/transformer/splitter/markdown/README.md">README.md</a></td></tr>
<tr><td>recursive</td><td><a href="https://github.com/cloudwego/eino-ext/blob/main/components/document/transformer/splitter/recursive/README_zh.md">README_zh.md</a></td><td><a href="https://github.com/cloudwego/eino-ext/blob/main/components/document/transformer/splitter/recursive/README.md">README.md</a></td></tr>
<tr><td>semantic</td><td><a href="https://github.com/cloudwego/eino-ext/blob/main/components/document/transformer/splitter/semantic/README_zh.md">README_zh.md</a></td><td><a href="https://github.com/cloudwego/eino-ext/blob/main/components/document/transformer/splitter/semantic/README.md">README.md</a></td></tr>
</table>

## **Implementation Reference**

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
Description: ""
date: "2025-07-21"
date: "2026-05-17"
lastmod: ""
tags: []
title: 'Eino: Embedding User Guide'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
Description: ""
date: "2026-03-03"
date: "2026-05-17"
lastmod: ""
tags: []
title: 'Eino: ToolsNode & Tool Guide'
Expand Down Expand Up @@ -282,7 +282,83 @@ type ToolInfo struct {

The Tool component uses ToolOption to define optional parameters. ToolsNode has no abstracted common options. Each specific implementation can define its own specific Options, wrapped into the unified ToolOption type using the WrapToolImplSpecificOptFn function.

## Usage
## Tool Aliases 🏷️ alpha/09

The Tool Alias feature allows configuring **name aliases** and **argument aliases** for tools, enabling automatic resolution to the real tool and canonical parameters when an LLM calls a tool using an alias.

### Configuration Structure

```go
// ToolAliasConfig configures name and argument aliases for a single tool
type ToolAliasConfig struct {
// NameAliases is the list of alternative names for the tool
// If the model returns any of these names, it will be resolved to the canonical tool name
NameAliases []string

// ArgumentsAliases maps canonical parameter keys to their alias lists
// key=canonical name, value=[]aliases
// e.g.: {"query": ["q", "search_term"], "limit": ["max_results", "count"]}
ArgumentsAliases map[string][]string
}
```

Configure via the `ToolAliases` field in `ToolsNodeConfig`:

```go
config := &compose.ToolsNodeConfig{
Tools: []tool.BaseTool{searchTool, weatherTool},
ToolAliases: map[string]ToolAliasConfig{
"search": {
NameAliases: []string{"find", "query", "search_v1"},
ArgumentsAliases: map[string][]string{
"query": {"q", "search_term"},
"limit": {"max_results", "count"},
},
},
},
}
toolsNode, err := compose.NewToolNode(ctx, config)
```

### Dynamic Override

Use the `WithToolAliases()` call option to override global alias configuration at runtime:

```go
// Override alias configuration (retain original tool list)
result, err := toolsNode.Invoke(ctx, input,
compose.WithToolAliases(map[string]compose.ToolAliasConfig{
"search": {
NameAliases: []string{"new_alias"},
},
}),
)

// Override both tool list and aliases
result, err := toolsNode.Invoke(ctx, input,
compose.WithToolList(newSearchTool),
compose.WithToolAliases(map[string]compose.ToolAliasConfig{...}),
)
```

### Execution Flow

Processing order during tool calls:

1. **Name Resolution**: The tool name returned by the LLM (which may be an alias) is resolved to the canonical tool name via index lookup
2. **Argument Remapping**: Alias keys in JSON arguments are automatically replaced with canonical keys
3. **ToolArgumentsHandler** (if configured): Receives the canonical tool name and already-remapped arguments
4. **Tool Execution**: The tool is called with canonical name and arguments

### Notes

- Name aliases **cannot** conflict with other tools' canonical names or registered aliases
- Argument aliases **cannot** conflict with existing property names in the tool's JSON Schema
- When both an alias key and the canonical key are **present simultaneously** in the argument JSON, the canonical key takes precedence and the alias key is kept as-is
- Configuring aliases for non-existent tool names will be **silently ignored**
- The alias feature supports both **standard tools** and **enhanced tools**

## **Usage**

### Standard Tool Usage

Expand Down
Loading
Loading