Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+1 487новых вакансий за сутки·92 551вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании7 220
РезюмеAIПодготовкаСтатьи
BoostТарифыBoost
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 402 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python17 105
  • Облачные технологии14 073
  • QA вакансии3 460
  • Backend вакансии2 098
  • Инженер данных1 805
  • Продакт-менеджер1 266

Разработка

  • Android1 866
  • iOS1 699
  • Fullstack вакансии979
  • AI вакансии951
  • Frontend вакансии742
  • Mobile вакансии44

По стеку

  • Go8 651
  • Java6 544
  • Node.js2 018
  • .NET1 719
  • Kotlin1 623
  • Rust1 453
  • C#709
  • PHP683
  • C++571

DevOps и инфраструктура

  • Kubernetes7 763
  • DevOps вакансии6 057
  • Linux-инфраструктура5 492
  • Terraform / IaC4 261
  • CI/CD3 240
  • Мониторинг и Observability1 783
  • SRE566
  • Кибербезопасность453

Аналитика и данные

  • Data Scientist1 140
  • Бизнес-аналитик930
  • Аналитик данных853
  • Системный аналитик154

Другие направления

  • Проджект-менеджер615
  • UI/UX дизайн146
  • Ручное тестирование14

По регионам

  • Вакансии в США43 685
  • Вакансии в Европе23 862
  • Вакансии в Канаде4 413
  • Работа в России3 909

По формату

  • Удалённые вакансии73 887
  • Релокация в США43 685
  • Гибридная работа12 392
  • Офисная работа7 088

По уровню

  • Senior вакансии42 236
  • Middle вакансии20 545
  • Junior вакансии6 653

Сейчас нанимают

Все компании
  • Wise190 вакансий
  • Rakuten189 вакансий
  • ASML166 вакансий
  • Grab138 вакансий
  • Celonis39 вакансий
  • Spotify36 вакансий
  • Adyen29 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace16 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме QuarkusВсе вопросы
QuarkusMiddleТеория

Что такое интеграция Quarkus с LangChain4j и как она поддерживает работу с AI-моделями?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

quarkus-langchain4j интегрирует LangChain4j в CDI-контекст Quarkus: AI-сервисы объявляются через @RegisterAiService-интерфейсы, провайдер (OpenAI, Ollama и др.) настраивается в application.properties, поддерживаются ChatMemory, RAG и Tool Calling.

Зависимости (Maven)

<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-openai</artifactId>
  <version>0.20.0</version>
</dependency>
<!-- Для Ollama (локально): -->
<dependency>
  <groupId>io.quarkiverse.langchain4j</groupId>
  <artifactId>quarkus-langchain4j-ollama</artifactId>
  <version>0.20.0</version>
</dependency>

Quarkus LangChain4j

quarkus-langchain4j — расширение, интегрирующее библиотеку LangChain4j в Quarkus CDI-контекст. Позволяет декларативно описывать AI-сервисы как CDI-бины, абстрагируя провайдер (OpenAI, Azure OpenAI, Ollama, Hugging Face и др.).

Конфигурация

# application.properties
quarkus.langchain4j.openai.api-key=${OPENAI_API_KEY}
quarkus.langchain4j.openai.chat-model.model-name=gpt-4o-mini
quarkus.langchain4j.openai.chat-model.temperature=0.3
quarkus.langchain4j.openai.timeout=30s
quarkus.langchain4j.log-requests=true
quarkus.langchain4j.log-responses=true

Декларативный AI-сервис

import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import io.quarkiverse.langchain4j.RegisterAiService;

@RegisterAiService
public interface ReviewAnalyzer {

    @SystemMessage("Ты — аналитик отзывов клиентов. Отвечай кратко на русском языке.")
    @UserMessage("Определи тональность отзыва: {review}. Ответь одним словом: positive/negative/neutral.")
    String analyzeSentiment(String review);
}

// Использование в ресурсе:
@Path("/reviews")
public class ReviewResource {
    @Inject ReviewAnalyzer analyzer;

    @POST
    public String analyze(String text) {
        return analyzer.analyzeSentiment(text);
    }
}

