Архив рубрики ~Лента новостей~

Подключаем LLMку в свой Java/Kotlin проект через Docker

Подключаем LLMку в свой Java/Kotlin проект через Docker

Всем привет, сегодня я расскажу как подключить LLMку через докер в ваш проект под разные задачи: от рабочих до бытовых.

Мы будем использовать Java/Kotlin + Docker + Ollama.

Немного о Ollama

Ollama — это платформа для локального запуска и управления LLM (больших языковых моделей) на своём компьютере. Она нужна, чтобы использовать и тестировать модели вроде GPT или LLaMA без облака, хранить их локально и интегрировать в свои приложения.

Я же сегодня буду вам показывать пример на llama3:8b. В первую очередь Llama 3‑8B оптимизирована для общего текстового интеллекта: от ответов на вопросы до прочих повседневных задач.

Со списком всех возможных моделей можно ознакомиться — тут.

Подключаем Ollama в Docker

Для того, чтобы подключить Ollama в докер нужно выполнить всего пару команд

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

  2. Переходим в контейнер — docker exec -it ollama bash

  3. Скачиваем нужную вам модель(список все моделей выше) — ollama pull llama3:8b
    Вместо llama3:8b указываем любую модель под ваши задачи

Результат у вас должен получится следующий:

NOVOSTI

Получаем доступ к Ollama через Java/Kotlin

Для вызова и работы с ollama мы будем использовать любую библиотеку для вызовов http методов, в своем же примере я буду использовать Spring + RestTemplate.

Мы с вами создадим простой запрос для генерации анекдотов. Смех, как известно, продлевает жизнь!

Давайте начнем с создания двух классов DTO для обмена данными:

@Data @NoArgsConstructor @AllArgsConstructor public class OllamaRequest { private String model; private String prompt; private Boolean stream; }@Data @NoArgsConstructor @AllArgsConstructor public class OllamaResponse { private String response; private Boolean done; }

Затем я предлагаю сделать класс для properties:

@Data @ConfigurationProperties(«app.ollama») public class OllamaProperties { private String urlGenerate; private String model; }

application.yaml выглядит следующим образом:

app: ollama: url-generate: http://localhost:11434/api/generate model: llama3:8b

Теперь давайте напишем класс для вызова метода ollama.

Обращаемся к Ollama по нашей model из application вызывая ручку /api/generate получаем ответ и возвращаем его:

@Service @RequiredArgsConstructor public class OllamaClient { private final RestTemplate restTemplate; private final OllamaProperties ollamaProperties; public OllamaResponse generateByPromt(String promt) { HttpEntity<OllamaRequest> request = createRequest(promt); return restTemplate.postForEntity(ollamaProperties.getUrlGenerate(), request, OllamaResponse.class).getBody(); } private HttpEntity<OllamaRequest> createRequest(String promt) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); OllamaRequest request = new OllamaRequest(ollamaProperties.getModel(), promt, false); return new HttpEntity<>(request, headers); } }

Затем создаем сервис, который будет генерировать наш promt(запрос). В нашем случае мы хотим получить 1 анекдот:

@Service @RequiredArgsConstructor public class OllamaService { private final OllamaClient ollamaClient; public String getJoke() { return ollamaClient.generateByPromt(«Расскажи мне 1 анекдот»).getResponse(); } }

Теперь нужно вызвать метод getJoke, я буду использовать обычный RestController:

@RestController @RequiredArgsConstructor public class OllamaController { private final OllamaService ollamaService; @PostMapping(«/generate/joke») public String generateJoke() { return ollamaService.getJoke(); } }

Ну что же, теперь нам с вами остается только проверить всю картинку целиком, в Postman отправляем запрос:

С юмором у ollama пока проблемки, но с другими задачи она справляется на ура!

Итог

