Анализ переиспользуемых 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

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

monk: Навык, заставляющий замолчать агентское повествование для экономии контекста и токенов
Инструменты

monk: Навык, заставляющий замолчать агентское повествование для экономии контекста и токенов

Пользователь Reddit опубликовал 'monk' — навык, который убирает повествование, преамбулы и постамбулы из ответов агента Claude, утверждая, что это сокращает выходные токены примерно на 54% за один раунд и увеличивает ёмкость контекста на 29–39% при 100 раундах.

OpenClawRadar
Самостоятельно размещенный контекстный бандит на Rust: Syntra и Lycan для адаптивных систем принятия решений
Инструменты

Самостоятельно размещенный контекстный бандит на Rust: Syntra и Lycan для адаптивных систем принятия решений

Два проекта с открытым исходным кодом: Lycan (язык выполнения графов с узлами стратегий и обученными весами) и Syntra (приложение Docker/API, обслуживающее скомпилированные капсулы Lycan). При использовании на собственном продукте для дебатов по AI-акциям обнаружили ошибки в конвейере данных до ошибок времени выполнения.

OpenClawRadar
Результаты тестирования: 6 бюджетных моделей против Claude Sonnet 4.6 в задаче оркестрации OpenClaw
Инструменты

Результаты тестирования: 6 бюджетных моделей против Claude Sonnet 4.6 в задаче оркестрации OpenClaw

Разработчик протестировал шесть более дешёвых ИИ-моделей против Claude Sonnet 4.6 в качестве основного оркестратора для настройки OpenClaw. Только o4-mini повторил идеальный результат Sonnet, в то время как другие провалились на критически важных задачах, требующих суждения, таких как проверка файлов и делегирование.

OpenClawRadar
🦀
Инструменты

Обзор локальных Markdown-серверов памяти для ИИ-агентов: Mem0, Hindsight, Zep и новичок Engram

Пользователь протестировал ~20 локальных систем памяти агентов для хранения воспоминаний в виде редактируемых файлов. Engram (от Obsidian68) оказался единственным, кто соответствовал всем требованиям: полностью локальный, хранение в Markdown, умное удаление дубликатов, устаревание важности и автономный сервер.

OpenClawRadar