Java версия Langchain, в то же время расширяя возможности LLM для Bigdata.
Он служит мостом к сфере LLM в домене больших данных, в основном в стеке Java.
Если вам интересно, вы можете добавить меня в WeChat: Hamawhite или отправить мне электронное письмо.
Это реализация Java Language Langchain, что делает как можно более простым для разработки приложений LLM.
Следующий пример в Лангчейн-Пример.
Документация 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, который сначала передает вход в приглашение, а затем в 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.
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=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
Не стесняйтесь спрашивать!
Откройте проблему, если вы найдете ошибку в Лангхейн-Яве.
Если проект был полезен для вас, вы можете побаловать меня чашкой кофе.
Это код оценки WeChat.