대형 언어 모델 (LLM)은 소프트웨어 개발을 포함한 다양한 분야를 변환하고 있습니다. 텍스트 (및 기타 데이터 유형)를 이해하고 생성하는 능력은 코드 제안, 수정 및 텍스트 프롬프트에서 생성을 가능하게합니다. 이 기사는 LLM을 Java 생태계에 통합하기위한 Java 기반 솔루션 인 jlama 라이브러리를 탐구합니다. JLAMA는 명령 줄 인터페이스 (CLI) 또는 프로젝트의 종속성 (예 : pom.xml
)로 유연성을 제공합니다. 스프링 부츠 응용 프로그램과 통합하여 기능을 시연합니다.
전제 조건 및 하이라이트
jlama는 Java Vector API의 사용으로 인해 Java 20 이상 가 필요합니다. 기존 langchain 사용자는 JLAMA와 통합하여 Langchain의 도구를 단순화 된 LLM 상호 작용을 활용할 수 있습니다.
이 예제 프로젝트에는 프롬프트를 통해 LLMS와 상호 작용하는 두 가지 엔드 포인트가 있습니다.
프로젝트 구현
이 엔드 포인트는 JLAMA를 직접 사용하여 사용자 프롬프트를 기반으로 응답을 생성합니다.
@PostMapping("/jlama") // Endpoint for JLama chat functionality
public ResponseEntity chatJlama(@RequestBody ChatPromptRequest request) {
PromptContext context;
if (abstractModel.promptSupport().isPresent()) {
context = abstractModel.promptSupport()
.get()
.builder()
.addSystemMessage("You are a helpful chatbot providing concise answers.")
.addUserMessage(request.prompt())
.build();
} else {
context = PromptContext.of(request.prompt());
}
System.out.println("Prompt: " context.getPrompt() "\n");
Generator.Response response = abstractModel
.generate(UUID.randomUUID(), context, 0.0f, 256, (s, f) -> {});
System.out.println(response.responseText);
return ResponseEntity.ok(new ChatPromptResponse(response.responseText));
}
원하는 모델이 정의됩니다. 로컬로 사용하지 않으면 지정된 디렉토리로 자동 다운로드됩니다. 신속한 컨텍스트가 생성되고 Jlama는 응답을 생성합니다.
// Defining the model and directory for downloading (if needed) from Hugging Face
String model = "tjake/Llama-3.2-1B-Instruct-JQ4";
String workingDirectory = "./models";
// Downloading (if necessary) or retrieving the model locally
File localModelPath = new Downloader(workingDirectory, model).huggingFaceModel();
// Loading the model
ModelSupport.loadModel(localModelPath, DType.F32, DType.I8);
이 엔드 포인트는 langchain을 사용하여 jlama 상호 작용에 필요한 코드를 줄입니다.
@PostMapping("/langchain")
public ResponseEntity
Langchain은 빌더 내에서 직접 모델과 매개 변수를 정의하여 구현을 단순화합니다.
링크 및 참조
이 프로젝트는 Soujava에서 Isidro 교수의 프레젠테이션에서 영감을 받았습니다. [프레젠테이션 링크 (사용 가능한 경우 실제 링크로 바꾸기)]
유용한 문서 :
결론
Jlama와 Langchain은 LLM을 Java 응용 프로그램에 통합하는 강력한 방법을 제공합니다. 이 기사는 Spring Boot를 사용하여 이러한 도구를 구성하고 사용하여 효율적인 텍스트 프롬프트 처리 엔드 포인트를 작성하는 방법을 보여주었습니다.
Java 프로젝트에서 LLMS와 함께 일 했습니까? 의견에 귀하의 경험과 통찰력을 공유하십시오!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3