Skip to content

Commit fcdc2a1

Browse files
authored
docs(eino): Standardize terminology to use 'Go' instead of 'Golang' (#1454)
1 parent 8b9eb26 commit fcdc2a1

File tree

18 files changed

+37
-37
lines changed

18 files changed

+37
-37
lines changed

content/en/docs/eino/_index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
Description: Eino is an AI application development framework based on Golang
2+
Description: Eino is an AI application development framework based on Go
33
date: "2025-02-21"
44
lastmod: ""
55
linktitle: Eino
@@ -19,7 +19,7 @@ weight: 6
1919
> 💡
2020
> Eino:An AI Application Development Framework Built with Go
2121
22-
Eino aims to provide an AI application development framework built with Go. Eino refers to many excellent AI application development frameworks in the open-source community, such as LangChain, LangGraph, LlamaIndex, etc., and provides an AI application development framework that is more in line with the programming habits of Golang.
22+
Eino aims to provide an AI application development framework built with Go. Eino refers to many excellent AI application development frameworks in the open-source community, such as LangChain, LangGraph, LlamaIndex, etc., and provides an AI application development framework that is more in line with the programming habits of Go.
2323

2424
Eino provides rich capabilities such as **atomic components**, **integrated components**, **component orchestration**, and **aspect extension** that assist in AI application development, which can help developers more simply and conveniently develop AI applications with a clear architecture, easy maintenance, and high availability.
2525

content/en/docs/eino/core_modules/chain_and_graph_orchestration/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Specifically, the following features are implemented:
4545
- For more details, refer to: [Eino: Callback Manual](/docs/eino/core_modules/chain_and_graph_orchestration/callback_manual)
4646
- Provides a call option mechanism, **extensibility** is the most fundamental requirement of the system in rapid iterations.
4747
- For more details, refer to: [Eino: CallOption capabilities and specification](/docs/eino/core_modules/chain_and_graph_orchestration/call_option_capabilities)
48-
- Provides an enhanced "type alignment" development method, reducing the mental burden on developers and leveraging Golang's **type safety** features.
48+
- Provides an enhanced "type alignment" development method, reducing the mental burden on developers and leveraging Go's **type safety** features.
4949
- For more details, refer to: [Eino: The design concept of orchestration](/docs/eino/core_modules/chain_and_graph_orchestration/orchestration_design_principles)
5050
- Provides an **"automated stream conversion"** capability, removing "stream" from the "source of complexity ranking" in the orchestration system.
5151
- For more details, refer to: [Eino Points of Streaming Orchestration](/docs/eino/core_modules/chain_and_graph_orchestration/stream_programming_essentials)

content/en/docs/eino/core_modules/chain_and_graph_orchestration/orchestration_design_principles.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@ weight: 2
99

1010
In the LLM application orchestration solutions, the most popular ones are langchain and langgraph, which officially provide SDKs for Python and TypeScript. These two languages are known for their flexibility, which brings great convenience to SDK development but also causes significant confusion and cognitive burden for SDK users.
1111

12-
As an extremely simple programming language, Golang's defined `static types` are one of the key reasons why it remains straightforward, and Eino maintains this critical characteristic: `defined types` + `compile-time type checking`.
12+
As an extremely simple programming language, Go's defined `static types` are one of the key reasons why it remains straightforward, and Eino maintains this critical characteristic: `defined types` + `compile-time type checking`.
1313

1414
## Basic Principle of `Type Alignment` in Upstream and Downstream
1515

1616
The most fundamental orchestration method in eino is the graph, along with the simplified wrapped chain. Regardless of the orchestration method, it essentially consists of `logical nodes` + `upstream and downstream relationships`. At runtime, the product of the orchestration starts from one logical node and then proceeds to run the next node that is connected to the current node.
1717

1818
This entails a basic assumption: **the output value of the previous node can serve as the input value for the next node.**
1919

20-
In Golang, there are two basic approaches to achieving this assumption:
20+
In Go, there are two basic approaches to achieving this assumption:
2121

2222
1. Convert the input and output of different nodes into a more generalized type, such as `any` or `map[string]any`.
2323
1. Adopting the approach to generalize into any, but the corresponding cost is that developers need to explicitly convert it into a specific type when writing code to use it. This significantly increases the mental burden on developers, hence this approach was ultimately abandoned.
24-
2. The langchain approach can be seen as passing `map[string]any` throughout the process, where each logical node retrieves the corresponding value with the corresponding key based on its needs. In langchaingo's implementation, this approach is adopted. However, in Golang, they still need to be used with `type assertions`. This approach still imposes a significant mental burden on the developer.
24+
2. The langchain approach can be seen as passing `map[string]any` throughout the process, where each logical node retrieves the corresponding value with the corresponding key based on its needs. In langchaingo's implementation, this approach is adopted. However, in Go, they still need to be used with `type assertions`. This approach still imposes a significant mental burden on the developer.
2525
2. Keep the input and output types of each node as expected by the developer, ensuring type consistency between upstream and downstream during the Compile phase.
2626

2727
Approach 2 is the final approach selected by eino. This approach is the easiest to understand during orchestration. The whole process is like `building blocks`, where the protruding and recessed parts of each block have their own specifications, and only matching specifications can form upstream and downstream relationships.

content/en/docs/eino/core_modules/components/chat_template_guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ template := prompt.FromMessages(schema.FString,
101101
variables := map[string]any{
102102
"role": "professional assistant",
103103
"task": "write a poem",
104-
"history_key": []*schema.Message{{Role: schema.User, Content: "what is golang?"}, {Role: schema.Assistant, Content: "golang is xxx"}},
104+
"history_key": []*schema.Message{{Role: schema.User, Content: "what is Go?"}, {Role: schema.Assistant, Content: "Go is xxx"}},
105105
}
106106

107107
// Format template

content/en/docs/eino/core_modules/flow_integration_components/react_agent_manual.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func main() {
206206
MessageModifier: func(ctx context.Context, input []*schema.Message) []*schema.Message {
207207
res := make([]*schema.Message, 0, len(input)+1)
208208

209-
res = append(res, schema.SystemMessage("You are an expert golang developer."))
209+
res = append(res, schema.SystemMessage("You are an expert Go developer."))
210210
res = append(res, input...)
211211
return res
212212
},
@@ -215,7 +215,7 @@ func main() {
215215
agent.Generate(ctx, []*schema.Message{schema.UserMessage("Write a hello world code")})
216216
// The actual input to the ChatModel would be
217217
// []*schema.Message{
218-
// {Role: schema.System, Content: "You are an expert golang developer."},
218+
// {Role: schema.System, Content: "You are an expert Go developer."},
219219
// {Role: schema.Human, Content: "Write a hello world code"}
220220
//}
221221
}
@@ -329,7 +329,7 @@ agent, _ := react.NewAgent(...)
329329

330330
var outMessage *schema.Message
331331
outMessage, err = agent.Generate(ctx, []*schema.Message{
332-
schema.UserMessage("Write a hello world program in golang"),
332+
schema.UserMessage("Write a hello world program in Go"),
333333
})
334334
```
335335

@@ -340,7 +340,7 @@ agent, _ := react.NewAgent(...)
340340

341341
var msgReader *schema.StreamReader[*schema.Message]
342342
msgReader, err = agent.Stream(ctx, []*schema.Message{
343-
schema.UserMessage("Write a hello world program in golang"),
343+
schema.UserMessage("Write a hello world program in Go"),
344344
})
345345

346346
for {

content/en/docs/eino/ecosystem_integration/tool/tool_duckduckgo_search.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ func main() {
8080

8181
// Create search request
8282
searchReq := &duckduckgo.SearchRequest{
83-
Query: "Golang programming development",
83+
Query: "Go programming development",
8484
Page: 1,
8585
}
8686

content/en/docs/eino/ecosystem_integration/tool/tool_googlesearch.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func main() {
8282

8383
// prepare params
8484
req := googlesearch.SearchRequest{
85-
Query: "Golang concurrent programming",
85+
Query: "Go concurrent programming",
8686
Num: 3,
8787
Lang: "en",
8888
}
@@ -123,7 +123,7 @@ func main() {
123123
// 2. Title: Concurrency — An Introduction to Programming in Go | Go Resources
124124
// Link: https://www.golang-book.com/books/intro/10
125125
// Desc:
126-
// 3. Title: The Comprehensive Guide to Concurrency in Golang | by Brandon ...
126+
// 3. Title: The Comprehensive Guide to Concurrency in Go | by Brandon ...
127127
// Link: https://bwoff.medium.com/the-comprehensive-guide-to-concurrency-in-golang-aaa99f8bccf6
128128
// Desc: Update (November 20, 2023) — This article has undergone a comprehensive revision for enhanced clarity and conciseness. I’ve streamlined the…
129129

@@ -135,7 +135,7 @@ func main() {
135135

136136
```json
137137
{
138-
"query": "Golang concurrent programming",
138+
"query": "Go concurrent programming",
139139
"items": [
140140
{
141141
"link": "https://example.com/article1",

content/en/docs/eino/overview/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ weight: 1
99

1010
## Introduction
1111

12-
**Eino['aino]** (pronounced similarly to "I know, hoping that the framework can achieve the vision of "I know") aims to be the ultimate LLM application development framework in Golang. Drawing inspiration from many excellent LLM application development frameworks in the open-source community such as LangChain & LlamaIndex, etc., as well as learning from cutting-edge research and real world applications, Eino offers an LLM application development framework that emphasizes simplicity, scalability, reliability and effectiveness that better aligns with Golang programming conventions.
12+
**Eino['aino]** (pronounced similarly to "I know, hoping that the framework can achieve the vision of "I know") aims to be the ultimate LLM application development framework in Go. Drawing inspiration from many excellent LLM application development frameworks in the open-source community such as LangChain & LlamaIndex, etc., as well as learning from cutting-edge research and real world applications, Eino offers an LLM application development framework that emphasizes simplicity, scalability, reliability and effectiveness that better aligns with Go programming conventions.
1313

1414
What Eino provides are:
1515

content/en/docs/eino/overview/eino_framework_structure.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Complex streaming operation scenarios:
118118
- When copying streams, both consumption coordination and 'Close' coordination need to be considered. If any stream isn't properly closed, it may prevent resources from being properly released
119119
- Merging multiple streams into one stream
120120

121-
To make the Stream API interface clearer and easier to use, it aligns with Golang's built-in io.Pipe() method definition.
121+
To make the Stream API interface clearer and easier to use, it aligns with Go's built-in io.Pipe() method definition.
122122

123123
- API interface is defined as: `schema.Pipe[T any](cap int) (*StreamReader[T], *StreamWriter[T])`
124124
- where cap indicates the stream's buffer size, i.e., how many chunks the sender can send without blocking when there's no consumption

content/en/docs/eino/overview/eino_open_source.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ title: Large Language Model Application Development Framework — Eino is Now Op
77
weight: 0
88
---
99

10-
Today, after more than six months of internal use and iteration at ByteDance, the Golang-based comprehensive LLM application development framework — Eino, has been officially open-sourced on CloudWeGo!
10+
Today, after more than six months of internal use and iteration at ByteDance, the Go-based comprehensive LLM application development framework — Eino, has been officially open-sourced on CloudWeGo!
1111

1212
Based on clear "component" definitions, Eino provides powerful process "orchestration" covering the entire development lifecycle, aiming to help developers create the most sophisticated LLM applications in the shortest time possible.
1313

1414
Have you ever felt this way: wanting to add LLM capabilities to your application but not knowing where to start in this relatively new field; wanting to stay at the forefront of research and apply the latest industry achievements, but using an application development framework that hasn't been updated for months; trying to understand Python code in your project, needing to repeatedly check context to confirm a variable or parameter type; unsure whether the model-generated results are good enough and hesitant to use them; needing to explore and learn additional tools for necessary aspects beyond development like debugging, tracing, and evaluation. If so, welcome to Eino! As a LLM application development framework aimed at covering the entire devops process, Eino has the following characteristics:
1515

1616
- Stable core, simple and understandable API, clear onboarding path, and smooth learning curve.
1717
- Ultimate extensibility, highly active development work, long-term sustainability.
18-
- Based on strongly-typed Golang, readable code, easy maintenance, high reliability.
18+
- Based on strongly-typed Go, readable code, easy maintenance, high reliability.
1919
- Backed by extensive practical experience from ByteDance's core business lines.
2020
- Provides out-of-the-box supporting tools.
2121

@@ -116,7 +116,7 @@ Behind these dozens of lines of code, Eino automatically handles several things:
116116

117117
LLM-based software applications are in a rapid development phase, with new technologies, ideas, and practices constantly emerging. As application developers, we need to efficiently and reliably implement industry-consensus best practices while continuously learning and improving our understanding to comprehend the possibilities in this new field. Therefore, an excellent LLM application development framework needs to both **encapsulate the "unchanging" universal core elements** in the domain and **enable agile horizontal and vertical expansion** based on latest developments.
118118

119-
On the other hand, current mainstream frameworks like LangChain and LlamaIndex are Python-based. While they can quickly implement diverse functionalities by leveraging Python's rich ecosystem, they also inherit issues like "weak type checking" and "high long-term maintenance costs" that come with Python being a dynamic language. As LLM applications rapidly enter large-scale online operation phase, the **high reliability** and **high maintainability** achieved through Golang as a strongly-typed language are becoming increasingly valuable.
119+
On the other hand, current mainstream frameworks like LangChain and LlamaIndex are Python-based. While they can quickly implement diverse functionalities by leveraging Python's rich ecosystem, they also inherit issues like "weak type checking" and "high long-term maintenance costs" that come with Python being a dynamic language. As LLM applications rapidly enter large-scale online operation phase, the **high reliability** and **high maintainability** achieved through Go as a strongly-typed language are becoming increasingly valuable.
120120

121121
LLM-based application development is a relatively new field, sometimes requiring exploration and validation through practice. Leveraging ByteDance's high-frequency applications like Doubao and Douyin with their diverse scenarios, rapid iteration, and massive feedback, Eino has unique advantages in **practice-driven design**.
122122

@@ -150,7 +150,7 @@ In summary, the Eino framework possesses comprehensive extensibility:
150150

151151
### High Reliability and Maintainability
152152

153-
When writing Eino code in Golang, developers can fully utilize Golang's strong typing features to declare specific types for all components, Lambdas, and orchestration products. This is like drawing a precise map for the code, allowing developers to maintain and extend along clear paths. Even as the project scale grows and functionality continues to iterate, high maintainability can still be preserved.
153+
When writing Eino code in Go, developers can fully utilize Go's strong typing features to declare specific types for all components, Lambdas, and orchestration products. This is like drawing a precise map for the code, allowing developers to maintain and extend along clear paths. Even as the project scale grows and functionality continues to iterate, high maintainability can still be preserved.
154154

155155
At the same time, Eino's orchestration capabilities also fully utilize the compile-time verification capabilities of the strong type system, exposing type matching issues at graph compilation time rather than runtime whenever possible. Early and clear exposure of type matching issues helps developers quickly locate and fix problems, reducing hard-to-diagnose failures and performance issues caused by type errors at runtime.
156156

0 commit comments

Comments
 (0)