Loading...
Loading...
Eino component selection, configuration, and usage. Use when a user needs to choose or configure a ChatModel, 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, Ollama, Milvus, Elasticsearch, Redis, MCP tools, and more.
npx skill4agent add cloudwego/eino-ext eino-component| Provider | Package | Notes |
|---|---|---|
| OpenAI | | Also supports Azure via |
| Claude | | Also supports AWS Bedrock via |
| Gemini | | Requires |
| Ark (Volcengine) | | Doubao models |
| Ollama | | Local models |
| DeepSeek | | Reasoning support |
| Qwen | | Alibaba DashScope API |
| Qianfan | | Baidu ERNIE models |
| OpenRouter | | Multi-provider routing |
| Provider | Package | Notes |
|---|---|---|
| OpenAI | | text-embedding-3-small/large, ada-002 |
| Ark | | Volcengine embedding models |
| Gemini | | Google embedding models |
| DashScope | | Alibaba embedding |
| Ollama | | Local embedding models |
| Qianfan | | Baidu embedding |
| Backend | Package | Notes |
|---|---|---|
| Redis | | KNN and range vector search |
| Milvus 2.x | | Dense + sparse hybrid, BM25 |
| Elasticsearch 8 | | Approximate vector search |
| Qdrant | | Vector similarity search |
| Backend | Package |
|---|---|
| Redis | |
| Milvus 2.x | |
| Elasticsearch 8 | |
| Qdrant | |
| Tool | Package | Notes |
|---|---|---|
| MCP | | Model Context Protocol tools |
| Google Search | | Custom Search JSON API |
| DuckDuckGo | | Web search (use v2) |
| Bing Search | | Bing Web Search API |
| HTTP Request | | Generic HTTP calls |
| Command Line | | Shell command execution |
| Browser Use | | Browser automation |
// ChatModel
type BaseChatModel interface {
Generate(ctx context.Context, input []*schema.Message, opts ...Option) (*schema.Message, error)
Stream(ctx context.Context, input []*schema.Message, opts ...Option) (*schema.StreamReader[*schema.Message], error)
}
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 InvokableTool interface {
Info(ctx context.Context) (*schema.ToolInfo, error)
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)
}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/retriever/milvus2@latest
go get github.com/cloudwego/eino-ext/components/tool/mcp@latestresp, err := chatModel.Generate(ctx, []*schema.Message{
{Role: schema.User, Content: "Hello"},
})
fmt.Println(resp.Content)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)
}withTools, err := chatModel.WithTools([]*schema.ToolInfo{toolInfo})
resp, err := withTools.Generate(ctx, messages)
// resp.ToolCalls contains model's tool invocations// 1. Embed and store documents
indexer, _ := redisIndexer.NewIndexer(ctx, &redisIndexer.IndexerConfig{
Client: redisClient, KeyPrefix: "doc:", Embedding: embedder,
})
ids, _ := indexer.Store(ctx, docs)
// 2. Retrieve relevant documents
retriever, _ := redisRetriever.NewRetriever(ctx, &redisRetriever.RetrieverConfig{
Client: redisClient, Index: "my_index", Embedding: embedder,
})
docs, _ := retriever.Retrieve(ctx, "user query", retriever.WithTopK(5))import mcpp "github.com/cloudwego/eino-ext/components/tool/mcp"
tools, err := mcpp.GetTools(ctx, &mcpp.Config{Cli: mcpClient})Info()InvokableRun()reference/{type}/{impl}.mdToolCallingChatModelChatModel{type}/overview.mdreference/model/*.mdreference/embedding/*.mdreference/retriever/*.mdreference/indexer/*.mdreference/tool/*.mdreference/document/pipeline.mdreference/prompt.mdreference/callback/*.md