Java -Version von Langchain, während BigData LLM ermächtigt.
Es dient als Brücke zum Bereich von LLM innerhalb der Big Data -Domäne, hauptsächlich im Java -Stack.
Wenn Sie interessiert sind, können Sie mich zu WeChat: Hamawhite hinzufügen oder eine E -Mail an mich senden.
Dies ist die Implementierung von Langchain Java-Sprache, die es so einfach wie möglich macht, LLM-Anträge zu entwickeln.
Das folgende Beispiel im Langchain-Beispiel.
Die API -Dokumentation ist unter dem folgenden Link verfügbar:
https://hamawhitgg.github.io/langchain-java
Voraussetzungen für den Bau:
< dependency >
< groupId >io.github.hamawhitegg</ groupId >
< artifactId >langchain-core</ artifactId >
< version >0.2.1</ version >
</ dependency >
Die Verwendung von Langchain erfordert normalerweise Integrationen mit einem oder mehreren Modellanbietern, Datenspeichern, APIs usw. Für dieses Beispiel werden wir die APIs von OpenAI verwenden.
Wir müssen dann die Umgebungsvariable festlegen.
export OPENAI_API_KEY=xxx
# If a proxy is needed, set the OPENAI_PROXY environment variable.
export OPENAI_PROXY=http://host:port
Wenn Sie den API -Schlüssel und den Proxy dynamisch festlegen möchten, können Sie den Parameter OpenAiAPIKEY und OpenAiproxy bei der Initiierung der OpenAI -Klasse verwenden.
var llm = OpenAI . builder ()
. openaiOrganization ( "xxx" )
. openaiApiKey ( "xxx" )
. openaiProxy ( "http://host:port" )
. requestTimeout ( 16 )
. build ()
. init ();
Holen Sie sich Vorhersagen aus einem Sprachmodell. Der grundlegende Baustein von Langchain ist der LLM, der Text einnimmt und mehr Text generiert.
OpenAI -Beispiel
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 );
Und jetzt können wir Text übergeben und Vorhersagen erhalten!
Feetful of Fun
Chat -Modelle sind eine Variation von Sprachmodellen. Während Chat -Modelle Sprachmodelle unter der Motorhaube verwenden, ist die von ihnen freigelegte Schnittstelle etwas anders: Anstatt einen "Text in, text out" -API freizulegen, enthüllen sie eine Schnittstelle, in der "Chat -Nachrichten" die Eingänge und Ausgänge sind.
OpenAI -Chat -Beispiel
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={}}
Es ist nützlich zu verstehen, wie sich Chat -Modelle von einem normalen LLM unterscheiden, aber es kann oft praktisch sein, sie einfach gleich behandeln zu können. Langchain macht das einfach, indem Sie auch eine Schnittstelle freilegen, über die Sie mit einem Chat -Modell wie ein normaler LLM interagieren können. Sie können dies über die predict
-Schnittstelle zugreifen.
var output = chat . predict ( "Translate this sentence from English to French. I love programming." );
println ( output );
J ' adore la programmation.
Nachdem wir ein Modell und eine schnelle Vorlage haben, möchten wir die beiden kombinieren. Ketten geben uns eine Möglichkeit, mehrere Primitive miteinander zu verbinden (oder zu ketten), z. B. Modelle, Eingabeaufforderungen und andere Ketten.
Die einfachste und häufigste Art der Kette ist eine LLMchain, die zuerst einen Eingang an eine Eingabeaufforderung und dann an einen LLM übergibt. Wir können eine LLM -Kette aus unserem vorhandenen Modell und einer schnellen Vorlage erstellen.
Beispiel für LLM -Ketten
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
Die LLMChain
kann auch mit Chat -Modellen verwendet werden:
Beispiel für LLM -Chat -Kette
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 ermöglichen es, mit natürlichen Sprache mit SQL -Datenbanken zu interagieren, und Langchain bietet SQL -Ketten an, um SQL -Abfragen basierend auf natürlichen Sprachanforderungen zu erstellen und auszuführen.
Beispiel für SQL -Kette
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.
Die verfügbaren Sprachen sind wie folgt.
Sprache | Wert |
---|---|
Englisch (Standard) | en_us |
Portugiesisch (Brasilien) | pt_br |
Wenn Sie stattdessen eine andere Sprache wählen möchten, stellen Sie einfach die Umgebungsvariable auf Ihrem Host fest. Wenn Sie nicht festgelegt sind, ist en-us standardmäßig
export USE_LANGUAGE=pt_BR
Unsere erste Kette führte eine vorbestimmte Abfolge von Schritten aus. Um komplexe Workflows zu verarbeiten, müssen wir in der Lage sein, Aktionen basierend auf Eingaben dynamisch auszuwählen.
Den Agenten tun genau diese: Sie verwenden ein Sprachmodell, um zu bestimmen, welche Aktionen und in welcher Reihenfolge ergriffen werden sollen. Agenten erhalten Zugriff auf Tools und wählen wiederholt ein Werkzeug aus, führen das Werkzeug aus und beobachten die Ausgabe, bis sie eine endgültige Antwort erhalten.
Stellen Sie die entsprechenden Umgebungsvariablen ein.
export SERPAPI_API_KEY=xxx
Um das Wissen von OpenAI über 2021 hinaus und die Rechenfähigkeiten durch die Verwendung der Such- und Taschenrechner -Tools zu erweitern.
Beispiel für Google Search Agent
// 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
Dieses Projekt verwendet makellos den Code. Wenn Sie Änderungen vornehmen, denken Sie bitte daran, den Code mit dem folgenden Befehl zu formatieren.
# export JAVA_HOME=JDK17_INSTALL_HOME && mvn spotless:apply
mvn spotless:apply
Zögern Sie nicht zu fragen!
Öffnen Sie ein Problem, wenn Sie in Langchain-Java einen Fehler finden.
Wenn das Projekt für Sie hilfreich war, können Sie mich mit einer Tasse Kaffee gönnen.
Dies ist ein WeChat -Wertschätzungscode.