نسخة Java من Langchain ، مع تمكين LLM ل BigData.
إنه بمثابة جسر لعالم LLM ضمن مجال البيانات الضخمة ، في المقام الأول في مكدس Java.
إذا كنت مهتمًا ، فيمكنك إضافتي على WeChat: Hamawhite ، أو إرسال بريد إلكتروني إلي.
هذا هو تنفيذ لغة Java لـ Langchain ، مما يجعل من السهل تطوير تطبيقات ذات قوة LLM.
المثال التالي في مثال Langchain.
تتوفر وثائق API على الرابط التالي:
https://hamawhitegg.github.io/langchain-java
المتطلبات الأساسية للبناء:
< dependency >
< groupId >io.github.hamawhitegg</ groupId >
< artifactId >langchain-core</ artifactId >
< version >0.2.1</ version >
</ dependency >
عادةً ما يتطلب استخدام Langchain تكاملًا مع واحد أو أكثر من مزودي النماذج ، ومتاجر البيانات ، وواجهة برمجة التطبيقات ، وما إلى ذلك ، سنستخدم واجهات برمجة تطبيقات Openai.
سنحتاج بعد ذلك إلى ضبط متغير البيئة.
export OPENAI_API_KEY=xxx
# If a proxy is needed, set the OPENAI_PROXY environment variable.
export OPENAI_PROXY=http://host:port
إذا كنت ترغب في تعيين مفتاح API والوكالة ديناميكيًا ، فيمكنك استخدام معلمة OpenAiapikey و Openaiproxy عند بدء فئة Openai.
var llm = OpenAI . builder ()
. openaiOrganization ( "xxx" )
. openaiApiKey ( "xxx" )
. openaiProxy ( "http://host:port" )
. requestTimeout ( 16 )
. build ()
. init ();
احصل على تنبؤات من نموذج اللغة. لبنة البناء الأساسية لـ Langchain هي LLM ، التي تأخذ النص وتولد المزيد من النص.
مثال Openai
var llm = OpenAI . builder ()
. temperature ( 0.9f )
. build ()
. init ();
var result = llm . predict ( "What would be a good company name for a company that makes colorful socks?" );
print ( result );
والآن يمكننا أن نمر في النص والحصول على تنبؤات!
Feetful of Fun
نماذج الدردشة هي تباين في نماذج اللغة. على الرغم من أن نماذج الدردشة تستخدم نماذج اللغة أسفل الغطاء ، فإن الواجهة التي تعرضها مختلفة بعض الشيء: بدلاً من فضح "نص في ، نص" API ، فإنها تعرض واجهة حيث "رسائل الدردشة" هي المدخلات والمخرجات.
مثال الدردشة Openai
var chat = ChatOpenAI . builder ()
. temperature ( 0 )
. build ()
. init ();
var result = chat . predictMessages ( List . of ( new HumanMessage ( "Translate this sentence from English to French. I love programming." )));
println ( result );
AIMessage{content= ' J ' adore la programmation. ' , additionalKwargs={}}
من المفيد أن نفهم كيف تختلف نماذج الدردشة عن LLM العادية ، ولكن يمكن أن تكون في كثير من الأحيان مفيدة لتكون قادرة على معاملتها كما هي. يسهل Langchain هذا من خلال فضح واجهة يمكنك من خلالها التفاعل مع نموذج الدردشة كما تفعل مع LLM العادي. يمكنك الوصول إلى هذا من خلال واجهة predict
.
var output = chat . predict ( "Translate this sentence from English to French. I love programming." );
println ( output );
J ' adore la programmation.
الآن بعد أن حصلنا على نموذج وقالب سريع ، سنريد الجمع بين الاثنين. تمنحنا السلاسل وسيلة لربط (أو سلسلة) بين بدائل متعددة ، مثل النماذج والمطالبات والسلاسل الأخرى.
إن أبسط أنواع السلسلة الأكثر شيوعًا والأكثر شيوعًا هي LLMCHAIN ، والتي تمرر إدخالًا أولاً إلى QuorttEmplate ثم إلى LLM. يمكننا بناء سلسلة LLM من نموذجنا الحالي والقالب السريع.
مثال سلسلة LLM
var prompt = PromptTemplate . fromTemplate ( "What is a good name for a company that makes {product}?" );
var chain = new LLMChain ( llm , prompt );
var result = chain . run ( "colorful socks" );
println ( result );
Feetful of Fun
يمكن استخدام LLMChain
مع نماذج الدردشة أيضًا:
مثال سلسلة الدردشة LLM
var template = "You are a helpful assistant that translates {input_language} to {output_language}." ;
var systemMessagePrompt = SystemMessagePromptTemplate . fromTemplate ( template );
var humanMessagePrompt = HumanMessagePromptTemplate . fromTemplate ( "{text}" );
var chatPrompt = ChatPromptTemplate . fromMessages ( List . of ( systemMessagePrompt , humanMessagePrompt ));
var chain = new LLMChain ( chat , chatPrompt );
var result = chain . run ( Map . of ( "input_language" , "English" , "output_language" , "French" , "text" , "I love programming." ));
println ( result );
J ' adore la programmation.
تتيح LLMS التفاعل مع قواعد بيانات SQL باستخدام اللغة الطبيعية ، ويوفر Langchain سلاسل SQL لبناء وتشغيل استعلامات SQL بناءً على مطالبات اللغة الطبيعية.
SQL سلسلة مثال
var database = SQLDatabase . fromUri ( "jdbc:mysql://127.0.0.1:3306/demo" , "xxx" , "xxx" );
var chain = SQLDatabaseChain . fromLLM ( llm , database );
var result = chain . run ( "How many students are there?" );
println ( result );
result = chain . run ( "Who got zero score? Show me her parent's contact information." );
println ( result );
There are 6 students.
The parent of the student who got zero score is Tracy and their contact information is 088124.
اللغات المتاحة هي كما يلي.
لغة | قيمة |
---|---|
اللغة الإنجليزية (افتراضي) | en_us |
البرتغالية (البرازيل) | PT_BR |
إذا كنت ترغب في اختيار لغة أخرى بدلاً من ذلك ، فما عليك سوى تعيين متغير البيئة على مضيفك. إذا لم تقم بتعيين ، فستكون EN-US افتراضية
export USE_LANGUAGE=pt_BR
ركضت السلسلة الأولى لدينا سلسلة محددة مسبقا من الخطوات. للتعامل مع سير العمل المعقدة ، نحتاج إلى أن نكون قادرين على اختيار الإجراءات بناءً على المدخلات.
يقوم الوكلاء بذلك فقط: يستخدمون نموذج لغة لتحديد الإجراءات التي يجب اتخاذها وبأي ترتيب. يتم منح الوكلاء الوصول إلى الأدوات ، ويختارون أداة مرارًا وتكرارًا ، وتشغيل الأداة ، ومراقبة الإخراج حتى يتوصلوا إلى إجابة نهائية.
تعيين متغيرات البيئة المناسبة.
export SERPAPI_API_KEY=xxx
لزيادة معرفة Openai بعد عام 2021 والقدرات الحسابية من خلال استخدام أدوات البحث والآلة الحاسبة.
مثال وكيل بحث Google
// the 'llm-math' tool uses an LLM
var tools = loadTools ( List . of ( "serpapi" , "llm-math" ), llm );
var agent = initializeAgent ( tools , chat , AgentType . CHAT_ZERO_SHOT_REACT_DESCRIPTION );
var query = "How many countries and regions participated in the 2023 Hangzhou Asian Games?" +
"What is that number raised to the .023 power?" ;
agent . run ( query );
git clone https://github.com/HamaWhiteGG/langchain-java.git
cd langchain-java
# export JAVA_HOME=JDK17_INSTALL_HOME && mvn clean test
mvn clean test
يستخدم هذا المشروع نظيفًا لتنسيق الكود. إذا قمت بإجراء أي تعديلات ، يرجى تذكر تنسيق الكود باستخدام الأمر التالي.
# export JAVA_HOME=JDK17_INSTALL_HOME && mvn spotless:apply
mvn spotless:apply
لا تتردد في السؤال!
افتح مشكلة إذا وجدت خطأ في Langchain-Java.
إذا كان المشروع مفيدًا لك ، فيمكنك معاملتي في فنجان من القهوة.
هذا هو رمز تقدير WeChat.