Анализ переиспользуемых Go-компонентов Ollama для локальной разработки LLM

✍️ OpenClawRadar📅 Опубликовано: 17 марта 2026 г.🔗 Source
Анализ переиспользуемых Go-компонентов Ollama для локальной разработки LLM
Ad

Автономные компоненты в кодовой базе Ollama

Разработчик недавно проанализировал исходный код Ollama, чтобы определить, какие части можно использовать независимо в других проектах на Go. Исследование выявило несколько компонентов, для которых нет эквивалентных автономных библиотек на Go в других местах.

Реализация семплинга токенов

Пакет sample/ в Ollama содержит чистую реализацию на Go для семплинга с температурой, top-k, top-p, min-p и жадного семплинга. Разработчик не нашёл автономных альтернатив на Go — существующие решения либо обёртывают llama.cpp через CGo, либо отправляют параметры на удалённые API. Порядок пайплайна (сначала topK, затем температура, затем softmax, затем topP, затем minP) является критическим; его изменение приводит к другим результатам.

Обработка файлов GGUF

Хотя существует независимый ридер GGUF (gpustack/gguf-parser-go), который предлагает такие функции, как удалённый парсинг и оценка VRAM, он доступен только для чтения. Пакет fs/ggml в Ollama включает функцию WriteGGUF(), аналогов которой нет в других местах на Go. Низкоуровневый ридер (fs/gguf) особенно чистый, без импортов из остальной кодовой базы Ollama — копирование 5 файлов позволяет скомпилировать его независимо. Однако код парсинга GGUF имеет проблемы с безопасностью: было более 13 CVE, связанных с DoS из-за повреждённых файлов GGUF, и в исходном коде есть пробелы в валидации входных данных, которые могут привести к неограниченным выделениям памяти из-за полей размера, контролируемых злоумышленником.

Ad

Возможности конвертации моделей

Пакет convert/ обрабатывает конвертацию SafeTensors и PyTorch в GGUF для более чем 25 архитектур моделей. Единственный эквивалент — это Python-скрипт convert_hf_to_gguf.py. Извлечение этого компонента сложнее из-за зависимостей от внутренних пакетов, но части ридера и токенизатора удивительно независимы.

Система шаблонов чата

Ollama включает более 20 встроенных шаблонов чата и использует подход нечёткого сопоставления с расстоянием Левенштейна для сопоставления строк шаблонов Jinja2 из файлов GGUF с эквивалентами на Go. Существующие библиотеки на Go не предоставляют рендеринг шаблонов чата, специфичных для моделей, хотя каждый новый формат модели требует ручного переноса шаблонов.

Слой совместимости с OpenAI

Примерно 600 строк чистых функций преобразования конвертируют формат OpenAI в формат Ollama без HTTP-логики. Несмотря на эту чистую реализацию, проекты, такие как LocalAI и one-api, создали свои собственные версии с нуля, а не извлекли этот компонент.

Вопросы безопасности

Анализ отметил тревожные аспекты безопасности: более 22 CVE с 2024 года, более 175 тыс. открытых экземпляров, обнаруженных SentinelOne, и отсутствие встроенной аутентификации API. Уязвимости парсинга GGUF затронули бы любое извлечение этого кода, хотя семплер и трансформы OpenAI чисты.

Пробел в экосистеме Go

Разработчик заметил, что хотя экосистема Go имеет хорошие инструменты на верхнем уровне (клиенты API, HTTP-серверы) и нижнем уровне (CGo-биндинги к GGML и CUDA), отсутствует средний слой для семплинга, шаблонов, конвертации форматов и записи GGUF, который в настоящее время существует только внутри Ollama.

📖 Read the full source: r/LocalLLaMA

Ad

👀 Смотрите также

ClaudeClaw: Бесплатный плагин кода Claude для постоянных AI-агентов на мессенджер-платформах
Инструменты

ClaudeClaw: Бесплатный плагин кода Claude для постоянных AI-агентов на мессенджер-платформах

ClaudeClaw — это бесплатный плагин Claude Code с открытым исходным кодом и лицензией MIT, который запускает Claude в качестве постоянного агента в Slack, WhatsApp и Telegram. Для работы требуется Node.js 20+, Claude Code и ваш собственный ключ API Anthropic, с изоляцией на уровне ОС через sandbox-runtime от Anthropic.

OpenClawRadar
Плагин OpenClaw Shared Memory: координация нескольких агентов на основе SQLite
Инструменты

Плагин OpenClaw Shared Memory: координация нескольких агентов на основе SQLite

Разработчик создал плагин для многокомпонентных сред OpenClaw, который позволяет агентам совместно использовать память через SQLite, устраняя необходимость во внешних сервисах. Плагин обеспечивает явный обмен памятью через инструмент, автоматическое извлечение контекста, контроль доступа, отслеживание сущностей и обнаружение противоречий.

OpenClawRadar
Clawdbot запускает новые функции с подпиской Pro
Инструменты

Clawdbot запускает новые функции с подпиской Pro

Clawdbot представляет подписку 'Pro', предлагающую расширенные возможности для пользователей, стремящихся максимально использовать потенциал автоматизации в средах программирования. Ознакомьтесь с последними функциями и наблюдениями сообщества из r/clawdbot.

OpenClawRadar
Разработчик тестирует Apple Intelligence для задач с буфером обмена на устройстве.
Инструменты

Разработчик тестирует Apple Intelligence для задач с буфером обмена на устройстве.

Разработчик создал менеджер буфера обмена, используя фреймворк Foundation Models от Apple Intelligence, и обнаружил, что он подходит для повседневных задач, таких как краткие сводки и переписывание текста, но ограничен в работе с неоднозначным языком и детальными задачами.

OpenClawRadar