Langchain versi Java, sambil memberdayakan LLM untuk BigData.
Ini berfungsi sebagai jembatan ke ranah LLM di dalam domain Big Data, terutama di tumpukan Java.
Jika Anda tertarik, Anda dapat menambahkan saya di WeChat: Hamawhite, atau mengirim email kepada saya.
Ini adalah implementasi bahasa Java dari Langchain, yang membuatnya semudah mungkin untuk mengembangkan aplikasi bertenaga LLM.
Contoh berikut dalam contoh langchain.
Dokumentasi API tersedia di tautan berikut:
https://hamawhitegg.github.io/langchain-java
Prasyarat untuk membangun:
< dependency >
< groupId >io.github.hamawhitegg</ groupId >
< artifactId >langchain-core</ artifactId >
< version >0.2.1</ version >
</ dependency >
Menggunakan Langchain biasanya akan membutuhkan integrasi dengan satu atau lebih penyedia model, penyimpanan data, API, dll. Sebagai contoh ini, kami akan menggunakan API Openai.
Kita kemudian perlu mengatur variabel lingkungan.
export OPENAI_API_KEY=xxx
# If a proxy is needed, set the OPENAI_PROXY environment variable.
export OPENAI_PROXY=http://host:port
Jika Anda ingin mengatur kunci API dan proxy secara dinamis, Anda dapat menggunakan parameter OpenAaiapey dan OpenAiproxy saat memulai kelas OpenAi.
var llm = OpenAI . builder ()
. openaiOrganization ( "xxx" )
. openaiApiKey ( "xxx" )
. openaiProxy ( "http://host:port" )
. requestTimeout ( 16 )
. build ()
. init ();
Dapatkan prediksi dari model bahasa. Blok bangunan dasar Langchain adalah LLM, yang mengambil teks dan menghasilkan lebih banyak teks.
Contoh 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 );
Dan sekarang kita bisa lulus dalam teks dan mendapatkan prediksi!
Feetful of Fun
Model obrolan adalah variasi pada model bahasa. Sementara model obrolan menggunakan model bahasa di bawah kap, antarmuka yang mereka paparkan sedikit berbeda: daripada mengekspos "teks masuk, teks keluar" API, mereka mengekspos antarmuka di mana "pesan obrolan" adalah input dan output.
Contoh obrolan 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={}}
Sangat berguna untuk memahami bagaimana model obrolan berbeda dari LLM normal, tetapi seringkali bisa berguna untuk hanya dapat memperlakukannya sama. Langchain memudahkan itu dengan mengekspos antarmuka di mana Anda dapat berinteraksi dengan model obrolan seperti halnya LLM normal. Anda dapat mengakses ini melalui antarmuka predict
.
var output = chat . predict ( "Translate this sentence from English to French. I love programming." );
println ( output );
J ' adore la programmation.
Sekarang kita punya model dan template yang cepat, kita ingin menggabungkan keduanya. Rantai memberi kita cara untuk menghubungkan (atau rantai) bersama -sama banyak primitif, seperti model, petunjuk, dan rantai lainnya.
Jenis rantai paling sederhana dan paling umum adalah llmchain, yang melewati input terlebih dahulu ke prompttemplate dan kemudian ke LLM. Kami dapat membangun rantai LLM dari model kami yang ada dan template yang cepat.
Contoh rantai 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
dapat digunakan dengan model obrolan juga:
Contoh rantai obrolan 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.
LLM memungkinkan untuk berinteraksi dengan database SQL menggunakan bahasa alami, dan Langchain menawarkan rantai SQL untuk membangun dan menjalankan kueri SQL berdasarkan petunjuk bahasa alami.
Contoh rantai 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.
Bahasa yang tersedia adalah sebagai berikut.
Bahasa | Nilai |
---|---|
Bahasa Inggris (default) | en_us |
Portugis (Brasil) | PT_BR |
Jika Anda ingin memilih bahasa lain sebagai gantinya bahasa Inggris, cukup atur variabel lingkungan pada host Anda. Jika Anda tidak mengatur, maka en-us akan default
export USE_LANGUAGE=pt_BR
Rantai pertama kami menjalankan urutan langkah yang telah ditentukan sebelumnya. Untuk menangani alur kerja yang kompleks, kita harus dapat secara dinamis memilih tindakan berdasarkan input.
Agen melakukan hal ini: mereka menggunakan model bahasa untuk menentukan tindakan mana yang harus diambil dan dalam urutan apa. Agen diberi akses ke alat, dan mereka berulang kali memilih alat, menjalankan alat, dan mengamati output sampai mereka datang dengan jawaban akhir.
Atur variabel lingkungan yang sesuai.
export SERPAPI_API_KEY=xxx
Untuk menambah pengetahuan Openai di luar 2021 dan kemampuan komputasi melalui penggunaan alat pencarian dan kalkulator.
Contoh Agen Pencarian 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
Proyek ini menggunakan Spotless untuk memformat kode. Jika Anda membuat modifikasi apa pun, harap ingat untuk memformat kode menggunakan perintah berikut.
# export JAVA_HOME=JDK17_INSTALL_HOME && mvn spotless:apply
mvn spotless:apply
Jangan ragu untuk bertanya!
Buka masalah jika Anda menemukan bug di Langchain-Java.
Jika proyek telah membantu Anda, Anda dapat memperlakukan saya dengan secangkir kopi.
Ini adalah kode apresiasi weChat.