code-simplifier
Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when the user needs to: (1) Simplify complex…
Eino LLM/AI application development framework assistant (Golang). Use when the user needs to: (1) Build AI agents, (2) Create LLM applications, (3) Implement tool calling, (4) Build multi-agent systems, (5) Create workflows with Graph/Compose, (6) Implement streaming, (7)
$ npx -y skills add fanqingxuan/awesome-skills --skill eino --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/einoContext preview
The summary Claude sees to decide when to auto-load this skill.
Eino LLM/AI application development framework assistant (Golang). Use when the user needs to: (1) Build AI agents, (2) Create LLM applications, (3) Implement tool calling, (4) Build multi-agent systems, (5) Create workflows with Graph/Compose, (6) Implement streaming, (7)
name: eino description: "Eino LLM/AI application development framework assistant (Golang). Use when the user needs to: (1) Build AI agents, (2) Create LLM applications, (3) Implement tool calling, (4) Build multi-agent systems, (5) Create workflows with Graph/Compose, (6) Implement streaming, (7) Human-in-the-loop patterns, or any other Eino framework development tasks. Triggers on phrases like \"Eino 开发\", \"创建 Agent\", \"LLM 应用\", \"AI Agent\", \"Eino 框架\", \"构建智能体\"."
Eino 是字节跳动开源的 Golang LLM/AI 应用开发框架,专注于 Agent 开发、工作流编排、工具调用。
go get github.com/cloudwego/eino go get github.com/cloudwego/eino-ext
# 创建项目 mkdir my-eino-app && cd my-eino-app go mod init my-eino-app # 安装依赖 go get github.com/cloudwego/eino go get github.com/cloudwego/eino-ext/components/model/openai
最简单的对话 Agent:
package main
import (
"context"
"fmt"
"os"
"github.com/cloudwego/eino-ext/components/model/openai"
"github.com/cloudwego/eino/adk"
)
func main() {
ctx := context.Background()
// 配置 ChatModel
chatModel, err := openai.NewChatModel(ctx, &openai.ChatModelConfig{
Model: "gpt-4o",
APIKey: os.Getenv("OPENAI_API_KEY"),
})
if err != nil {
panic(err)
}
// 创建 Agent
agent, err := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Model: chatModel,
})
if err != nil {
panic(err)
}
// 运行 Agent
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)
}
}添加工具调用能力:
package main
import (
"context"
"fmt"
"os"
"github.com/cloudwego/eino-ext/components/model/openai"
"github.com/cloudwego/eino/adk"
"github.com/cloudwego/eino/compose"
"github.com/cloudwego/eino/components/tool"
)
// 定义天气工具
type WeatherTool struct{}
func (w *WeatherTool) Info(ctx context.Context) (*tool.Info, error) {
return &tool.Info{
Name: "get_weather",
Desc: "Get current weather for a location",
ParamsOneOf: tool.NewParamsOneOfByParams(
map[string]*tool.ParameterInfo{
"location": {
Type: "string",
Desc: "City name",
Required: true,
},
},
),
}, nil
}
func (w *WeatherTool) InvokableRun(ctx context.Context, argumentsInJSON string) (string, error) {
// 实际应该调用天气 API
return fmt.Sprintf("Weather in %s: Sunny, 25°C", argumentsInJSON), nil
}
func main() {
ctx := context.Background()
chatModel, _ := openai.NewChatModel(ctx, &openai.ChatModelConfig{
Model: "gpt-4o",
APIKey: os.Getenv("OPENAI_API_KEY"),
})
// 创建工具
weatherTool := &WeatherTool{}
// 创建带工具的 Agent
agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Model: chatModel,
ToolsConfig: adk.ToolsConfig{
ToolsNodeConfig: compose.ToolsNodeConfig{
Tools: []tool.BaseTool{weatherTool},
},
},
})
runner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: agent})
iter := runner.Query(ctx, "What's the weather in Beijing?")
for {
event, ok := iter.Next()
if !ok {
break
}
fmt.Println(event.Message.Content)
}
}处理复杂多步骤任务:
package main
import (
"context"
"os"
"github.com/cloudwego/eino-ext/components/model/openai"
"github.com/cloudwego/eino/adk"
"github.com/cloudwego/eino/adk/deep"
"github.com/cloudwego/eino/compose"
"github.com/cloudwego/eino/components/tool"
)
func main() {
ctx := context.Background()
chatModel, _ := openai.NewChatModel(ctx, &openai.ChatModelConfig{
Model: "gpt-4o",
APIKey: os.Getenv("OPENAI_API_KEY"),
})
// 创建子 Agent
researchAgent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Model: chatModel,
})
codeAgent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Model: chatModel,
})
// 创建 DeepAgent
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 and generate a report")
for {
event, ok := iter.Next()
if !ok {
break
}
// 处理事件
}
}精确控制执行流程:
package main
import (
"context"
"os"
"github.com/cloudwego/eino-ext/components/model/openai"
"github.com/cloudwego/eino/compose"
)
type Input struct {
Text string
}
type Output struct {
Result string
}
func main() {
ctx := context.Background()
chatModel, _ := openai.NewChatModel(ctx, &openai.ChatModelConfig{
Model: "gpt-4o",
APIKey: os.Getenv("OPENAI_API_KEY"),
})
// 创建 Graph
graph := compose.NewGraph[*Input, *Output]()
// 添加节点
graph.AddLambdaNode("validate", func(ctx context.Context, input *Input) (*Input, error) {
// 验证逻辑
return input, nil
})
graph.AddChatModelNode("generate", chatModel)
graph.AddLambdaNode("format", func(ctx context.Context, input *Input) (*Output, error) {
// 格式化逻辑
return &Output{Result: input.Text}, nil
})
// 添加边
graph.AddEdge(compose.START, "validate"Agent Skills for modern software development frameworks with best practices and coding standards.
Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when the user needs to: (1) Simplify complex…
GORM (Go ORM) development assistant. Use when the user needs to: (1) Create GORM models, (2) Define database schemas, (3) Perform CRUD operations, (4) Handle…
Hyperf 3.1 framework development assistant. Use when the user needs to: (1) Create Hyperf controllers, (2) Create Hyperf models, (3) Create Hyperf commands,…
Laravel 12 framework development assistant. Use when the user needs to: (1) Create Laravel controllers, (2) Create Laravel models, (3) Create Laravel commands,…
Webman framework development assistant. Use when the user needs to: (1) Create Webman controllers, (2) Create Webman models, (3) Configure routes, (4) Create…