ʻO LangChain kahi mea hana ʻokiʻoki a paʻa i hoʻomohala ʻia e hoʻohana i ka mana o Large Language Models (LLMs).
Loaʻa i kēia mau LLM nā mana kupaianaha a hiki ke hoʻoponopono pono i nā ʻano hana. Eia nō naʻe, he mea nui e hoʻomaopopo i ko lākou ikaika aia i ko lākou ʻano maʻamau ma mua o ka ʻike kikowaena hohonu. Ua ulu wikiwiki kona kaulana mai ka hoʻomaka ʻana o GPT-4.
ʻOiai ʻoi aku ka maikaʻi o nā LLM i ka lawelawe ʻana i nā hana like ʻole, hiki iā lākou ke kū i nā palena i ka hāʻawi ʻana i nā pane kikoʻī a i ʻole ka hoʻopaʻa ʻana i nā hana e pono ai ka ʻike domain hohonu. E noʻonoʻo, no ka laʻana, e hoʻohana i kahi LLM e pane i nā nīnau a i ʻole hana i nā hana i loko o nā kahua kūikawā e like me ka lāʻau lapaʻau a i ʻole ke kānāwai.
ʻOiai hiki i ka LLM ke pane i nā nīnau maʻamau e pili ana i kēia mau kahua, paʻakikī paha ia e hāʻawi i nā pane kikoʻī a i ʻole nā nuanced e pono ai ka ʻike kūikawā a i ʻole ka ʻike.
No ka mea, ua aʻo ʻia nā LLM i ka nui o nā ʻikepili kikokikona mai nā kumu like ʻole, e hiki ai iā lākou ke aʻo i nā mamana, hoʻomaopopo i ka pōʻaiapili, a hana i nā pane kūpono. Eia nō naʻe, ʻaʻole maʻamau kā lākou aʻo ʻana i ka loaʻa ʻana o ka ʻike domain-specific a i ʻole ka loaʻa ʻana o ka ʻike kūikawā e like me ka poʻe loea kanaka ma ia mau kahua.
No laila, ʻoiai ʻo LangChain, i hui pū me nā LLM, hiki ke lilo i mea waiwai nui no ka nui o nā hana, he mea nui ia e ʻike e pono ana ka ʻike kikowaena hohonu i kekahi mau kūlana. Hiki i nā poʻe loea kanaka me ka ʻike kūikawā ke hāʻawi i ka hohonu kūpono, ka ʻike nuanced, a me nā ʻike kikoʻī pili i ka pōʻaiapili i ʻoi aku ma mua o ka hiki o nā LLM wale nō.
Manaʻo mākou e nānā i nā palapala a LangChain a i ʻole GitHub waihona no ka hoʻomaopopo piha ʻana i kāna mau hihia hoʻohana maʻamau. Manaʻo nui ʻia e kiʻi i kahi kiʻi nui o kēia pūʻulu.
Pehea ia e hana?
No ka hoʻomaopopo ʻana i ke kumu a me ka hana a LangChain, e noʻonoʻo kākou i kahi hiʻohiʻona kūpono. Ua ʻike mākou he ʻike nui ko GPT-4 a hiki ke hāʻawi i nā pane hilinaʻi i nā nīnau he nui.
Eia naʻe, pehea inā makemake mākou i ka ʻike kikoʻī mai kā mākou ʻikepili ponoʻī, e like me kahi palapala pilikino, puke, faila PDF, a i ʻole ka waihona waiwai?
Hiki iā LangChain ke hoʻohui i kahi kumu hoʻohālike ʻōlelo nui e like me GPT-4 i kā mākou mau kumu ʻikepili. ʻOi aku ia ma mua o ka hoʻopili wale ʻana i kahi snippet o ka kikokikona i loko o kahi pilina kamaʻilio. Akā, hiki iā mākou ke kuhikuhi i kahi waihona piha piha i kā mākou ʻikepili ponoʻī.
Ke loaʻa iā mākou ka ʻike i makemake ʻia, hiki iā LangChain ke kōkua iā mākou i ka hana ʻana i nā hana kikoʻī. No ka laʻana, hiki iā mākou ke aʻo iā ia e hoʻouna i kahi leka uila me kekahi mau kikoʻī.
No ka hoʻokō ʻana i kēia, hahai mākou i kahi ala pipeline e hoʻohana ana iā LangChain. ʻO ka mua, lawe mākou i ka palapala a mākou e makemake ai kumu hoʻohālike ʻōlelo e kuhikuhi a e puunaue i na apana liilii. A laila mālama ʻia kēia mau ʻāpana ma ke ʻano he embeddings, ʻo ia hoʻi nā hōʻike vector o ka kikokikona, i loko o kahi Vector Database.
Me kēia hoʻonohonoho, hiki iā mākou ke kūkulu i nā noi hoʻohālike ʻōlelo e pili ana i kahi pipeline maʻamau: nīnau ka mea hoʻohana i kahi nīnau mua, a laila hoʻouna ʻia i ke ʻano ʻōlelo. Hoʻohana ʻia ka hōʻike vector o ka nīnau e hana i kahi hulina like ma ka Vector Database, e kiʻi ana i nā ʻāpana ʻike pili.
Hoʻihoʻi ʻia kēia mau ʻāpana i ke kumu hoʻohālike ʻōlelo, hiki iā ia ke hāʻawi i ka pane a i ʻole ka hana i makemake ʻia.
Mālamaʻo LangChain i ka hoʻomohalaʻana i nā noi iʻike i kaʻikepili, no ka mea hiki iā mākou ke kuhikuhi i kā mākouʻikepili pono'ī i loko o ka hale kūʻai vector, a me kaʻoiaʻiʻo, no ka mea hiki iā lākou ke hana i nā hana ma mua o ka paneʻana i nā nīnau. Ua ʻōlelo ʻo T
Ua wehe ʻo ia i ka nui o nā hihia hoʻohana pono, ʻo ia hoʻi ma ke kōkua pilikino, kahi e hiki ai i kahi kumu hoʻohālike ʻōlelo nui ke mālama i nā hana e like me ka hoʻopaʻa ʻana i nā mokulele, ka hoʻoili kālā, a i ʻole ke kōkua ʻana i nā mea pili i ka ʻauhau.
Eia hou, he mea nui ka hopena o ke aʻo ʻana a me ke aʻo ʻana i nā kumuhana hou, no ka mea, hiki i ke kumu hoʻohālike ʻōlelo ke kuhikuhi i kahi papa hana holoʻokoʻa a hoʻolōʻihi i ke kaʻina aʻo. ʻO ka coding, ka ʻikepili ʻikepili, a me ka ʻepekema data e manaʻo nui ʻia e kēia mau holomua.
ʻO kekahi o nā manaʻo hoihoi loa ʻo ka hoʻopili ʻana i nā hiʻohiʻona ʻōlelo nui i ka ʻikepili ʻoihana e kū nei, e like me ka ʻike mea kūʻai aku a i ʻole ka ʻikepili kūʻai. ʻO kēia hoʻohui ʻana me nā API holomua e like me Meta's API a i ʻole Google's API e hoʻohiki i ka holomua exponential i ka ʻikepili ʻikepili a me ka ʻepekema data.
Pehea e hana ai i kahi ʻaoʻao pūnaewele (Demo)
I kēia manawa, loaʻa ʻo Langchain e like me Python a me JavaScript Packages.
Hiki iā mākou ke hana i kahi Web App hōʻikeʻike e hoʻohana ana i Streamlit, LangChain, a me ka OpenAI GPT-3 model e hoʻokō i ka manaʻo LangChain.
Akā ʻo ka mea mua, pono mākou e hoʻokomo i kekahi mau mea hilinaʻi, me Streamlit, LangChain, a me OpenAI.
Nā mea mua
Māmā: He pūʻolo Python kaulana no ka hana ʻana i nā noi pūnaewele pili i ka ʻepekema data
OpenAI: Pono ke komo i ke kumu hoʻohālike ʻōlelo GPT-3 o OpenAI.
No ka hoʻouka ʻana i kēia mau hilinaʻi, e hoʻohana i kēia mau kauoha ma cmd:
pip install streamlit
pip install langchain
pip install openai
Nā Pāke Hoʻokomo
Hoʻomaka mākou ma ka lawe ʻana i nā pūʻolo i koi ʻia, e like me OpenAI, LangChain, a me Streamlit. Ua wehewehe ʻia a hoʻokō ʻia kā mākou mau kaulahao ʻōlelo me ka hoʻohana ʻana i ʻekolu papa mai LangChain: LLMChain, SimpleSequentialChain, a me PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Hoʻonoho hoʻonohonoho
Ua hoʻokumu ʻia ke kumu hoʻolālā o kā mākou papahana me ka hoʻohana ʻana i ka syntax Streamlit. Ua hāʻawi mākou i ka app i ke poʻo inoa "He aha ka ʻoiaʻiʻo: Ke hoʻohana nei i ka Simple Sequential Chain" a hoʻokomo i kahi loulou markdown i ka waihona GitHub i lilo i mea hoʻoikaika o ka app.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Nā Widget Hope-hope
Hoʻonohonoho mākou i ka app me nā ʻike pili liʻiliʻi, me ka hoʻohana ʻana i ka syntax Streamlit maʻalahi:
# If an API key has been provided, create an OpenAI language model instance
if API:
llm = OpenAI(temperature=0.7, openai_api_key=API)
else:
# If an API key hasn't been provided, display a warning message
st.warning("Enter your OPENAI API-KEY. Get your OpenAI API key from [here](https://platform.openai.com/account/api-keys).\n")
E hoʻohui i nā widget mua
Eia hou, pono mākou e hāʻawi i kahi widget komo e ʻae i kā mākou mea hoʻohana e hoʻokomo i nā nīnau.
# Add a text input box for the user's question
user_question = st.text_input(
"Enter Your Question : ",
placeholder = "Cyanobacteria can perform photosynthetsis , are they considered as plants?",
)
Pau nā mea a pau! Ke kū nei nā kaulahao!
Hoʻohana mākou i nā kaulahao o ka hana pū me SimpleSequentialChain
e pane i ka nīnau a ka mea hoʻohana. Lawe ʻia nā kaulahao ma kēia kaʻina i ka wā e koho ai ka mea hoʻohana i ka "Tell me about it"
pāomi:
if st.button("Tell me about it", type="primary"):
# Chain 1: Generating a rephrased version of the user's question
template = """{question}\n\n"""
prompt_template = PromptTemplate(input_variables=["question"], template=template)
question_chain = LLMChain(llm=llm, prompt=prompt_template)
# Chain 2: Generating assumptions made in the statement
template = """Here is a statement:
{statement}
Make a bullet point list of the assumptions you made when producing the above statement.\n\n"""
prompt_template = PromptTemplate(input_variables=["statement"], template=template)
assumptions_chain = LLMChain(llm=llm, prompt=prompt_template)
assumptions_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain], verbose=True
)
# Chain 3: Fact checking the assumptions
template = """Here is a bullet point list of assertions:
{assertions}
For each assertion, determine whether it is true or false. If it is false, explain why.\n\n"""
prompt_template = PromptTemplate(input_variables=["assertions"], template=template)
fact_checker_chain = LLMChain(llm=llm, prompt=prompt_template)
fact_checker_chain_seq = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain], verbose=True
)
# Final Chain: Generating the final answer to the user's question based on the facts and assumptions
template = """In light of the above facts, how would you answer the question '{}'""".format(
user_question
)
template = """{facts}\n""" + template
prompt_template = PromptTemplate(input_variables=["facts"], template=template)
answer_chain = LLMChain(llm=llm, prompt=prompt_template)
overall_chain = SimpleSequentialChain(
chains=[question_chain, assumptions_chain, fact_checker_chain, answer_chain],
verbose=True,
)
# Running all the chains on the user's question and displaying the final answer
st.success(overall_chain.run(user_question))
question_chain
: ʻo ia ka hana mua i kā mākou pipeline, loaʻa ka nīnau a ka mea hoʻohana ma ke ʻano he hoʻokomo a me ka hoʻopuka. ʻO ka nīnau a ka mea hoʻohana ke ʻano hoʻohālike o ke kaulahao.- Ma muli o kahi ʻōlelo pili i ka nīnau, ʻo ka
assumptions_chain
hoʻopuka i kahi papa helu pōkā o nā manaʻo me ka hoʻohana ʻana i ka huahana mai kaquestion_chain
i mea hookomo. ʻO kaLLMChain
aOpenAI
Ua hoʻohana ʻia ke ʻano hoʻohālike mai LangChain e kūkulu i ka ʻōlelo. Hoʻokumu ʻia ka mea hoʻohana i ka papa inoa o nā manaʻo i hana ʻia i mea e hana ai i ka ʻōlelo me ka hoʻohana ʻana i ke kumu hoʻohālike no kēia kaulahao. - Ma muli o nā huahana mai ka
question_chain
aassumptions_chain
, kafact_checker_chain
hoʻopuka i kahi papa inoa o nā ʻōlelo hoʻohiki ma ke ʻano o nā pōkā. Hana ʻia nā koi me ka hoʻohana ʻana i kaOpenAI
k modelkohu aLLMChain
mai LangChain. Hoʻoholo ʻia ka mea hoʻohana e hoʻoholo inā pololei a pololei ʻole kēlā me kēia koi a hāʻawi i ka hōʻoia ʻana no kēlā mau mea. - ka
answer_chain
hoʻohana i nā huahana mai kaquestion_chain
,assumptions_chain
, afact_checker_chain
e like me nā mea hoʻokomo e hana i ka pane i ka nīnau a ka mea hoʻohana me ka hoʻohana ʻana i ka ʻikepili i hana ʻia e nā kaulahao mua. Ke noi nei ka laʻana no kēia kaulahao e pane ka mea hoʻohana i ka nīnau mua me ka hoʻohana ʻana i nā ʻike i hana ʻia. - I mea e hāʻawi ai i ka pane hope loa i ka nīnau a ka mea hoʻohana e pili ana i ka ʻike i hana ʻia e nā kaulahao mua, hoʻohui mākou i kēia mau kaulahao i loko o ke kaulahao holoʻokoʻa. Ma hope o ka pau ʻana o nā kaulahao, hoʻohana mākou
st.success()
e hōʻike i ka mea hoʻohana i ka hopena.
Panina
Hiki iā mākou ke kaulahao i nā hana hoʻohālike ʻōlelo like ʻole e hana i nā paipu paʻakikī ma ka hoʻohana ʻana i ka SimpleSequentialChain
module o LangChain. No ka nui o nā noi NLP, me nā chatbots, nā ʻōnaehana nīnau-a-pane, a me nā hāmeʻa unuhi ʻōlelo, kōkua nui paha kēia.
Loaʻa ka nani o LangChain i kona hiki ke abstract, e hiki ai i ka mea hoʻohana ke noʻonoʻo i ka pilikia o kēia manawa ma mua o nā kikoʻī o ka hoʻohālike ʻōlelo.
Hana ʻo LangChain i ke kaʻina hana o ka hoʻokumu ʻana i nā hiʻohiʻona ʻōlelo maʻalahi i ka mea hoʻohana ma o ka hāʻawi ʻana i nā hiʻohiʻona i hoʻomaʻamaʻa mua ʻia a me kahi koho o nā mamana.
Hāʻawi ia iā ʻoe i ke koho e hoʻoponopono maikaʻi i nā kumu hoʻohālike ʻōlelo me ka hoʻohana ʻana i kā lākou ʻikepili ponoʻī, e maʻalahi ai ka hoʻopilikino ʻana i nā hiʻohiʻona ʻōlelo. ʻO kēia ka mea e hiki ai ke hoʻomohala i nā hiʻohiʻona kikoʻī kikoʻī kikoʻī, no kahi hana i hāʻawi ʻia, ʻoi aku ka maikaʻi o nā hiʻohiʻona i aʻo ʻia.
ka SimpleSequentialChain
module a me nā hiʻohiʻona ʻē aʻe o LangChain e lilo ia i mea hana pono no ka hoʻomohala wikiwiki ʻana a me ka hoʻohana ʻana i nā ʻōnaehana NLP maʻalahi.
Waiho i ka Reply