Комментарии 20
Начало уже многообещающее!
Не останавливайтесь!
Не совсем понятно для чего нужна именно liteLLM , если есть стандартный requests, и код на питоне при работе с ним будет фактически такой же? Плюс requests это не только для работы с llm-ами, но и другими нейронками типа ace step, stable diffusion...
requests — это просто транспортный слой HTTP. LiteLLM — это унифицированный слой именно для LLM-провайдеров.
Через requests можно вызвать что угодно, но всю специфику разных LLM API вы обрабатываете сами.
Через LiteLLM вы платите зависимостью, но получаете единый интерфейс, единый формат ответов и более лёгкое переключение между моделями и провайдерами.
Хотелось бы в следующей статье увидеть примеры этого :) Потому что переключение между моделями и провайдерами обычно заключается в изменении начальных переменных, иногда точки входа API, да...и всё по сути. Что с облачным, что с локальным - одинаково работает. А по сути это перекидывание json запросов, что так, что эдак. У вас тоже надо инициализировать API, чтобы она ответила. Почти так же как это делает requests. Вот и хочется примеров. Вдруг и правда лучше )
Для обучения это почти идеальный вариант. Вы не отвлекаетесь на инфраструктуру и сразу видите базовую механику интеграции.
Olama - обёртка над llama.cpp
LiteLLM - обёртка над Open AI запросами
llama.cpp ставится не сложнее оламы. Open AI spec в простых случаях - тоже не китайская грамота. Понятно, что каждого джежая свой путь обучения, но не слишком ли упрощаете?
Упрощаю осознанно. Цель серии — не объяснить стек до уровня llama.cpp, а показать рабочую механику LLM-интеграции на Python человеку, который раньше с этим не работал. Ollama как обёртка над llama.cpp и LiteLLM как обёртка над OpenAI spec — это честное описание. Если читатель дойдёт до конца серии и захочет глубже — у него уже будет рабочий контекст, в котором это понимание ляжет. Каждый джедай свой путь, согласен.
У вас подача материала хорошая, учительская. Если бы вы так рассказали про llama.cpp... Просто обёртки не только упрощают, но и ограничивают.
Например ollama list Это, конечно, просто, но скрывает такой важный параметр как квантование моделей и размер контекста. Вы говорите в статье "если модель тормозит, выберите поменьше". Но ведь память ест не только сама модель, но и окно контекста. Тогда становится понятнее, почему при свободной видео памяти 8 GB модель 7.5 GB "не влезает".
Я, погружаясь в тему с полного нуля полтора месяца назад, благодаря вот этому комментарию https://habr.com/ru/articles/991560/#comment_29467748 (думаю, что) сэкономил кучу времени на понимании принципов локальной LLM. Да, может чуть непонятнее в начале, но и Hugging Face и Llama.cpp - весьма дружественные к новичкам (особенно когда есть под рукой ИИ чат какой-нить).
Там еще есть ключик --keepalive про который в интернетах вообще сложно найти инфу, хотя ничего секретного нету. И в мелочах скрыты многие приколы. Конкретно этот ключик задает время удержания модели в памяти с последнего обращения. Меня сильно бесило, что по дефолту там 15 минут моделька висит, а потом выгружается, моделька может быть не то чтобы на hdd а даже на внешней флешке, с которой она грузиться будет полчаса. Там еще ключики всякие веселые есть, но имхо, оллама последнее время пошла куда-то не туда.
Тоже перешёл на llama.cpp + llama-swap т.к. ollama уже давно скатился в какое-то полу коммерческое дно. Да и по скорости генераций llama.cpp обходит ollama на целую голову - а это, на секундочку ключевой фактор в подобной деятельности.
Мой совет новичкам, даже не думайте это трогать, существует целый вагон качественного, быстрого, адекватного по для работы с локальными моделями. Ollama юзают те, кто далеко от темы локальной нейро генерации.
Запускаю файл. python main.py и ничего не происходит
Если хочется "убить" время, делайте, как написано в статье, все равно не получите никакого адекватного результата. Для более менее "нормального" общения с моделью нужен GPU ускоритель на 16 гиг и модель не хуже qwen3 и то - это на уровне "поиграться". Локальные модели обычно ставят под эмбидинги и reranker для rag систем. Для анализа информации и работы с инструментами нужна нормальная облачная модель. Локальные модели , если у Вас только не своя минифабрика с GPU ускорителями, на уровне облачных моделей работать не будут, таковое на сегодня развитие технологий.
кстати да. Это ОЧЕНЬ важный момент, обойдённый автором. Если нету GPU (желательно от NVidia) то локальная LLM это грустно, медленно и малоинтересно.
16GB это очень хорошо, но сейчас и в более популярные 8GB можно поместить не сильно обрезанную (4 бита) qwen 3.5. (модель 5,6 gb + 0.9 gb на распознавание картинок, еще и на 8к+ токенов контекстного окна останется).
Это вполне себе интересный собеседник, да еще и без цензуры, спрашивай о чем хочешь.
если что, краткая инструкция (если вдруг у кого возникнет желание проверить, а лламы еще нету)
Скачать llama.cpp под свою видео карту (или cpu, но это грустно) https://github.com/ggml-org/llama.cpp/releases
(опционально) модуль для распознавания картинок https://huggingface.co/HauhauCS/Qwen3.5-9B-Uncensored-HauhauCS-Aggressive/blob/main/mmproj-Qwen3.5-9B-Uncensored-HauhauCS-Aggressive-BF16.gguf
Запустить сервер
llama-server.exe --model [путь до модели] --mmproj [путь до модуля]Остальные параметры можно попробовать по умолчанию - в последних релизах уже и окно контекста можно не указывать - обрежется по имеющийся памяти.Открыть WebUI localhost:8080
А подскажите, какая самая легковесная модель? Врядли такие есть, но чтобы влезла в vps 2cpu, 2gb :) "разум " не нужен, скорость посути тоже особо.чисто приркутить к телеграм боту, чтобы он, например на основе базовых входных данных, типа погодных, писал чтото вроде "сегодня пасмурно/ясно/дождь, температура от хх до хх, ветер блабла и т.п" я чисто экспериментирую для себя.
Антон, привет!
Этот гайд входит в курс на степике?
C LiteLLM случилась неприятность: https://github.com/BerriAI/litellm/issues/24518
Рекомендуется срочно проверить свои версии (скомпрометированы v1.82.7 + v1.82.8) и сменить креды.

Маленький LLM-чат на Python с Ollama и LiteLLM. Часть 1: ставим окружение и пишем первый запрос