Versão Java de Langchain, enquanto capacita o LLM para BigData.
Serve como uma ponte para o reino do LLM dentro do domínio Big Data, principalmente na pilha Java.
Se você estiver interessado, pode me adicionar no WeChat: hamawhite ou enviar e -mail para mim.
Esta é a implementação da linguagem Java do Langchain, que facilita o mais fácil desenvolver aplicativos movidos a LLM.
O exemplo a seguir no exemplo de Langchain.
A documentação da API está disponível no seguinte link:
https://hamawhitegg.github.io/langchain-java
Pré -requisitos para a construção:
< dependency >
< groupId >io.github.hamawhitegg</ groupId >
< artifactId >langchain-core</ artifactId >
< version >0.2.1</ version >
</ dependency >
O uso do Langchain geralmente exige integrações com um ou mais provedores de modelos, lojas de dados, APIs etc. Para este exemplo, usaremos as APIs do OpenAI.
Precisamos então definir a variável de ambiente.
export OPENAI_API_KEY=xxx
# If a proxy is needed, set the OPENAI_PROXY environment variable.
export OPENAI_PROXY=http://host:port
Se você deseja definir a chave da API e o proxy dinamicamente, pode usar o parâmetro OpenAiapikey e OpenAiproxy ao iniciar a classe OpenAI.
var llm = OpenAI . builder ()
. openaiOrganization ( "xxx" )
. openaiApiKey ( "xxx" )
. openaiProxy ( "http://host:port" )
. requestTimeout ( 16 )
. build ()
. init ();
Obtenha previsões de um modelo de idioma. O bloco básico de construção de Langchain é o LLM, que recebe texto e gera mais texto.
Exemplo 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 );
E agora podemos passar no texto e obter previsões!
Feetful of Fun
Os modelos de bate -papo são uma variação nos modelos de idiomas. Enquanto os modelos de bate -papo usam modelos de idiomas sob o capô, a interface que eles expõem é um pouco diferente: em vez de expor uma API de "texto em texto", eles expõem uma interface em que "mensagens de bate -papo" são as entradas e saídas.
Exemplo de bate -papo 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={}}
É útil entender como os modelos de bate -papo são diferentes de um LLM normal, mas muitas vezes pode ser útil poder tratá -los da mesma forma. O Langchain facilita a exposição de uma interface através da qual você pode interagir com um modelo de bate -papo como faria com um LLM normal. Você pode acessar isso através da interface predict
.
var output = chat . predict ( "Translate this sentence from English to French. I love programming." );
println ( output );
J ' adore la programmation.
Agora que temos um modelo e um modelo rápido, queremos combinar os dois. As cadeias nos dão uma maneira de vincular (ou cadear) múltiplas primitivas, como modelos, avisos e outras cadeias.
O tipo de cadeia mais simples e mais comum é um llmchain, que passa por uma entrada primeiro para um PromptTemplate e depois para um LLM. Podemos construir uma cadeia LLM a partir do nosso modelo existente e modelo rápido.
Exemplo de cadeia 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
O LLMChain
também pode ser usado com modelos de bate -papo:
Exemplo de cadeia de chat 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.
Os LLMs possibilitam interagir com os bancos de dados SQL usando a linguagem natural, e o Langchain oferece cadeias SQL para criar e executar consultas SQL com base em avisos de linguagem natural.
Exemplo de cadeia 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.
Os idiomas disponíveis são os seguintes.
Linguagem | Valor |
---|---|
Inglês (padrão) | en_us |
Português (Brasil) | pt_br |
Se você deseja escolher outro idioma em inglês, basta definir a variável de ambiente em seu host. Se você não estiver definido, então en-us será padrão
export USE_LANGUAGE=pt_BR
Nossa primeira cadeia executou uma sequência pré-determinada de etapas. Para lidar com fluxos de trabalho complexos, precisamos ser capazes de escolher dinamicamente as ações com base nas entradas.
Os agentes fazem exatamente isso: eles usam um modelo de idioma para determinar quais ações tomar e em que ordem. Os agentes têm acesso a ferramentas e escolhem repetidamente uma ferramenta, executam a ferramenta e observam a saída até que eles tenham uma resposta final.
Defina as variáveis de ambiente apropriadas.
export SERPAPI_API_KEY=xxx
Para aumentar o conhecimento do OpenAI além de 2021 e habilidades computacionais através do uso das ferramentas de pesquisa e calculadora.
Exemplo de agente de pesquisa do 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
Este projeto usa impecável para formatar o código. Se você fizer alguma modificação, lembre -se de formatar o código usando o seguinte comando.
# export JAVA_HOME=JDK17_INSTALL_HOME && mvn spotless:apply
mvn spotless:apply
Não hesite em perguntar!
Abra um problema se encontrar um bug em Langchain-Java.
Se o projeto tiver sido útil para você, você pode me tratar uma xícara de café.
Este é um código de apreciação do WeChat.