A LangChain egy élvonalbeli és robusztus eszköz, amelyet a nagy nyelvi modellek (LLM) erejének kihasználására fejlesztettek ki.
Ezek az LLM-ek figyelemre méltó képességekkel rendelkeznek, és hatékonyan megbirkózni a feladatok széles skálájával. Fontos azonban megjegyezni, hogy erejük az általános természetükben rejlik, nem pedig az alapos szakértelemben. Népszerűsége gyorsan nőtt a GPT-4 bevezetése óta.
Míg az LLM-ek kiválóan teljesítenek a különféle feladatok kezelésében, korlátokkal szembesülhetnek, amikor konkrét válaszokat kell adniuk vagy olyan feladatokat kell megoldaniuk, amelyek mélyreható tartományi ismereteket igényelnek. Fontolja meg például egy LLM igénybevételét kérdések megválaszolására vagy feladatok elvégzésére olyan speciális területeken, mint az orvostudomány vagy a jog.
Míg az LLM minden bizonnyal válaszolni tud az ezekre a területekre vonatkozó általános kérdésekre, nehézségekbe ütközhet, hogy részletesebb vagy árnyaltabb válaszokat kínáljon, amelyek speciális ismereteket vagy szakértelmet igényelnek.
Ennek az az oka, hogy az LLM-eket hatalmas mennyiségű, különböző forrásokból származó szöveges adatra képezik ki, lehetővé téve számukra, hogy megtanulják a mintákat, megértsék a kontextust, és koherens válaszokat generáljanak. Képzésük azonban jellemzően nem tartalmaz olyan mértékben szakterület-specifikus vagy speciális ismeretek elsajátítását, mint az e területek humán szakértői.
Ezért, bár a LangChain az LLM-ekkel együtt felbecsülhetetlen értékű eszköz lehet a feladatok széles skálájához, fontos felismerni, hogy bizonyos helyzetekben még mindig szükség lehet a mély tartományi szakértelemre. A speciális tudással rendelkező humán szakértők képesek biztosítani a szükséges mélységet, árnyalt megértést és olyan kontextus-specifikus betekintést, amely önmagában meghaladhatja az LLM-ek képességeit.
Javasoljuk, hogy nézze meg a LangChain dokumentumait, ill GitHub adattárat a tipikus használati esetek alaposabb megértéséhez. Erősen ajánlott nagyobb képet készíteni erről a csomagról.
Hogyan működik?
A LangChain céljának és munkájának megértéséhez nézzünk egy gyakorlati példát. Tisztában vagyunk vele, hogy a GPT-4 lenyűgöző általános ismeretekkel rendelkezik, és megbízható válaszokat tud adni számos kérdésre.
De mi van akkor, ha saját adatainkból szeretnénk konkrét információkat, például személyes dokumentumot, könyvet, PDF fájlt vagy védett adatbázist?
A LangChain lehetővé teszi, hogy összekapcsoljuk a nagy nyelvi modell mint a GPT-4 a saját adatforrásainkhoz. Ez túlmutat egy szövegrészlet beillesztésén a csevegési felületen. Ehelyett hivatkozhatunk egy teljes adatbázisra, amely saját adatainkkal van feltöltve.
Miután megszereztük a kívánt információkat, a LangChain segítséget tud nyújtani konkrét intézkedések megtételében. Például utasíthatjuk, hogy bizonyos részleteket tartalmazó e-mailt küldjön.
Ennek elérése érdekében a LangChain segítségével csővezetékes megközelítést követünk. Először vesszük a kívánt dokumentumot nyelvi modell hivatkozni és kisebb darabokra osztani. Ezeket a darabokat ezután beágyazásként tárolják, amelyek a szöveg vektoros ábrázolása egy vektoros adatbázisban.
Ezzel a beállítással olyan nyelvi modellalkalmazásokat készíthetünk, amelyek szabványos folyamatot követnek: a felhasználó feltesz egy kezdeti kérdést, amelyet aztán elküld a nyelvi modellnek. A kérdés vektoros ábrázolása hasonlósági keresés végrehajtására szolgál a vektoros adatbázisban, lekérve a releváns információdarabokat.
Ezek a darabok azután visszacsatolásra kerülnek a nyelvi modellbe, lehetővé téve számára, hogy választ adjon, vagy megtehesse a kívánt műveletet.
A LangChain olyan alkalmazások fejlesztését segíti elő, amelyek adattudatosak, hiszen vektortárban hivatkozhatunk saját adatainkra, illetve hitelesek, hiszen a kérdések megválaszolásán túl is tudnak cselekedni. T
gyakorlati felhasználási esetek sokaságát nyitja meg, különösen a személyes segítségnyújtás terén, ahol egy nagy nyelvi modell olyan feladatokat tud kezelni, mint a repülőjegy-foglalás, a pénzátutalás vagy az adózási ügyekben való segítségnyújtás.
Ezen túlmenően az új tantárgyak tanulásának és tanulásának következményei jelentősek, mivel egy nyelvi modell egy egész tananyagra hivatkozhat, és felgyorsíthatja a tanulási folyamatot. Várhatóan a kódolást, az adatelemzést és az adattudományt is nagyban befolyásolják ezek a fejlesztések.
Az egyik legizgalmasabb lehetőség a nagy nyelvi modellek összekapcsolása meglévő vállalati adatokkal, például ügyfélinformációkkal vagy marketingadatokkal. Ez a fejlett API-kkal, például a Meta API-jával vagy a Google API-jával való integráció exponenciális előrelépést ígér az adatelemzés és az adattudomány terén.
Hogyan készítsünk weboldalt (demó)
Jelenleg a Langchain Python és JavaScript csomagként érhető el.
A LangChain koncepció megvalósításához Streamlit, LangChain és OpenAI GPT-3 modell segítségével bemutató webalkalmazást készíthetünk.
Először azonban telepítenünk kell néhány függőséget, köztük a Streamlit, a LangChain és az OpenAI-t.
Előfeltétele
Áramlatos: Egy népszerű Python-csomag adattudományokkal kapcsolatos webalkalmazások létrehozásához
OpenAI: Hozzá kell férni az OpenAI GPT-3 nyelvi modelljéhez.
A függőségek telepítéséhez használja a következő parancsokat a cmd-ben:
pip install streamlit
pip install langchain
pip install openai
Csomagok importálása
Kezdjük a szükséges csomagok, például OpenAI, LangChain és Streamlit importálásával. Nyelvi modellláncainkat a LangChain három osztályával határozzuk meg és hajtjuk végre: LLMChain, SimpleSequentialChain és PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Alapvető beállítások
A projektünk szerkezeti alapja ezután Streamlit szintaxissal készült. Az alkalmazásnak a „Mi IGAZ: Egyszerű szekvenciális lánc használata” címet adtuk, és a GitHub-tárhelyre mutató linket mellékeltünk, amely az alkalmazás inspirációjaként szolgált.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-End widgetek
Az alkalmazást kevés releváns információval állítottuk be, egyszerű Streamlit szintaxist használva:
# 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")
Elülső modulok hozzáadásához
Továbbá biztosítanunk kell egy beviteli widgetet, amely lehetővé teszi a felhasználóknak, hogy kérdéseket tegyenek fel.
# 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?",
)
Minden kész! A láncok fel és működnek!
Különféle működési láncokat alkalmazunk együtt SimpleSequentialChain
válaszolni a felhasználó kérdésére. A láncok a következő sorrendben kerülnek végrehajtásra, amikor a felhasználó kiválasztja a "Tell me about it"
gomb:
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
: amely a folyamat első lépése, bemenetként és kimenetként fogadja a felhasználó kérdését. A felhasználó lekérdezése a lánc sablonjaként szolgál.- A kérdéshez kapcsolódó nyilatkozat alapján a
assumptions_chain
a feltevésekből felsoroláspontos listát állít elő a következőből származó kimenet felhasználásávalquestion_chain
bemenetként. ALLMChain
és aOpenAI
a LangChain modelljét használták az állítás összeállításához. A felhasználó feladata, hogy hozzon létre egy listát azokról a feltételezésekről, amelyek a lánc sablonjának használatával történő kimutatás előállításához készültek. - A kimenetek alapján a
question_chain
és aassumptions_chain
, afact_checker_chain
listát generál az állításokról felsorolásjelek formájában. Az állítások aOpenAI
modell ésLLMChain
a LangChaintől. A felhasználó feladata annak megállapítása, hogy az egyes állítások pontosak vagy tévesek, és igazolja azokat, amelyek igazak. - A
answer_chain
a kimeneteit használjaquestion_chain
,assumptions_chain
ésfact_checker_chain
bemenetként a felhasználói kérdésre adott válasz létrehozásához a korábbi láncok által előállított adatok felhasználásával. A lánc sablonja azt kéri, hogy a felhasználó válaszoljon az első lekérdezésre a létrehozott tények felhasználásával. - Annak érdekében, hogy a korábbi láncok által előállított információk alapján a végső választ adjuk a felhasználói kérdésre, ezeket a láncokat integráljuk a teljes láncba. A láncok elkészülte után használjuk
st.success()
hogy megmutassa a felhasználónak a megoldást.
Következtetés
Egyszerűen összeláncolhatunk különböző nyelvi modellműveleteket, hogy bonyolultabb folyamatokat hozzunk létre a segítségével SimpleSequentialChain
a LangChain modulja. Az NLP alkalmazások széles skálája esetén, beleértve a chatbotokat, a kérdés-felelet rendszereket és a nyelvi fordítóeszközöket, ez nagyon hasznos lehet.
A LangChain ragyogása az elvonatkoztatás képességében rejlik, amely lehetővé teszi a felhasználó számára, hogy a nyelvi modellezés sajátosságai helyett az aktuális kérdésre összpontosítson.
A LangChain felhasználóbarátabbá teszi a kifinomult nyelvi modellek létrehozásának folyamatát azáltal, hogy előre betanított modelleket és válogatott sablonokat kínál.
Lehetőséget ad a nyelvi modellek saját adataik segítségével történő finomhangolására, így egyszerűvé téve a nyelvi modellek testreszabását. Ez lehetővé teszi precízebb, tartomány-specifikus modellek kidolgozását, amelyek egy adott munkakörben felülmúlják a betanított modelleket.
A SimpleSequentialChain
modul és a LangChain egyéb szolgáltatásai hatékony eszközzé teszik a kifinomult NLP-rendszerek gyors fejlesztéséhez és telepítéséhez.
Hagy egy Válaszol