Skip to content
Development
Skill

/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

From plugin
eino-ext
7894 skills
Install
$ npx -y skills add cloudwego/eino-ext --skill eino-component --agent claude-code

How 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.md
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@latest

ChatModel 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
Ships witheino-ext

Various extensions for the Eino framework: https://github.com/cloudwego/eino

Get the whole plugin
Stats
790
Stars
348
Forks
Active
Maintenance
Go
Language
Apache-2.0
License
1d ago
Last commit
1y ago
Created

Repo: cloudwego/eino-ext