Сегодня мы посмотрели, как интегрировать LLM в Java или Kotlin-приложение. Этот подход универсален и работает с любым языком программирования, а для примера мы выбрали Java. С помощью Ollama можно решать разные задачи — от автоответчиков до поиска нужной информации.

Всем спасибо за внимание, хорошего дня!

Источник: habr.com

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Архив рубрики ~Коротко из Telegram~ Кажется, ИИ всё глубже проникает в самые «нецифровые» отрасли. В… Архив рубрики ~Коротко из Telegram~ Роботов научат отрабатывать навыки в цифровой копии реального мира —… Архив рубрики ~Коротко из Telegram~ Нашли способ сэкономить ~20к рублей на подписке. Идеально для тех,… Архив рубрики ~Коротко из Telegram~ Claude Code научился искать и исправлять уязвимости Anthropic представила Claude… Архив рубрики ~Полезное~ Я ЗАБЫЛ ПРО ГРОК, А ОН ЕСТЬ xAI официально завершила… Архив рубрики ~Коротко из Telegram~ В Италии зафиксировали первый официальный случай «зависимости от ИИ»… Новости робототехники «Момент ChatGPT» для роботов: глава Unitree Robotics предрек прорыв уже через 2-3 года Архив рубрики ~Коротко из Telegram~ Перед вами рендер предстоящего смартфона OPPO, предположительно, новинка будет иметь… Архив рубрики ~Коротко из Telegram~ Индия пытается удалить мессенджер, который лишает правительство главного оружия против… Архив рубрики ~Коротко из Telegram~ Moonshot AI выпустит веса Kimi K3 27 июля Moonshot AI… Архив рубрики ~Коротко из Telegram~ SenseTime открыла SenseNova-Vision — CV-модель, которая всё делает через генерацию… Архив рубрики ~Коротко из Telegram~ В 1986-м учителя боялись калькуляторов. Звучит знакомо В апреле 1986… Архив рубрики ~Коротко из Telegram~ Пекин готовит экономику ИИ-агентов Власти Пекина утвердили стратегию внедрения и… Новости робототехники Magmotor производит двигатели для меняющегося мира уже более 150 лет Архив рубрики ~Коротко из Telegram~ Кажется, ИИ всё глубже проникает в самые «нецифровые» отрасли. В… Архив рубрики ~Коротко из Telegram~ Роботов научат отрабатывать навыки в цифровой копии реального мира —… Архив рубрики ~Коротко из Telegram~ Нашли способ сэкономить ~20к рублей на подписке. Идеально для тех,… Архив рубрики ~Коротко из Telegram~ Claude Code научился искать и исправлять уязвимости Anthropic представила Claude… Архив рубрики ~Полезное~ Я ЗАБЫЛ ПРО ГРОК, А ОН ЕСТЬ xAI официально завершила… Архив рубрики ~Коротко из Telegram~ В Италии зафиксировали первый официальный случай «зависимости от ИИ»… Новости робототехники «Момент ChatGPT» для роботов: глава Unitree Robotics предрек прорыв уже через 2-3 года Архив рубрики ~Коротко из Telegram~ Перед вами рендер предстоящего смартфона OPPO, предположительно, новинка будет иметь… Архив рубрики ~Коротко из Telegram~ Индия пытается удалить мессенджер, который лишает правительство главного оружия против… Архив рубрики ~Коротко из Telegram~ Moonshot AI выпустит веса Kimi K3 27 июля Moonshot AI… Архив рубрики ~Коротко из Telegram~ SenseTime открыла SenseNova-Vision — CV-модель, которая всё делает через генерацию… Архив рубрики ~Коротко из Telegram~ В 1986-м учителя боялись калькуляторов. Звучит знакомо В апреле 1986… Архив рубрики ~Коротко из Telegram~ Пекин готовит экономику ИИ-агентов Власти Пекина утвердили стратегию внедрения и… Новости робототехники Magmotor производит двигатели для меняющегося мира уже более 150 лет