LangChain4j
JVM 에서 언어 모델 애플리케이션을 만드는 자바 라이브러리
implementation 'dev.langchain4j:langchain4j:1.20.0'제공자와 벡터 저장소마다 다른 API 를 하나로 덮습니다. 20개 넘는 언어 모델 제공자와 30개 넘는 임베딩 저장소를 같은 방식으로 다루므로 바꿔 볼 때 코드를 다시 쓰지 않습니다. 프롬프트 템플릿과 대화 기억 관리, 함수 호출 같은 낮은 층부터 에이전트와 RAG 같은 높은 층까지 도구가 갖춰져 있습니다. 이름과 달리 파이썬 랭체인을 옮긴 것이 아니라 자바 관습 위에서 처음부터 만든 라이브러리입니다. 타입 안전성과 애너테이션, 의존성 주입, 유창한 API 를 그대로 씁니다. 쿼커스와 스프링 부트, 헬리돈, 마이크로너트와 곧바로 붙습니다.
판단
이럴 때 씁니다
- 기존 자바 서비스에 언어 모델을 붙일 때
- 제공자나 벡터 저장소를 바꿔 볼 계획일 때
- 스프링 부트나 쿼커스와 함께 써야 할 때
이럴 땐 쓰지 마세요
- 파이썬 생태계 예제를 그대로 쓰려면 맞지 않습니다
- 일부 기능은 아직 실험 단계입니다
- JVM 밖에서는 쓸 수 없습니다
차별점
- 20개 넘는 제공자와 30개 넘는 임베딩 저장소를 하나의 API 로 덮습니다.
- 자바 관습 위에서 처음부터 설계했습니다.
- 쿼커스와 스프링 부트, 헬리돈, 마이크로너트와 곧바로 붙습니다.
- 판과 내부 구조가 파이썬 랭체인과 독립적으로 움직입니다.
워크플로
- 01의존성을 추가합니다.
- 02쓸 제공자 모듈을 붙입니다.
- 03AI 서비스 인터페이스를 정의합니다.
- 04도구 호출과 기억을 붙입니다.
- 05RAG 가 필요하면 임베딩 저장소를 연결합니다.
주요 명령
| 명령 | 설명 |
|---|---|
implementation 'dev.langchain4j:langchain4j:1.20.0' | 핵심 모듈을 추가합니다. |
implementation 'dev.langchain4j:langchain4j-open-ai' | 쓸 제공자 모듈을 따로 붙입니다. |
함정
설치 전에 확인하세요
- 핵심 모듈만으로는 제공자가 붙지 않습니다. 쓸 제공자 모듈을 따로 추가해야 합니다.
- 이름과 달리 파이썬 랭체인의 이식판이 아닙니다. 그쪽 예제를 그대로 옮기면 맞지 않습니다.
- 판이 활발히 오릅니다. 실험 표시가 붙은 기능은 규격이 바뀔 수 있습니다.
- 제공자와 저장소가 각각 별도 모듈이라 의존성 목록이 길어집니다.
비교
자바에서 언어 모델을 쓰려면 제공자마다 HTTP 클라이언트를 직접 짜는 경우가 많습니다. 이쪽은 그 계층을 덮고 기업 자바 프레임워크와의 연결까지 제공합니다. 대신 파이썬 쪽 최신 기법이 늦게 들어오는 경우가 있습니다.
최근 변경
비차단 방식 지원이 들어갔습니다. 예전에는 서비스 메서드 하나가 모델 호출과 도구 실행, 기억 입출력이 끝날 때까지 스레드를 붙잡고 있었습니다. 이제 미래값을 돌려주고 스레드를 놓을 수 있습니다.