"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > استكشف مكتبة Jlama مع SPRING BOOT و LANGCHAIN

استكشف مكتبة Jlama مع SPRING BOOT و LANGCHAIN

نشر في 2025-04-17
تصفح:837

Explorando a Biblioteca JLama com Spring Boot e LangChain

تقوم نماذج اللغة الكبيرة (LLMS) بتحويل الحقول المختلفة ، بما في ذلك تطوير البرمجيات. تتيح قدرتهم على فهم وإنشاء النص (وأنواع البيانات الأخرى) اقتراح الكود ، والتصحيح ، وحتى التوليد من المطالبات النصية. تستكشف هذه المقالة مكتبة Jlama ، وهو حل قائم على Java لدمج LLMs في النظام البيئي Java. يوفر Jlama المرونة ، قابلة للاستخدام كواجهة سطر الأوامر (CLI) أو كاعتماد في مشاريعك (على سبيل المثال ، عبر pom.xml ). سنقوم بإظهار وظائفها من خلال دمجها مع تطبيق

المتطلبات الأساسية والأبرز

يتطلب jlama

java 20 أو أعلى

بسبب استخدامه لواجهة واجهة برمجة تطبيقات Java Vector. يمكن للمستخدمين الموجودين Langchain دمجها مع Jlama ، والاستفادة من أدوات Langchain للتفاعل LLM المبسط. يتميز هذا المثال بمشروع نقطتين يتفاعلان مع LLMs من خلال مطالبات:

نقطة نهاية jlama فقط.
  • a langchain و jlama combined point.
تنفيذ المشروع

Jlama Endpoint

تستخدم نقطة النهاية هذه مباشرة Jlama لإنشاء ردود بناءً على مطالبات المستخدم.

@postmapping ("/jlama") // نقطة النهاية لوظيفة دردشة Jlama الاستجابة العامة chatjlama (requestbody chatpromptrequest طلب) { السياق orderContext ؛ if (AbstractModel.PromptSupport (). ispresent ()) { السياق = AbstractModel.PromptSupport () .يحصل() .builder () .DdSystemMessage ("أنت chatbot مفيدة تقدم إجابات موجزة.") .eddusermessage (request.prompt ()) .يبني()؛ } آخر { Context = promprontext.of (request.prompt ()) ؛ } system.out.println ("proper:" context.getPrompt () "\ n") ؛ مولد. استجابة الاستجابة = AbstractModel .generate (uuid.randomuuid () ، context ، 0.0f ، 256 ، (s ، f) -> {}) ؛ System.out.println (reponse.Responsetext) ؛ Return Responseentity.ok (chatpromptsponse الجديد (reponse.Responsetext)) ؛ }
@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));
}

// تحديد النموذج والدليل للتنزيل (إذا لزم الأمر) من وجه المعانقة نموذج السلسلة = "tjake/llama-3.2-1b-instruct-jq4" ؛ سلسلة workdirectory = "./models" ؛ // التنزيل (إذا لزم الأمر) أو استرداد النموذج محليًا ملف localModelPath = تنزيل جديد (WorkDirectory ، Model) .huggingFaceModel () ؛ // تحميل النموذج modelsupport.loadModel (localModelPath ، dtype.f32 ، dtype.i8) ؛
// 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") استجابة عامة chatlangchain (طلب requestbody chatpromptrequest) { var model = jlamachatmodel.builder () .modelName ("Meta-llama/llama-3.2-1b") . درجة الحرارة (0.7F) .يبني()؛ var promptreSponse = model.generate ( SystemMessage.from ("أنت chatbot مفيدة توفر أقصر استجابة ممكنة.") ، usermessage.from (request.prompt ())) .محتوى() .نص()؛ System.out.println ("\ n" promptResponse "\ n") ؛ Return Responseentity.ok (promptResponse) ؛ }
@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);
}

الروابط والمراجع

استلهم هذا المشروع من عرض البروفيسور إيسيدرو في سوجافا. [رابط إلى العرض التقديمي (استبدل برابط فعلي إذا كان متاحًا)]

وثائق مفيدة:

jlama on github [رابط إلى jlama github (استبدل برابط فعلي)]
  • langchain [رابط إلى وثائق Langchain (استبدل برابط فعلي)]
خاتمة

يوفر Jlama و Langchain طريقة قوية لدمج LLMs في تطبيقات Java. أوضحت هذه المقالة كيفية تكوين هذه الأدوات واستخدامها باستخدام Boot SPRING لإنشاء نقاط نهاية معالجة نصي فعالة.

هل عملت مع LLMS في مشاريع Java؟ شارك خبراتك ورؤيتك في التعليقات!

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3