LangchainのJavaバージョン、BigdataにLLMを強化します。
これは、主にJavaスタック内のビッグデータドメイン内のLLMの領域へのブリッジとして機能します。 
興味があれば、WeChat:Hamawhiteに私を追加するか、私にメールを送ることができます。
これは、LangchainのJava言語実装であり、LLM駆動のアプリケーションをできるだけ簡単に開発できます。 
Langchain-Exampleの次の例。
APIドキュメントは、次のリンクで入手できます。
https://hamawhitegg.github.io/langchain-java
建物の前提条件:
< dependency >
< groupId >io.github.hamawhitegg</ groupId >
< artifactId >langchain-core</ artifactId >
< version >0.2.1</ version >
</ dependency >Langchainを使用するには、通常、1つ以上のモデルプロバイダー、データストア、APIなどとの統合が必要です。この例では、OpenaiのAPIを使用します。
その後、環境変数を設定する必要があります。
export OPENAI_API_KEY=xxx
# If a proxy is needed, set the OPENAI_PROXY environment variable.
export OPENAI_PROXY=http://host:portAPIキーとプロキシを動的に設定する場合は、OpenAIクラスを開始するときにOpenAiapikeyおよびOpenaiproxyパラメーターを使用できます。
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.モデルとプロンプトのテンプレートができたので、2つを組み合わせたいと思います。チェーンは、モデル、プロンプト、その他のチェーンなどの複数のプリミティブをリンク(またはチェーン)する方法を提供します。
最も単純で最も一般的なタイプのチェーンはLLMChainです。これは、最初に入力をプロンプトテンプレートに、次に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 FunLLMChain 、チャットモデルでも使用できます。
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は、自然言語を使用して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=xxx2021年を超えてOpenaiの知識を強化し、検索および電卓ツールを使用して計算能力を拡大します。 
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このプロジェクトでは、Sotlessを使用してコードをフォーマットします。変更を行った場合は、次のコマンドを使用してコードをフォーマットすることを忘れないでください。
# export JAVA_HOME=JDK17_INSTALL_HOME && mvn spotless:apply
mvn spotless:apply尋ねることを躊躇しないでください!
Langchain-Javaでバグが見つかった場合は問題を開きます。
プロジェクトがあなたに役立つなら、あなたは私を一杯のコーヒーに連れて行くことができます。 
これはWeChat感謝コードです。