Langchain เวอร์ชัน Java ในขณะที่เพิ่มขีดความสามารถ 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 มักจะต้องมีการรวมเข้ากับผู้ให้บริการรุ่นหนึ่งหรือมากกว่าหนึ่งรายการที่เก็บข้อมูล API ฯลฯ สำหรับตัวอย่างนี้เราจะใช้ API ของ 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 ซึ่งส่งผ่านอินพุตก่อนไปยัง PromptTemplate แล้วไปที่ 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
โครงการนี้ใช้ Spotless เพื่อจัดรูปแบบรหัส หากคุณทำการแก้ไขใด ๆ โปรดอย่าลืมจัดรูปแบบรหัสโดยใช้คำสั่งต่อไปนี้
# export JAVA_HOME=JDK17_INSTALL_HOME && mvn spotless:apply
mvn spotless:apply
อย่าลังเลที่จะถาม!
เปิดปัญหาหากคุณพบข้อผิดพลาดใน Langchain-Java
หากโครงการมีประโยชน์กับคุณคุณสามารถปฏิบัติต่อฉันได้กับกาแฟสักถ้วย
นี่คือรหัสชื่นชม WeChat