Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2026-03-02"
lastmod: ""
tags: []
title: 'Eino: Cookbook'
title: Cookbook
weight: 3
---

Expand Down
39 changes: 2 additions & 37 deletions content/en/docs/eino/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,15 +142,12 @@ According to the previous community announcement plan [Migration from OpenAPI 3.

For errors like undefined: schema.NewParamsOneOfByOpenAPIV3 in some eino-ext modules, upgrade the error-reporting eino-ext module to the latest version.

If schema transformation is complex, you can use the tool methods in the [JSONSchema Conversion Methods](https://bytedance.larkoffice.com/wiki/ZMaawoQC4iIjNykzahwc6YOknXf) document to assist with conversion.
If schema transformation is complex, you can use existing OpenAPI 3.0 → JSONSchema conversion tools to assist with conversion.

# Q: Which models provided by Eino-ext ChatModel support Response API format calls?

- Currently in Eino-Ext, only ARK's Chat Model can create ResponsesAPI ChatModel through **NewResponsesAPIChatModel**. Other models currently do not support ResponsesAPI creation and usage.
- In Eino-byted-ext, only bytedgpt supports creating Response API through **NewResponsesAPIChatModel**. Other chatmodels have not implemented Response API Client.
- Version components/model/gemini/v0.1.16 already supports thought_signature passback. Check if the gemini version meets requirements. If using bytedgemini (code.byted.org/flow/eino-byted-ext/components/model/bytedgemini) chatmodel implementation, check if its dependent components/model/gemini is the latest version, or directly use go get to upgrade gemini.
- Replace the currently used bytedgpt package with the implementation from [code.byted.org/flow/eino-byted-ext/components/model/bytedgemini](http://code.byted.org/flow/eino-byted-ext/components/model/bytedgemini) and upgrade to the latest version. Refer to example code to confirm how to pass BaseURL.
- If you encounter this error, confirm whether the base url filled in when generating chat model is the chat completion URL or the ResponseAPI URL. In most cases, the Response API Base URL was incorrectly passed.
- If you encounter this error, confirm whether the base URL you used to create the chat model is the Chat Completions URL or the Responses API URL. In most cases, an incorrect Responses API base URL was passed.

# Q: How to troubleshoot ChatModel call errors? For example, [NodeRunError] failed to create chat completion: error, status code: 400, status: 400 Bad Request.

Expand All @@ -175,35 +172,3 @@ Use the `GraphCompileCallback` mechanism to export the topology structure during
- For obtaining intermediate structures in Flow/React Agent scenarios, refer to the document [Eino: ReAct Agent Manual](/docs/eino/core_modules/flow_integration_components/react_agent_manual)

# Q: Gemini model error missing a `thought_signature`

Gemini model protocol is not openai-compatible. Use the gemini wrapper [https://github.com/cloudwego/eino-ext/tree/main/components/model/gemini](https://github.com/cloudwego/eino-ext/tree/main/components/model/gemini). If using ModelHub platform models, use the internal gemini wrapper [https://code.byted.org/flow/eino-byted-ext/tree/master/components/model/bytedgemini](https://code.byted.org/flow/eino-byted-ext/tree/master/components/model/bytedgemini). Initialization reference code:

```
cm, err := bytedgemini.NewChatModel(ctx, &bytedgemini.Config{
ClientConfig: genai.ClientConfig{
APIKey: apiKey,
Backend: genai.BackendGeminiAPI,
// uncomment if you want to print the actual request in CURL format
// HTTPClient: &http.Client{Transport: NewCurlLogger(http.DefaultTransport, log.Printf)},
HTTPOptions: genai.HTTPOptions{
// this is base URL for cn, other regions:
// - sg: gpt-i18n.byteintl.net
// - sg from office network: genai-sg-og.tiktok-row.org
// - va: search-va.byteintl.net
// - va from office network: genai-va-og.tiktok-row.org
// - Non-TT: gpt-i18n.bd.byteintl.net
// - US-TTP: gpt.tiktokd.net
// - EU-TTP, GCP: gpt.tiktoke.org
// - JP: gpt-jp.byteintl.net
// see also: https://bytedance.larkoffice.com/wiki/wikcnUPXCY2idGyg2AXKPvay4pd
BaseURL: "https://search.bytedance.net/gpt/openapi/online/multimodal/crawl/google/",
APIVersion: "v1",
},
},
Model: modelName,
ThinkingConfig: &genai.ThinkingConfig{
IncludeThoughts: true,
ThinkingBudget: nil,
},
})
```
Original file line number Diff line number Diff line change
Expand Up @@ -336,9 +336,9 @@ result, err := runnable.Invoke(ctx, messages, compose.WithCallbacks(helper))

## **Existing Implementations**

1. OpenAI ChatModel: Using OpenAI's GPT series models [ChatModel - OpenAI](https://bytedance.larkoffice.com/wiki/NguEw85n6iJjShkVtdQcHpydnld)
2. Ollama ChatModel: Using Ollama local models [ChatModel - Ollama](https://bytedance.larkoffice.com/wiki/WWngw1XMViwgyYkNuZgcjZnxnke)
3. ARK ChatModel: Using ARK platform model services [ChatModel - ARK](https://bytedance.larkoffice.com/wiki/WUzzwaX8ricGwZk1i1mcJHHNnEl)
1. OpenAI ChatModel: Using OpenAI's GPT series models [ChatModel - OpenAI](https://github.com/cloudwego/eino-ext/blob/main/components/model/openai/README.md)
2. Ollama ChatModel: Using Ollama local models [ChatModel - Ollama](https://github.com/cloudwego/eino-ext/blob/main/components/model/ollama/README.md)
3. ARK ChatModel: Using ARK platform model services [ChatModel - ARK](https://github.com/cloudwego/eino-ext/blob/main/components/model/ark/README.md)
4. More: [Eino ChatModel](https://www.cloudwego.io/docs/eino/ecosystem_integration/chat_model/)

## Implementation Reference
Expand Down
6 changes: 3 additions & 3 deletions content/en/docs/eino/ecosystem_integration/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ weight: 6

### ChatModel

- openai: [ChatModel - OpenAI](https://bytedance.larkoffice.com/wiki/NguEw85n6iJjShkVtdQcHpydnld)
- ark: [ChatModel - ARK](https://bytedance.larkoffice.com/wiki/WUzzwaX8ricGwZk1i1mcJHHNnEl)
- ollama: [ChatModel - Ollama](https://bytedance.larkoffice.com/wiki/WWngw1XMViwgyYkNuZgcjZnxnke)
- openai: [ChatModel - OpenAI](https://github.com/cloudwego/eino-ext/blob/main/components/model/openai/README.md)
- ark: [ChatModel - ARK](https://github.com/cloudwego/eino-ext/blob/main/components/model/ark/README.md)
- ollama: [ChatModel - Ollama](https://github.com/cloudwego/eino-ext/blob/main/components/model/ollama/README.md)

### Document

Expand Down
7 changes: 0 additions & 7 deletions content/en/docs/eino/overview/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -344,13 +344,6 @@ The Eino framework consists of several parts:
- [Eino](https://github.com/cloudwego/eino): Contains type definitions, stream data processing mechanisms, component abstraction definitions, orchestration functionality, callback mechanisms, etc.
- [EinoExt](https://github.com/cloudwego/eino-ext): Component implementations, callback handler implementations, component usage examples, and various tools such as evaluators, prompt optimizers, etc.

> 💡
> For components used internally at ByteDance, there are corresponding internal code repositories:
>
> EinoBytedExt: [https://code.byted.org/flow/eino-byted-ext](https://code.byted.org/flow/eino-byted-ext)
>
> Contains component implementations currently positioned for internal use, such as llmgateway, bytedgpt, fornax tracing, bytees, etc.

- [Eino Devops](https://github.com/cloudwego/eino-ext/tree/main/devops): Visual development, visual debugging, etc.
- [EinoExamples](https://github.com/cloudwego/eino-examples): A code repository containing example applications and best practices.

Expand Down
4 changes: 2 additions & 2 deletions content/en/docs/eino/quick_start/simple_llm_application.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ chatModel, err := openai.NewChatModel(ctx, &openai.ChatModelConfig{
})
```

> For detailed information about OpenAI ChatModel, see: [ChatModel - OpenAI](https://bytedance.larkoffice.com/wiki/NguEw85n6iJjShkVtdQcHpydnld)
> For detailed information about OpenAI ChatModel, see: [ChatModel - OpenAI](https://github.com/cloudwego/eino-ext/blob/main/components/model/openai/README.md)

#### **Ollama (choose either this or OpenAI above)**

Expand All @@ -140,7 +140,7 @@ chatModel, err := ollama.NewChatModel(ctx, &ollama.ChatModelConfig{
})
```

> For Ollama related information, see: [ChatModel - Ollama](https://bytedance.larkoffice.com/wiki/WWngw1XMViwgyYkNuZgcjZnxnke)
> For detailed information about Ollama ChatModel, see: [ChatModel - Ollama](https://github.com/cloudwego/eino-ext/blob/main/components/model/ollama/README.md)

Eino provides a unified ChatModel abstraction for large models and offers ready-to-use implementations of various LLMs. Therefore, business code can focus on writing business logic without worrying about model implementation details. When model implementations are updated, they won't affect core business logic, meaning developers can easily switch between different models without modifying large amounts of code.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
---
Description: ""
date: "2026-03-02"
date: "2026-03-10"
lastmod: ""
tags: []
title: Eino v0.8 Breaking Changes
weight: 1
---

> This document records all breaking changes in the `v0.8.0.Beta` branch compared to the `main` branch.

## 1. API Breaking Changes

### 1.1 filesystem Shell Interface Renamed

**Location**: `adk/filesystem/backend.go` **Change Description**: Shell-related interfaces have been renamed and no longer embed the `Backend` interface. **Before (main)**:
**Location**: `adk/filesystem/backend.go` **Change Description**: Shell-related interfaces have been renamed and no longer embed the `Backend` interface. **Before (v0.7.x)**:

```go
type ShellBackend interface {
Expand All @@ -27,7 +25,7 @@ type StreamingShellBackend interface {
}
```

**After (v0.8.0.Beta)**:
**After (v0.8.0)**:

```go
type Shell interface {
Expand Down Expand Up @@ -64,11 +62,11 @@ func (s *MyShell) Execute(...) {...}

### 2.1 AgentEvent Sending Mechanism Change

**Location**: `adk/chatmodel.go` **Change Description**: `ChatModelAgent`'s `AgentEvent` sending mechanism changed from eino callback mechanism to Middleware mechanism. **Before (main)**:
**Location**: `adk/chatmodel.go` **Change Description**: `ChatModelAgent`'s `AgentEvent` sending mechanism changed from eino callback mechanism to Middleware mechanism. **Before (v0.7.x)**:

- `AgentEvent` was sent through eino's callback mechanism
- If users customized ChatModel or Tool Decorator/Wrapper, and the original ChatModel/Tool had embedded Callback points, `AgentEvent` would be sent **inside** the Decorator/Wrapper
- This applied to all ChatModels implemented in eino-ext, but may not apply to most user-implemented Tools and Tools provided by eino **After (v0.8.0.Beta)**:
- This applied to all ChatModels implemented in eino-ext, but may not apply to most user-implemented Tools and Tools provided by eino **After (v0.8.0)**:
- `AgentEvent` is sent through Middleware mechanism
- `AgentEvent` is sent **outside** user-customized Decorator/Wrapper **Impact**:
- Under normal circumstances, users won't notice this change
Expand Down Expand Up @@ -99,7 +97,7 @@ func (m *MyMiddleware) WrapModel(ctx context.Context, chatModel model.BaseChatMo

### 2.2 filesystem.ReadRequest.Offset Semantic Change

**Location**: `adk/filesystem/backend.go` **Change Description**: `Offset` field changed from 0-based to 1-based. **Before (main)**:
**Location**: `adk/filesystem/backend.go` **Change Description**: `Offset` field changed from 0-based to 1-based. **Before (v0.7.x)**:

```go
type ReadRequest struct {
Expand All @@ -110,7 +108,7 @@ type ReadRequest struct {
}
```

**After (v0.8.0.Beta)**:
**After (v0.8.0)**:

```go
type ReadRequest struct {
Expand Down Expand Up @@ -140,7 +138,7 @@ req := &ReadRequest{Offset: 1, Limit: 100}

### 2.3 filesystem.FileInfo.Path Semantic Change

**Location**: `adk/filesystem/backend.go` **Change Description**: `FileInfo.Path` field is no longer guaranteed to be an absolute path. **Before (main)**:
**Location**: `adk/filesystem/backend.go` **Change Description**: `FileInfo.Path` field is no longer guaranteed to be an absolute path. **Before (v0.7.x)**:

```go
type FileInfo struct {
Expand All @@ -149,7 +147,7 @@ type FileInfo struct {
}
```

**After (v0.8.0.Beta)**:
**After (v0.8.0)**:

```go
type FileInfo struct {
Expand All @@ -169,14 +167,14 @@ type FileInfo struct {

### 2.4 filesystem.WriteRequest Behavior Change

**Location**: `adk/filesystem/backend.go` **Change Description**: `WriteRequest` write behavior changed from "error if file exists" to "overwrite if file exists". **Before (main)**:
**Location**: `adk/filesystem/backend.go` **Change Description**: `WriteRequest` write behavior changed from "error if file exists" to "overwrite if file exists". **Before (v0.7.x)**:

```go
// WriteRequest comment:
// The file will be created if it does not exist, or error if file exists.
```

**After (v0.8.0.Beta)**:
**After (v0.8.0)**:

```go
// WriteRequest comment:
Expand All @@ -193,14 +191,14 @@ type FileInfo struct {

### 2.5 GrepRequest.Pattern Semantic Change

**Location**: `adk/filesystem/backend.go` **Change Description**: `GrepRequest.Pattern` changed from literal matching to regular expression matching. **Before (main)**:
**Location**: `adk/filesystem/backend.go` **Change Description**: `GrepRequest.Pattern` changed from literal matching to regular expression matching. **Before (v0.7.x)**:

```go
// Pattern is the literal string to search for. This is not a regular expression.
// The search performs an exact substring match within the file's content.
```

**After (v0.8.0.Beta)**:
**After (v0.8.0)**:

```go
// Pattern is the search pattern, supports full regular expression syntax.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ weight: 2
### BugFix

- Fixed the SSTI vulnerability in the Jinja chat template [langchaingo has gonja template injection vulnerability](https://bytedance.larkoffice.com/docx/UvqxdlFfSoTIr1xtsQ5cIZTVn2b)
- Fixed the SSTI vulnerability in the Jinja chat templatelangchaingo gonja template injection

## v0.2.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2026-03-02"
lastmod: ""
tags: []
title: 'Eino: Cookbook'
title: Cookbook
weight: 3
---

Expand Down
37 changes: 2 additions & 35 deletions content/zh/docs/eino/FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,12 @@ eino-ext 支持的多模态输入输出场景,可以查阅 [https://www.cloudw

eino-ext 部分 module 报错 undefined: schema.NewParamsOneOfByOpenAPIV3 等问题,升级报错的 eino-ext module 到最新版本即可。

如果 schema 改造比较复杂,可以使用 [JSONSchema 转换方法](https://bytedance.larkoffice.com/wiki/ZMaawoQC4iIjNykzahwc6YOknXf)文档中的工具方法辅助转换
如果 schema 改造比较复杂,可以使用现有的 OpenAPI 3.0 → JSONSchema 转换工具方法辅助转换

# Q: Eino-ext 提供的 ChatModel 有哪些模型是支持 Response API 形式调用嘛?

- Eino-Ext 中目前只有 ARK 的 Chat Model 可通过 **NewResponsesAPIChatModel **创建 ResponsesAPI ChatModel,其他模型目前不支持 ResponsesAPI 的创建与使用,
- Eino-byted-ext 中 只有 bytedgpt 支持创建 Response API 通过 **NewResponsesAPIChatModel 创建, **其他 chatmodel 没有实现 Response API Client
- 版本 components/model/gemini/v0.1.16 已经支持 thought_signature 回传,检查 gemini 版本是否符合,如果使用的是 bytedgemini (code.byted.org/flow/eino-byted-ext/components/model/bytedgemini) 的 chatmodel 实现,请检查其依赖的 components/model/gemini 是否为最新版本,或者直接 go get 升级 gemini - 将目前使用的 bytedgpt 的包换成使用 [code.byted.org/flow/eino-byted-ext/components/model/bytedgemini](http://code.byted.org/flow/eino-byted-ext/components/model/bytedgemini) 这个包的实现,并升级到最新版本,查看示例代码 确认 BaseURL 如何传递 。 - 遇到这个报错请确认咱们生成 chat model 是填写的 base url 是 chat completion 的 URL 还是 ResponseAPI 的 URL,绝大多数场景是错误传递了 Response API 的 Base URL
- 遇到这个报错请确认咱们生成 chat model 是填写的 base url 是 chat completion 的 URL 还是 ResponseAPI 的 URL,绝大多数场景是错误传递了 Response API 的 Base URL

# Q: 如何排查 ChatModel 调用报错?比如[NodeRunError] failed to create chat completion: error, status code: 400, status: 400 Bad Request。

Expand All @@ -173,35 +172,3 @@ ChatModel 产生的 Tool Call 中,Argument 字段是 string。Eino 框架在
- Flow/React Agent 场景下获取中间结构参考文档 [Eino: ReAct Agent 使用手册](/zh/docs/eino/core_modules/flow_integration_components/react_agent_manual)

# Q: Gemini 模型报错 missing a `thought_signature`

Gemini 模型协议不是 openai-compatible,应使用 gemini 封装 [https://github.com/cloudwego/eino-ext/tree/main/components/model/gemini](https://github.com/cloudwego/eino-ext/tree/main/components/model/gemini), 如果使用 ModelHub 平台的模型,使用内场 gemini 封装 [https://code.byted.org/flow/eino-byted-ext/tree/master/components/model/bytedgemini](https://code.byted.org/flow/eino-byted-ext/tree/master/components/model/bytedgemini),初始化参考代码:

```
cm, err := bytedgemini.NewChatModel(ctx, &bytedgemini.Config{
ClientConfig: genai.ClientConfig{
APIKey: apiKey,
Backend: genai.BackendGeminiAPI,
// uncomment if you want to print the actual request in CURL format
// HTTPClient: &http.Client{Transport: NewCurlLogger(http.DefaultTransport, log.Printf)},
HTTPOptions: genai.HTTPOptions{
// this is base URL for cn, other regions:
// - sg: gpt-i18n.byteintl.net
// - sg from office network: genai-sg-og.tiktok-row.org
// - va: search-va.byteintl.net
// - va from office network: genai-va-og.tiktok-row.org
// - Non-TT: gpt-i18n.bd.byteintl.net
// - US-TTP: gpt.tiktokd.net
// - EU-TTP, GCP: gpt.tiktoke.org
// - JP: gpt-jp.byteintl.net
// see also: https://bytedance.larkoffice.com/wiki/wikcnUPXCY2idGyg2AXKPvay4pd
BaseURL: "https://search.bytedance.net/gpt/openapi/online/multimodal/crawl/google/",
APIVersion: "v1",
},
},
Model: modelName,
ThinkingConfig: &genai.ThinkingConfig{
IncludeThoughts: true,
ThinkingBudget: nil,
},
})
```
2 changes: 1 addition & 1 deletion content/zh/docs/eino/core_modules/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2025-07-21"
lastmod: ""
tags: []
title: 'Eino: 核心模块'
title: 核心模块
weight: 4
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2025-07-21"
lastmod: ""
tags: []
title: 'Eino: Chain & Graph & Workflow 编排功能'
title: Chain & Graph & Workflow 编排功能
weight: 2
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2025-11-20"
lastmod: ""
tags: []
title: 'Eino: CallOption 能力与规范'
title: CallOption 能力与规范
weight: 6
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2026-03-02"
lastmod: ""
tags: []
title: 'Eino: Callback 用户手册'
title: Callback 用户手册
weight: 5
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2026-01-20"
lastmod: ""
tags: []
title: 'Eino: Chain/Graph 编排介绍'
title: Chain/Graph 编排介绍
weight: 1
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Description: ""
date: "2026-03-02"
lastmod: ""
tags: []
title: 'Eino: Interrupt & CheckPoint使用手册'
title: Interrupt & CheckPoint使用手册
weight: 7
---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
Description: ""
date: "2026-03-02"
date: "2026-03-09"
lastmod: ""
tags: []
title: 'Eino: 编排的设计理念'
title: 编排的设计理念
weight: 2
---

Expand Down
Loading