Чат с памятью (ChatMemory)

@RegisterAiService(chatMemoryProviderSupplier = RegisterAiService.BeanChatMemoryProviderSupplier.class)
public interface AssistantService {
    String chat(@MemoryId String userId, @UserMessage String message);
}

// Bean для хранения истории:
@ApplicationScoped
public class MemoryProvider implements ChatMemoryProvider {
    private final Map<String, ChatMemory> memories = new ConcurrentHashMap<>();

    @Override
    public ChatMemory get(Object memoryId) {
        return memories.computeIfAbsent(
            memoryId.toString(),
            id -> MessageWindowChatMemory.withMaxMessages(20)
        );
    }
}

RAG (Retrieval-Augmented Generation)

// Встроенное хранилище (dev/test)
@Inject EmbeddingStore<TextSegment> store;
@Inject EmbeddingModel embeddingModel;

public void ingestDocument(String text) {
    List<TextSegment> segments = new DocumentByParagraphSplitter(500, 50).split(
        Document.from(text)
    );
    List<Embedding> embeddings = embeddingModel.embedAll(segments).content();
    store.addAll(embeddings, segments);
}

// AI-сервис с retriever
@RegisterAiService(retrieverSupplier = RegisterAiService.BeanRetrieverSupplier.class)
public interface KnowledgeBot {
    String answer(@UserMessage String question);
}

Инструменты (Tool Calling)

@ApplicationScoped
public class WeatherTool {
    @Tool("Get current weather for a city")
    public String getWeather(String city) {
        return weatherApi.fetch(city); // реальный HTTP-вызов
    }
}

// AI-сервис автоматически получает инструмент через CDI
@RegisterAiService(tools = WeatherTool.class)
public interface WeatherBot {
    String chat(@UserMessage String message);
}

Подводные камни

  • В native-сборке модели, использующие рефлексию для десериализации JSON (structured output), требуют @RegisterForReflection на DTO-классах.
  • @RegisterAiService создаёт прокси через CDI — нельзя вызывать методы AI-сервиса из того же бина без инжекции (self-invocation не перехватывается).
  • Память (ChatMemory) по умолчанию in-memory — при перезапуске теряется; для production нужен Redis или DB-бэкенд.
  • Стриминг ответов (Multi<String>) требует Reactive-пути; смешивание с блокирующим кодом вызывает дедлок на IO-треде.
  • Токены тарифицируются за каждый запрос — без лимита MessageWindowChatMemory история растёт бесконечно и увеличивает стоимость.
  • quarkus.langchain4j.log-requests=true в production логирует чувствительные данные — отключить перед деплоем.
  • Версии quarkus-langchain4j и LangChain4j-core должны совпадать: используйте BOM quarkus-langchain4j-bom для согласованности.
  • Dev Services для Ollama стартуют Docker-контейнер автоматически в dev-режиме — убедитесь, что Docker доступен в CI.

Частые вопросы на собеседовании

  • Как Quarkus достигает быстрого времени запуска и низкого потребления памяти?
  • Что такое Quarkus и какие проблемы он решает по сравнению с традиционными Java-фреймворками?
  • Как Quarkus поддерживает разработку RESTful API с помощью RESTEasy Reactive?
  • В чём разница между JVM-режимом и native-режимом Quarkus?

Типичные ошибки

  • Путать термин «quarkus langchain4j» с соседним механизмом Quarkus.
  • Не называть границу lifecycle, transaction, thread или request для «quarkus langchain4j».
  • Игнорировать production-эффекты «quarkus langchain4j»: latency, SQL shape, memory, security или observability.

Что проверяет интервьюер

  • Попросить объяснить механизм «quarkus langchain4j» на минимальном примере.
  • Проверить, видит ли кандидат failure mode и диагностику для «quarkus langchain4j».
  • Уточнить, какие настройки или API меняют «quarkus langchain4j» в реальном сервисе.

Как вы знаете этот вопрос?

Проверить себя по теме Quarkus →

Источники

  • https://docs.quarkiverse.io/quarkus-langchain4j/dev/index.html

Связанные темы

Quarkusbackend-designtechnical-communication