eino-guide logo

eino-guide

eino guide

cloudwego/eino-ext126installs733starsDocumentation

SKILL.md

Full skill instructions

Eino Framework Guide

Eino (pronounced "i know") is a Go framework for building LLM applications.

Core Concepts

Component

Standardized interfaces for AI capabilities. Each interface has multiple interchangeable implementations.

ComponentWhat It DoesKey Interface
ChatModelLLM inference (generate / stream)model.BaseChatModel, model.ToolCallingChatModel
ToolFunctions the model can calltool.InvokableTool, tool.EnhancedInvokableTool
EmbeddingText to vectorembedding.Embedder
RetrieverVector/keyword searchretriever.Retriever
IndexerStore documents with vectorsindexer.Indexer
ChatTemplatePrompt formatting with variablesprompt.ChatTemplate
Document Loader/TransformerLoad and process documentsdocument.Loader, document.Transformer
Callback HandlerObservability and tracingcallbacks.Handler

Implementations live in eino-ext (OpenAI, Claude, Gemini, Ark, Ollama, Milvus, Redis, Elasticsearch, etc.).

-> Use /eino-component for selecting, configuring, and using components.

Orchestration (Compose)

Three APIs for wiring components into executable pipelines. All compile to a Runnable[I, O] with four execution modes (Invoke, Stream, Collect, Transform).

APITopologyWhen to Use
GraphDirected graph, supports cyclesComplex flows with branching, loops (e.g., ReAct pattern)
ChainLinear sequentialSimple pipelines (e.g., template -> model)
WorkflowDAG with field-level mappingParallel branches with struct field routing

The compose layer handles type checking, stream conversion between nodes, concurrency, callback injection, and option distribution automatically.

-> Use /eino-compose for building graphs, chains, workflows, streaming, callbacks, and state management.

ADK (Agent Development Kit)

High-level abstractions for building AI agents. Encapsulates the model-tool-loop pattern.

ConceptWhat It Does
ChatModelAgentReAct-style agent: model generates, calls tools, loops until done
DeepAgentPre-built agent with filesystem backend, tool search, summarization
RunnerExecutes agents, manages checkpoints, emits event streams
Middleware (Handlers)Intercept and extend agent behavior (filesystem, summarization, plan-task, etc.)
Interrupt/ResumeHuman-in-the-loop: pause agent, get user input, resume from checkpoint
AgentToolWrap an agent as a tool callable by another agent

-> Use /eino-agent for building agents, configuring middleware, runners, and human-in-the-loop.

Schema

Shared data types used across all layers:

  • schema.Message -- Conversation message (system/user/assistant/tool roles, content, tool calls)
  • schema.Document -- Document with content, metadata, and vector embeddings
  • schema.ToolInfo -- Tool description with JSON schema parameters
  • schema.StreamReader[T] -- Generic streaming reader (always defer stream.Close())

Repositories

RepositoryRole
github.com/cloudwego/einoCore: interfaces, schema, compose engine, ADK, callbacks
github.com/cloudwego/eino-extImplementations: model providers, vector stores, tools, callback handlers

Packages at a Glance

eino (core):

PackageContains
schemaMessage, Document, ToolInfo, StreamReader
components/modelChatModel and AgenticModel interfaces
components/toolTool interfaces (BaseTool, InvokableTool, StreamableTool, Enhanced variants)
components/embeddingEmbedder interface
components/retrieverRetriever interface
components/indexerIndexer interface
components/documentLoader, Transformer interfaces
components/promptChatTemplate interface
composeGraph, Chain, Workflow, ToolsNode, Runnable, state, checkpoint
callbacksHandler interface, global/per-run registration
adkAgent, Runner, ChatModelAgent, middleware, interrupt/resume
adk/prebuilt/deepDeepAgent preset

eino-ext (implementations):

PackageContains
components/model/{provider}ChatModel implementations (openai, claude, gemini, ark, ollama, deepseek, qwen, etc.)
components/embedding/{provider}Embedding implementations (openai, ark, ollama, etc.)
components/retriever/{backend}Retriever implementations (redis, milvus2, es8, qdrant)
components/indexer/{backend}Indexer implementations (redis, milvus2, es8, qdrant)
components/tool/{type}Tool implementations (mcp, googlesearch, duckduckgo, bingsearch, etc.)
callbacks/{provider}Callback handlers (cozeloop, apmplus, langfuse, langsmith)
adk/backend/localLocal filesystem Backend for DeepAgent

Choosing Your Approach

ScenarioApproachSkill
Single model call (generate or stream)Use ChatModel directly/eino-component
Multi-turn agent with toolsChatModelAgent + Runner/eino-agent
Production agent with filesystem, tool searchDeepAgent/eino-agent
Linear pipeline (template -> model)Chain/eino-compose
Complex flow with branching or loopsGraph/eino-compose
Parallel branches with field mappingWorkflow/eino-compose
RAG (embed + index + retrieve)Indexer + Retriever + Embedding/eino-component
Agent with human approvalInterrupt/Resume + Runner/eino-agent
Observability and tracingCallback handlers/eino-component

Reference Files

  • reference/schema.md -- Core data types shared across all layers: Message, Document, ToolInfo, StreamReader
  • reference/runnable.md -- Runnable[I, O] interface, four execution modes, runtime options
  • reference/quick-start.md -- Three complete working examples (ChatModel, Agent+Runner, Chain)

Instructions to Agent

  1. Route to the appropriate skill (/eino-component, /eino-compose, /eino-agent) when the question is specific. Consult the "Choosing Your Approach" table.
  2. Always provide Go code examples using real import paths from github.com/cloudwego/eino and github.com/cloudwego/eino-ext.
  3. For component implementation details, always read the provider's reference file before generating code. Do not assume constructor or config naming conventions.
  4. Prefer ADK (ChatModelAgent + Runner) for agent use cases over manually building ReAct loops with compose graphs. For interactive multi-turn applications needing preemption and lifecycle management, recommend TurnLoop.
  5. When showing streaming code, always include defer stream.Close().