Categories: Camel프레임워크

[Camel in Action] 19-2. Camel과 AI/LLM 통합 – 지능형 통합 파이프라인 구축

Camel + AI의 가능성

Apache Camel의 강점은 다양한 시스템 통합입니다. 여기에 LLM(Large Language Model)을 연결하면 기존 데이터 파이프라인에 자연어 처리, 분류, 요약 기능을 추가할 수 있습니다. 이메일 자동 분류, 문서 요약, 이상 감지 등 다양한 지능형 통합이 가능합니다.

OpenAI API와 Camel 통합

HTTP 컴포넌트로 OpenAI API를 직접 호출하는 방법입니다.

from("activemq:queue:customer-emails")
  .process(exchange -> {
    String emailContent = exchange.getIn().getBody(String.class);
    String prompt = String.format("""
      다음 고객 이메일을 분석해서 카테고리를 분류해줘.
      카테고리: 불만, 문의, 칭찬, 환불요청
      이메일: %s
      답변은 카테고리 이름만 써줘.
      """, emailContent);
    exchange.getIn().setBody(prompt);
  })
  .setHeader(Exchange.CONTENT_TYPE, constant("application/json"))
  .setHeader("Authorization", simple("Bearer ${env.OPENAI_API_KEY}"))
  .process(exchange -> {
    String prompt = exchange.getIn().getBody(String.class);
    exchange.getIn().setBody(Map.of(
      "model", "gpt-4o-mini",
      "messages", List.of(Map.of("role", "user", "content", prompt))
    ));
  })
  .marshal().json()
  .to("https://api.openai.com/v1/chat/completions?bridgeEndpoint=true")
  .unmarshal().json(JsonNode.class)
  .process(exchange -> {
    JsonNode response = exchange.getIn().getBody(JsonNode.class);
    String category = response.at("/choices/0/message/content").asText();
    exchange.getIn().setHeader("emailCategory", category);
  })
  .toD("activemq:queue:${header.emailCategory}-emails");

LangChain4j Camel 컴포넌트 활용

Camel 4.x의 camel-langchain4j 컴포넌트를 사용하면 더 쉽게 LLM을 통합합니다.

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-langchain4j-chat</artifactId>
</dependency>

// 라우트에서 직접 LLM 호출
from("direct:summarize")
  .to("langchain4j-chat:myModel?chatOperation=CHAT_SINGLE_MESSAGE")
  .log("요약: ${body}");

RAG(Retrieval Augmented Generation) 파이프라인

사내 문서를 기반으로 질문에 답하는 RAG 시스템을 Camel으로 구현합니다.

// 1. 문서 인덱싱 파이프라인
from("file:documents?recursive=true")
  .to("tika:parse")          // 텍스트 추출
  .split(body().tokenize("

")) // 청크 분할
  .to("langchain4j-embeddings:vectorDB") // 벡터 DB에 저장

// 2. 질문 답변 파이프라인
from("direct:askQuestion")
  .to("langchain4j-embeddings:vectorDB?operation=search") // 유사 문서 검색
  .process(exchange -> {
    String question = exchange.getIn().getHeader("question", String.class);
    String context = exchange.getIn().getBody(String.class);
    exchange.getIn().setBody(
      "다음 문서를 참고해서 질문에 답해줘.
문서: " + context + "
질문: " + question);
  })
  .to("langchain4j-chat:gpt4");

이상 감지 파이프라인

로그나 메트릭 데이터에서 이상을 LLM으로 감지하는 패턴입니다.

from("kafka:system-logs")
  .aggregate(constant(true), new GroupedBodyAggregationStrategy())
    .completionTimeout(60000) // 1분간 로그 수집
  .process(exchange -> {
    String logs = exchange.getIn().getBody(String.class);
    exchange.getIn().setBody(
      "다음 시스템 로그에서 이상 징후를 찾아줘. " +
      "이상하면 '이상 감지:' 로 시작하는 설명을, 정상이면 '정상'만 답해줘.
" + logs);
  })
  .to("langchain4j-chat:claude")
  .filter(body().startsWith("이상 감지:"))
    .to("activemq:queue:alerts");

zerg96

Share
Published by
zerg96

Recent Posts

충격! 코스피 8% 폭락에 SK텔레콤 AI 차단까지 – 한국의 AI 도박이 터졌다

코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…

3주 ago

당신 얼굴이 이미 쓰이고 있다… AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

4주 ago

당신 얼굴이 이미 쓰이고 있다 — AI 딥페이크 범죄, 생각보다 훨씬 심각합니다

SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…

4주 ago

달러·원 환율 급등, 지금 당신이 꼭 알아야 할 것들

달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…

4주 ago

미래에셋·미래에셋벤처투자·미래에셋생명 동반 급등, 스페이스X와 무슨 관계?

미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.

4주 ago

스페이스X 상장 D-데이? 일론 머스크가 절대 말 안 하는 진짜 이유

스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…

4주 ago