大規模な言語モデル(LLM)は、ソフトウェア開発を含むさまざまな分野を変換しています。 テキスト(およびその他のデータ型)を理解して生成する能力により、テキストプロンプトからのコード提案、修正、さらには生成が可能になります。この記事では、LLMをJavaエコシステムに統合するためのJavaベースのソリューションである Jlama ライブラリを調査します。 Jlamaは、コマンドラインインターフェイス(CLI)として、またはプロジェクトの依存関係として使用可能な柔軟性を提供します(例: pom.xml
)。 spring boot application。
前提条件とハイライト
Jlamaは、Java Vector APIを使用しているため、 20以上を必要とします。 既存の langchain ユーザーはJlamaと統合でき、Langchainのツールをレバレッジして、単純化したLLM相互作用を活用します。
この例プロジェクトには、プロンプトを介してLLMと対話する2つのエンドポイントがあります。
プロジェクト実装
このエンドポイントは、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は、ビルダー内でモデルとパラメーターを直接定義することにより、実装を簡素化します。
リンクと参照
このプロジェクトは、ソウハヴァでのイシドロ教授のプレゼンテーションに触発されました。 [プレゼンテーションへのリンク(利用可能な場合は実際のリンクと交換)]
有用なドキュメント:
結論
JlamaとLangchainは、LLMをJavaアプリケーションに統合する強力な方法を提供します。この記事では、Spring Bootでこれらのツールを構成および使用して、効率的なテキストプロンプト処理エンドポイントを作成する方法を示しました。
JavaプロジェクトでLLMSと協力したことがありますか?コメントであなたの経験と洞察を共有してください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3