Pull to refresh

Comments 7

Шуткам оламе точно стоит поучиться….🤣🤣

Запускаем докер контейнер с ollama - docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama в качестве порта можно использовать любые значения

Судя по отсутствию ключей "--runtime nvidia --gpus all" запуск в ОЗУ. Даже для поиграться вызовет разочарование.

А вместо 3/4 статьи с обрывками кодов, можно было бы привести ссылку https://docs.ollama.com/api

типа для вот этого "curl http://127.0.0.1:11434/api/chat -d '{"model": "llama3.2", "messages": [{ "role": "user", "content": "why is the sky blue?" }]}'"

нужно обязательно и DTO и прочую обвязку растягивать на несколько страниц в статье?

Понятно, что все в ОЗУ и она будет не такой крутой, но на рабочих ноутах, которые выдают сейчас, это все, что есть, да и многие работают на них)

Я показывал как сделать это из Java, поэтому и все приложил, чтобы можно было по коду запустить и посмотреть, как пример)

Вы показали как сделать конкретно на SpringBoot + RestTemplate. Это очень частный вариант. Да и тривиальный. Я верю что Вы умеете писать эти обертки (тривиальная задача), но этому посвящено 3/4 статьи.

Как бы мир не замыкается на SpringBoot и использовании DTO и прочей многословной обертки вокруг простого http client
Но при этом:

  1. Не сказав откуда взялась информация по API (типа вот вам OllamaRequest). Если что, там еще куча параметров настройки (например температура и пр.)

  2. Управление stream как бы присутствует, но вообще ни на что не влияет. Схлопыватется в реализации до ожидания полного ответа от LLM). Зачем его вообще тогда делать не константой false?

Кстати, никогда не проверял что сделает getBody, если HTTP ответ будет в режиме stream.
restTemplate.postForEntity(__).getBody();
Есть подозрение (уверенность), что обработает некорректно. Потому что из ollama летят куски в виде json объектов, из которых нужно выдирать и склеивать ответ. (летят токны)

Живьем это выглядит так (сам запрос не привожу, но в нем "stream": true,)
И 100% restTemplate.postForEntity(___, OllamaResponse.class).getBody();
работать не будет.

curl http://192.168.0.101:11434/api/generate -d @rq2.json {"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.532813997Z","response":" ","done":false}
{"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.598434939Z","response":"请","done":false}
{"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.611161221Z","response":" translate","done":false}
{"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.623824174Z","response":" this","done":false}
{"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.636252126Z","response":" to","done":false}
{"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.648964908Z","response":" Chinese","done":false}
{"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.66136273Z","response":"\n\n","done":false}
{"model":"Qwen3-Coder-REAP-25B-A3B-MXFP4_MOE-GGUF:latest","created_at":"2025-11-12T04:45:12.674073212Z","response":"5","done":false}
...

Это, если что, пример бреда локальной LLM, который можно остановить (услышав шум вентиляторов GPU) оборвав TCP/IP HTTP клиента, в котором был послан вопрос и полетел (визуально) бред.
Локальные LLM с настройками по умолчанию, иногда впадают в бесконечный цикл генерации бреда.
И должна быть возможность сказать "стоп", а не пытаться сложить этот бесконечный ответ в буфер для показа "сразу"

Да, если указать stream true, то он будет работать не корректно, тут я даже спорить не буду, конечно, там есть еще параметры, просто в моей самой простой интеграции я их опустил, а так, да, есть еще доп параметры что в запросе, что в ответе, согласен

По сути, вся статья о том, что берем готовый образ докера и шлем ему запросы. Ни подробностей, ни нюансов, даже стриминг не настроен. Как-то бесполезно, уж извините

Спасибо! информативно.

Sign up to leave a comment.

Articles