Eino 개요 — Go LLM 프레임워크의 가치와 구조
Eino 개요
Eino 는 Go 언어 기반의 LLM 애플리케이션 개발 프레임워크입니다. LangChain/LlamaIndex 에서 영감을 받았고, 매우 단순하고 확장 가능하며 신뢰성 있는 설계를 지향합니다.
제공하는 가치
- 컴포넌트(component) — 재사용·조합이 쉬운 추상화와 구현. 각 추상화마다 바로 쓸 수 있는 구현이 여럿 있습니다.
- ADK(Agent Development Kit) — AI 에이전트를 만드는 고수준 추상화. 멀티에이전트 오케스트레이션, 인간-인-더-루프 인터럽트, 사전 제작 에이전트 패턴 지원.
- 오케스트레이션 — 타입 체크·스트림 처리·동시성 관리·애스펙트 주입·옵션 할당 같은 무거운 부분을 처리.
- DevOps 도구 — 시각 개발·디버깅부터 온라인 트레이싱·평가까지.
세 가지 오케스트레이션 API
| API | 특징 |
|---|---|
| Chain | 앞으로만 진행하는 단순 체인형 유향 그래프 |
| Graph | 순환/비순환 모두 가능. 유연하고 강력 |
| Workflow | 구조체 필드 수준 데이터 매핑이 가능한 DAG |
chain, _ := NewChain[map[string]any, *Message]().
AppendChatTemplate(prompt).AppendChatModel(model).Compile(ctx)
chain.Invoke(ctx, map[string]any{"query": "what's your name?"})
ADK 로 ReAct 에이전트
ChatModelAgent 는 ReAct 루프를 내부에서 처리하고, 각 추론 단계를 이벤트로 방출합니다. 하위 에이전트로 제어를 넘기거나(sub-agents), 에이전트를 도구로 감싸거나(tool-wrapping), 아무 지점에서나 인터럽트 후 checkpoint 에서 재개합니다.
agent, _ := adk.NewChatModelAgent(ctx, &adk.ChatModelAgentConfig{
Name: "assistant", Description: "A helpful assistant that can use tools",
Model: chatModel, ToolsConfig: ...,
})
runner := adk.NewRunner(ctx, adk.RunnerConfig{Agent: agent})
프레임워크 구조
- Eino — 타입 정의, 스트림 처리, 컴포넌트 추상화, 오케스트레이션, 콜백.
- EinoExt — 컴포넌트 구현, 콜백 핸들러, 예제, 평가자·프롬프트 최적화 도구.
- EinoExamples — 예제 애플리케이션·모범 사례 저장소.
Go 1.18 이상이 필요합니다.