Eino - Go-фреймворк для эпохи LLM, который вы ждали
Когда в 2023 году ChatGPT взорвал интернет, многие разработчики бросились изучать Python — ведь все крутые фреймворки для работы с LLM были именно на нём. Но что делать, если ваша инфраструктура завязана на Go? Знакомьтесь — Eino (произносится как "I know"), фреймворк, который делает для Go то же, что LangChain для Python, но с учётом идиом Go и его сильных сторон.
Почему Eino — это важно?
Eino решает три ключевые проблемы, с которыми сталкиваются Go-разработчики при работе с LLM:
- Отсутствие стандартизации — каждый пишет свои обёртки вокруг API
- Сложность оркестрации — соединение разных компонентов в рабочую цепочку
- Проблемы с потоковой обработкой — работа с chunk-ответами от моделей
Фреймворк уже собрал почти 7 тысяч звёзд на GitHub и активно используется в продакшене компанией Bytedance (создатели TikTok).
Ключевые возможности
1. Богатая библиотека компонентов
Eino предлагает готовые абстракции для всех основных элементов LLM-приложений:
ChatModel— работа с чат-моделями (OpenAI и другие)Tool— инструменты, которые модель может вызыватьRetriever— поиск и извлечение информацииDocumentLoader— загрузка документов
Каждый компонент имеет чётко определённые интерфейсы ввода-вывода, что делает их совместимыми друг с другом.
2. Мощная оркестрация
Eino предлагает три уровня API для построения цепочек:
- Chain — простые последовательные цепочки
- Graph — сложные графы с ветвлениями
- Workflow — оркестрация с маппингом полей структур
Пример простой цепочки:
chain, _ := NewChain[map[string]any, *Message]().
AppendChatTemplate(prompt).
AppendChatModel(model).
Compile(ctx)
chain.Invoke(ctx, map[string]any{"query": "what's your name?"})
3. Потоковая обработка из коробки
Eino автоматически обрабатывает четыре сценария работы с потоками данных:
| Режим | Вход | Выход | |-------------|-------|-------| | Invoke | Обычный | Обычный | | Stream | Обычный | Поток | | Collect | Поток | Обычный | | Transform | Поток | Поток |
Это избавляет разработчика от рутинной работы по конвертации данных между компонентами.
4. Готовые паттерны
Фреймворк включает реализации популярных паттернов, например ReAct-агента:
// Создание ReAct агента
agent := flow.NewReActAgent(model, tools)
// Использование
response, err := agent.Run(ctx, "Какая погода в Москве?")
Архитектура фреймворка
Eino построен по модульному принципу:
- Ядро (этот репозиторий) — базовые абстракции и оркестрация
- EinoExt — реализации компонентов и дополнительные инструменты
- EinoExamples — примеры приложений и best practices

Когда стоит выбрать Eino?
Фреймворк особенно хорош для:
- Команд, которые уже работают на Go и хотят интегрировать LLM
- Сложных сценариев обработки, где нужна гибкая оркестрация компонентов
- Высоконагруженных систем, где важны производительность и надёжность
Как начать?
- Установите Go 1.18+
- Добавьте зависимость:
go get github.com/cloudwego/eino
- Изучите официальную документацию и примеры
Eino — это свежий взгляд на разработку LLM-приложений в экосистеме Go. Если вы давно искали "свой" фреймворк для работы с языковыми моделями, стоит дать ему шанс.
