「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Spring BootとLangchainでJlama Libraryを探索してください

Spring BootとLangchainでJlama Libraryを探索してください

2025-04-17に投稿されました
ブラウズ:124

Explorando a Biblioteca JLama com Spring Boot e LangChain

大規模な言語モデル(LLM)は、ソフトウェア開発を含むさまざまな分野を変換しています。 テキスト(およびその他のデータ型)を理解して生成する能力により、テキストプロンプトからのコード提案、修正、さらには生成が可能になります。この記事では、LLMをJavaエコシステムに統合するためのJavaベースのソリューションである Jlama ライブラリを調査します。 Jlamaは、コマンドラインインターフェイス(CLI)として、またはプロジェクトの依存関係として使用可能な柔軟性を提供します(例: pom.xml )。 spring boot application。

と統合することにより、その機能を実証します。

前提条件とハイライト

Jlamaは、Java Vector APIを使用しているため、 20以上を必要とします。 既存の langchain ユーザーはJlamaと統合でき、Langchainのツールをレバレッジして、単純化したLLM相互作用を活用します。

この例プロジェクトには、プロンプトを介してLLMと対話する2つのエンドポイントがあります。

  • jlamaのみのエンドポイント。
  • LangchainとJlamaの組み合わせエンドポイント。

プロジェクト実装

jlama endpoint

このエンドポイントは、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 Endpoint

このエンドポイントはLangchainを使用して、Jlamaインタラクションに必要なコードを減らします。

@PostMapping("/langchain")
public ResponseEntity chatLangChain(@RequestBody ChatPromptRequest request) {
    var model = JlamaChatModel.builder()
            .modelName("meta-llama/Llama-3.2-1B")
            .temperature(0.7f)
            .build();

    var promptResponse = model.generate(
                    SystemMessage.from("You are a helpful chatbot providing the shortest possible response."),
                    UserMessage.from(request.prompt()))
            .content()
            .text();

    System.out.println("\n"   promptResponse   "\n");

    return ResponseEntity.ok(promptResponse);
}

Langchainは、ビルダー内でモデルとパラメーターを直接定義することにより、実装を簡素化します。

リンクと参照

このプロジェクトは、ソウハヴァでのイシドロ教授のプレゼンテーションに触発されました。 [プレゼンテーションへのリンク(利用可能な場合は実際のリンクと交換)]

有用なドキュメント:

  • jlama on github [Jlamagithubへのリンク(実際のリンクに置き換え)]
  • langchain [langchainドキュメントへのリンク(実際のリンクに置き換え)]

結論

JlamaとLangchainは、LLMをJavaアプリケーションに統合する強力な方法を提供します。この記事では、Spring Bootでこれらのツールを構成および使用して、効率的なテキストプロンプト処理エンドポイントを作成する方法を示しました。

JavaプロジェクトでLLMSと協力したことがありますか?コメントであなたの経験と洞察を共有してください!

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3