
Ollama Cloud Client: когда модели слишком тяжелы для локального запуска
kbooo 13 минут назад Ollama Cloud Client: когда модели слишком тяжелы для локального запуска Уровень сложности Средний Время на прочтение 6 мин Охват и читатели 625 Блог компании Beeline Cloud Java * Веб-разработка *...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. kbooo 13 минут назад Ollama Cloud Client: когда модели слишком тяжелы для локального запуска Уровень сложности Средний Время на прочтение 6 мин Охват и читатели 625 Блог компании Beeline Cloud Java * Веб-разработка * Программирование * DevOps * Кейс Привет. Меня зовут Николай Пискунов, я руководитель направления Big Data и эксперт курса Cloud DevSecOps по безопасной разработке от Академии вАЙТИ Beeline Cloud . Сегодня я хочу поделиться историей создания одного интересного проекта — клиента для облачного сервиса Ollama.
Как всё начиналось Вы знаете это чувство, когда хочешь поиграться с локальными LLM через Ollama, но твой старенький ноутбук начинает плавиться при попытке запустить что-то крупнее 7B параметров? Решение: у Ollama есть облачный API! Почему бы не сделать удобный клиент, который будет работать как прокси между моими приложениями и облачными моделями?
Технические детали
Так родился проект ollama-client . Архитектура не так проста, как кажется Проект состоит из двух частей: бэк на Spring Boot и фронт на паре React и TypeScript. Бэкенд (Spring Boot 3.
10) java @RestController @RequestMapping("/api/chat") public class ChatController { @PostMapping(value = "/stream", produces = "text/event-stream;charset=UTF-8") public SseEmitter streamChat(@RequestBody ChatRequest request) { // Вроде бы обычный стриминг... streamChat(request); } } На первый взгляд типичный REST-контроллер. Но дьявол, как обычно, в деталях.
Посмотрите внимательно на WebConfig. java : java @Override public void preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { if (request. contains("/api/chat/stream")) { response.
Отраслевые последствия
setHeader("X-Accel-Buffering", "no"); response. setHeader("Cache-Control", "no-cache"); response. setHeader("Connection", "keep-alive"); } } Эти заголовки — ключ к пониманию того, с чем нам пришлось бороться.
Nginx (который часто стоит перед приложениями) любит буферизировать ответы, убивая всю магию Server-Sent Events. А нам нужен живой поток! Фронтенд (React + TypeScript) typescript export const useEventStream = ({ url, onComplete, onError }: UseEventStreamProps) => { // Казалось бы, используем EventSource...
// Но нет, пришлось изобретать велосипед }; Подводные камни облачного API Когда я начал интеграцию с Ollama Cloud, меня ждал сюрприз: их API не совсем соответствует тому, что ожидает стандартный Spring AI клиент. Пришлось делать ручной парсинг стрима: java String line; while ((line = reader. startsWith("data: ") && !
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





