Kronk — Go SDK, который встраивает LLM прямо в приложение
Ardan Labs выпустили http://github.com/ardanlabs/kronk — Go SDK для локального запуска LLM прямо внутри приложения.
Стандартная схема работы Go с моделями — отправить HTTP-запрос в Ollama или OpenAI и получить ответ. То есть рядом с приложением всегда висит отдельный процесс, к которому ты ходишь по сети. Kronk делает иначе: llama.cpp встраивается прямо в Go-бинарь через модуль yzma — никакого отдельного сервера, модель крутится в том же процессе.
krn, err := kronk. New(model. Config{
ModelPath: "/models/llama-3.2.gguf",
})
resp, err := krn. Chat(ctx, model. D{
Messages: []model. Message{
{Role: "user", Content: "Объясни structured concurrency"},
},
})
API похож на OpenAI — Chat, ChatStreaming, Embeddings, Rerank, Tokenize. Если работали с OpenAI SDK, синтаксис знакомый, только всё локально.
➡️ Полный RAG в одном бинаре
Главная идея в том, чтобы убрать модельный сервер как отдельную архитектурную единицу. Весь RAG пайплайн: чтение документов, создание эмбеддингов, поиск, ответ — можно упаковать в один бинарь. Без Ollama рядом, без HTTP между компонентами, без зависимости от провайдера.
➡️ Поддержка моделей и ускорения
Работает с GGUF-моделями — тот же формат что у Ollama, больше 147k моделей на Hugging Face. Hardware acceleration есть: CUDA, Metal, Vulkan, ROCm, OpenCL. Поддерживаются текстовые модели, vision и аудио. Через GBNF-грамматики можно жёстко ограничить формат вывода, применимо, когда нужен структурированный JSON без галлюцинаций в схеме.
➡️ Сервер — опционально
Сервер в проекте тоже есть и совместим с OpenWebUI, Cline и Claude Code,если нужен привычный endpoint для разработки. Но авторы честно говорят: долгосрочная цель — убрать сервер как отдельную сущность, твоё приложение и должно быть сервером.
Проект не v1, молодой. Но за ним Ardan Labs — авторы Ultimate Go, не студенческий эксперимент. По заявлению авторов, через yzma покрыто уже 94% функциональности llama.cpp.
Как тебе такое, Сергей?
«Как и следовало ожидать, ИИ добрался и до бэкенда. Конечно, приложения для ИИ на Go писали и раньше, но, так как львиная доля кода для машинного обучения реализована на Python, для написания ИИ-шного приложения надо было как-то взаимодействовать с Python — через удаленный API или напрямую с Python'овскими модулями через application binary interface. Это было довольно муторно.
С появлением Kronk встраивание AI в Go-шные программы упростилось донельзя, теперь для этого не надо ваять никаких переходников для ML-ных библиотек на Python, теперь локальная LLM и все средства для работы с ней есть прямо в вашей любимой Goшке. Это как Lua, но для AI — можно встроить куда угодно.
Как заявляют авторы, Kronk поддерживает свыше 94% фич llama.cpp — популярного инструмента для поднятия локальной LLM. В комплекте идут примеры для реализации разных кейсов работы с AI, от простого чата с моделью, до работы с аудио и изображениями, так что теперь начать писать на Go программы, работающие с ИИ, стало гораздо проще», — отметил Сергей Лебедев, старший backend-разработчик VK.
А как вам такой подход? Хотели бы отказаться от отдельного LLM-сервера и держать модель прямо внутри приложения — или текущая архитектура с API вам кажется надёжнее? Обсудим в комментариях 👇
#backendvk #go