/eino-component
Eino component selection, configuration, and usage. Use when a user needs to choose or configure a ChatModel, AgenticModel, Embedding, Retriever, Indexer, Tool, Document loader/parser/transformer, Prompt template, or Callback handler. Covers all component interfaces and their
$ npx -y skills add cloudwego/eino-ext --skill eino-component --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/eino-component
Context preview
The summary Claude sees to decide when to auto-load this skill.
Eino component selection, configuration, and usage. Use when a user needs to choose or configure a ChatModel, AgenticModel, Embedding, Retriever, Indexer, Tool, Document loader/parser/transformer, Prompt template, or Callback handler. Covers all component interfaces and their
SKILL.md
eino-component.SKILL.mdname: eino-component
description: Eino component selection, configuration, and usage. Use when a user needs to choose or configure a ChatModel, AgenticModel, Embedding, Retriever, Indexer, Tool, Document loader/parser/transformer, Prompt template, or Callback handler. Covers all component interfaces and their implementations in eino-ext including OpenAI, Claude, Gemini, Ark, Ollama, Milvus, Elasticsearch, Redis, MCP tools, and more.
Eino Component Guide
Component Selection Guide
ChatModel -- LLM inference (classic Message path)
| Provider | Package | Notes | |----------|---------|-------| | OpenAI | `model/openai` | Also supports Azure via `ByAzure: true` | | Claude | `model/claude` | Also supports AWS Bedrock via `ByBedrock: true` | | Gemini | `model/gemini` | Requires `genai.Client` | | Ark (Volcengine) | `model/ark` | Doubao models | | Ollama | `model/ollama` | Local models | | DeepSeek | `model/deepseek` | Reasoning support | | Qwen | `model/qwen` | Alibaba DashScope API | | Qianfan | `model/qianfan` | Baidu ERNIE models | | OpenRouter | `model/openrouter` | Multi-provider routing |
AgenticModel -- LLM inference (AgenticMessage path)
AgenticModel operates on `*schema.AgenticMessage` with block-based content (reasoning, text, images, audio, video, tool calls/results). Tools are always passed at call time via `model.WithTools` option (no `WithTools` method).
| Provider | Package | Notes | |----------|---------|-------| | OpenAI | `model/agenticopenai` | GPT-4o, o1, o3 series | | Gemini | `model/agenticgemini` | Gemini 2.x models | | DeepSeek | `model/agenticdeepseek` | DeepSeek-R1 with reasoning | | Ark (Volcengine) | `model/agenticark` | Doubao models (agentic path) | | Qwen | `model/agenticqwen` | Qwen series via DashScope |
Detailed configuration references:
- `reference/model/agenticopenai.md`
- `reference/model/agenticgemini.md`
- `reference/model/agenticdeepseek.md`
- `reference/model/agenticark.md`
- `reference/model/agenticqwen.md`
Embedding -- text to vector
| Provider | Package | Notes | |----------|---------|-------| | OpenAI | `embedding/openai` | text-embedding-3-small/large, ada-002 | | Ark | `embedding/ark` | Volcengine embedding models | | Gemini | `embedding/gemini` | Google embedding models | | DashScope | `embedding/dashscope` | Alibaba embedding | | Ollama | `embedding/ollama` | Local embedding models | | Qianfan | `embedding/qianfan` | Baidu embedding |
Retriever -- vector/keyword search
| Backend | Package | Notes | |---------|---------|-------| | Redis | `retriever/redis` | KNN and range vector search | | Milvus 2.x | `retriever/milvus2` | Dense + sparse hybrid, BM25 | | Elasticsearch 8 | `retriever/es8` | Approximate vector search | | Qdrant | `retriever/qdrant` | Vector similarity search |
Indexer -- store documents with vectors
| Backend | Package | |---------|---------| | Redis | `indexer/redis` | | Milvus 2.x | `indexer/milvus2` | | Elasticsearch 8 | `indexer/es8` | | Qdrant | `indexer/qdrant` |
Tools -- model-callable functions
| Tool | Package | Notes | |------|---------|-------| | MCP | `tool/mcp` | Model Context Protocol tools | | Google Search | `tool/googlesearch` | Custom Search JSON API | | DuckDuckGo | `tool/duckduckgo` | Web search (use v2) | | Bing Search | `tool/bingsearch` | Bing Web Search API | | HTTP Request | `tool/httprequest` | Generic HTTP calls | | Command Line | `tool/commandline` | Shell command execution | | Browser Use | `tool/browseruse` | Browser automation |
Interface Quick Reference
// BaseModel (generic)
type BaseModel[M any] interface {
Generate(ctx context.Context, input []M, opts ...Option) (M, error)
Stream(ctx context.Context, input []M, opts ...Option) (*schema.StreamReader[M], error)
}
// Type aliases
type BaseChatModel = BaseModel[*schema.Message] // classic path
type AgenticModel = BaseModel[*schema.AgenticMessage] // agentic path
// ToolCallingChatModel (classic path, adds WithTools)
type ToolCallingChatModel interface {
BaseChatModel
WithTools(tools []*schema.ToolInfo) (ToolCallingChatModel, error)
}
// Embedding
type Embedder interface {
EmbedStrings(ctx context.Context, texts []string, opts ...Option) ([][]float64, error)
}
// Retriever
type Retriever interface {
Retrieve(ctx context.Context, query string, opts ...Option) ([]*schema.Document, error)
}
// Indexer
type Indexer interface {
Store(ctx context.Context, docs []*schema.Document, opts ...Option) (ids []string, err error)
}
// Document
type Loader interface {
Load(ctx context.Context, src Source, opts ...LoaderOption) ([]*schema.Document, error)
}
type Transformer interface {
Transform(ctx context.Context, src []*schema.Document, opts ...TransformerOption) ([]*schema.Document, error)
}
// Tool
type BaseTool interface {
Info(ctx context.Context) (*schema.ToolInfo, error)
}
type InvokableTool interface {
BaseTool
InvokableRun(ctx context.Context, argumentsInJSON string, opts ...Option) (string, error)
}
// Prompt
type ChatTemplate interface {
Format(ctx context.Context, vs map[string]any, opts ...Option) ([]*schema.Message, error)
}Installation
go get github.com/cloudwego/eino-ext/components/{type}/{impl}@latest
# Examples:
go get github.com/cloudwego/eino-ext/components/model/openai@latest
go get github.com/cloudwego/eino-ext/components/model/agenticopenai@latest
go get github.com/cloudwego/eino-ext/components/retriever/milvus2@latest
go get github.com/cloudwego/eino-ext/components/tool/mcp@latestChatModel Usage (Classic Path)
Generate
resp, err := chatModel.Generate(ctx, []*schema.Message{
{Role: schema.User, Content: "Hello"},
})
fmt.Println(resp.Content)Stream
reader, err := chatModel.Stream(ctx, messages)
defer reader.Close()
for {
chunk, err := reader.Recv()
if errors.Is(err, io.EOF) { break }
if err != nil { return err }
fmt.Print(chunk.Content)
}Read more
name: eino-component description: Eino component selection, configuration, and usage. Use when a user needs to choose or configure a ChatModel, AgenticModel, Embedding, Retriever, Indexer, Tool, Document loader/parser/transformer, Prompt template, or Callback handler. Covers all component interfaces and their implementations in eino-ext including OpenAI, Claude, Gemini, Ark, Ollama, Milvus, Elasticsearch, Redis, MCP tools, and more.
Eino Component Guide
Component Selection Guide
ChatModel -- LLM inference (classic Message path)
| Provider | Package | Notes | |----------|---------|-------| | OpenAI | `model/openai` | Also supports Azure via `ByAzure: true` | | Claude | `model/claude` | Also supports AWS Bedrock via `ByBedrock: true` | | Gemini | `model/gemini` | Requires `genai.Client` | | Ark (Volcengine) | `model/ark` | Doubao models | | Ollama | `model/ollama` | Local models | | DeepSeek | `model/deepseek` | Reasoning support | | Qwen | `model/qwen` | Alibaba DashScope API | | Qianfan | `model/qianfan` | Baidu ERNIE models | | OpenRouter | `model/openrouter` | Multi-provider routing |
AgenticModel -- LLM inference (AgenticMessage path)
AgenticModel operates on `*schema.AgenticMessage` with block-based content (reasoning, text, images, audio, video, tool calls/results). Tools are always passed at call time via `model.WithTools` option (no `WithTools` method).
| Provider | Package | Notes | |----------|---------|-------| | OpenAI | `model/agenticopenai` | GPT-4o, o1, o3 series | | Gemini | `model/agenticgemini` | Gemini 2.x models | | DeepSeek | `model/agenticdeepseek` | DeepSeek-R1 with reasoning | | Ark (Volcengine) | `model/agenticark` | Doubao models (agentic path) | | Qwen | `model/agenticqwen` | Qwen series via DashScope |
Detailed configuration references:
- `reference/model/agenticopenai.md`
- `reference/model/agenticgemini.md`
- `reference/model/agenticdeepseek.md`
- `reference/model/agenticark.md`
- `reference/model/agenticqwen.md`
Embedding -- text to vector
| Provider | Package | Notes | |----------|---------|-------| | OpenAI | `embedding/openai` | text-embedding-3-small/large, ada-002 | | Ark | `embedding/ark` | Volcengine embedding models | | Gemini | `embedding/gemini` | Google embedding models | | DashScope | `embedding/dashscope` | Alibaba embedding | | Ollama | `embedding/ollama` | Local embedding models | | Qianfan | `embedding/qianfan` | Baidu embedding |
Retriever -- vector/keyword search
| Backend | Package | Notes | |---------|---------|-------| | Redis | `retriever/redis` | KNN and range vector search | | Milvus 2.x | `retriever/milvus2` | Dense + sparse hybrid, BM25 | | Elasticsearch 8 | `retriever/es8` | Approximate vector search | | Qdrant | `retriever/qdrant` | Vector similarity search |
Indexer -- store documents with vectors
| Backend | Package | |---------|---------| | Redis | `indexer/redis` | | Milvus 2.x | `indexer/milvus2` | | Elasticsearch 8 | `indexer/es8` | | Qdrant | `indexer/qdrant` |
Tools -- model-callable functions
| Tool | Package | Notes | |------|---------|-------| | MCP | `tool/mcp` | Model Context Protocol tools | | Google Search | `tool/googlesearch` | Custom Search JSON API | | DuckDuckGo | `tool/duckduckgo` | Web search (use v2) | | Bing Search | `tool/bingsearch` | Bing Web Search API | | HTTP Request | `tool/httprequest` | Generic HTTP calls | | Command Line | `tool/commandline` | Shell command execution | | Browser Use | `tool/browseruse` | Browser automation |
Interface Quick Reference
// BaseModel (generic)
type BaseModel[M any] interface {
Generate(ctx context.Context, input []M, opts ...Option) (M, error)
Stream(ctx context.Context, input []M, opts ...Option) (*schema.StreamReader[M], error)
}
// Type aliases
type BaseChatModel = BaseModel[*schema.Message] // classic path
type AgenticModel = BaseModel[*schema.AgenticMessage] // agentic path
// ToolCallingChatModel (classic path, adds WithTools)
type ToolCallingChatModel interface {
BaseChatModel
WithTools(tools []*schema.ToolInfo) (ToolCallingChatModel, error)
}
// Embedding
type Embedder interface {
EmbedStrings(ctx context.Context, texts []string, opts ...Option) ([][]float64, error)
}
// Retriever
type Retriever interface {
Retrieve(ctx context.Context, query string, opts ...Option) ([]*schema.Document, error)
}
// Indexer
type Indexer interface {
Store(ctx context.Context, docs []*schema.Document, opts ...Option) (ids []string, err error)
}
// Document
type Loader interface {
Load(ctx context.Context, src Source, opts ...LoaderOption) ([]*schema.Document, error)
}
type Transformer interface {
Transform(ctx context.Context, src []*schema.Document, opts ...TransformerOption) ([]*schema.Document, error)
}
// Tool
type BaseTool interface {
Info(ctx context.Context) (*schema.ToolInfo, error)
}
type InvokableTool interface {
BaseTool
InvokableRun(ctx context.Context, argumentsInJSON string, opts ...Option) (string, error)
}
// Prompt
type ChatTemplate interface {
Format(ctx context.Context, vs map[string]any, opts ...Option) ([]*schema.Message, error)
}Installation
go get github.com/cloudwego/eino-ext/components/{type}/{impl}@latest
# Examples:
go get github.com/cloudwego/eino-ext/components/model/openai@latest
go get github.com/cloudwego/eino-ext/components/model/agenticopenai@latest
go get github.com/cloudwego/eino-ext/components/retriever/milvus2@latest
go get github.com/cloudwego/eino-ext/components/tool/mcp@latestChatModel Usage (Classic Path)
Generate
resp, err := chatModel.Generate(ctx, []*schema.Message{
{Role: schema.User, Content: "Hello"},
})
fmt.Println(resp.Content)Stream
reader, err := chatModel.Stream(ctx, messages)
defer reader.Close()
for {
chunk, err := reader.Recv()
if errors.Is(err, io.EOF) { break }
if err != nil { return err }
fmt.Print(chunk.Content)
}Various extensions for the Eino framework: https://github.com/cloudwego/eino
Other skills on eino-ext.
- /eino-agent
Eino ADK agent construction, middleware, and runner. Use when a user needs to build an AI Agent, configure ChatModelAgent with ReAct pattern, use middleware (filesystem, tool search, tool reduction, summarization, plan-task, skill, agents.md), set up the Runner for event-driven
Open skill - /eino-compose
Eino orchestration with Graph, Chain, and Workflow. Use when a user needs to build multi-step pipelines, compose components into executable graphs, handle streaming between nodes, use branching or parallel execution, manage state with checkpoints, or understand the Runnable
Open skill - /eino-guide
Eino framework overview, concepts, and navigation. Use when a user asks general questions about Eino, needs help getting started, wants to understand the architecture, or is unsure which Eino skill to use. Eino is a Go framework for building LLM applications with components,
Open skill

