LangChain hija għodda avvanzata u robusta żviluppata biex tisfrutta l-qawwa tal-Mudelli tal-Lingwa Kbar (LLMs).
Dawn l-LLMs għandhom kapaċitajiet notevoli u jistgħu jindirizzaw b'mod effiċjenti firxa wiesgħa ta 'kompiti. Madankollu, huwa importanti li wieħed jinnota li s-saħħa tagħhom tinsab fin-natura ġenerali tagħhom aktar milli għarfien espert fil-fond tad-dominju. Il-popolarità tagħha kibret malajr mill-introduzzjoni ta 'GPT-4.
Filwaqt li l-LLMs jisbqu fl-immaniġġjar ta’ diversi kompiti, jistgħu jiffaċċjaw limitazzjonijiet meta jiġu biex jipprovdu tweġibiet speċifiċi jew jindirizzaw kompiti li jeħtieġu għarfien profond tad-dominju. Ikkunsidra, pereżempju, li tuża LLM biex twieġeb mistoqsijiet jew twettaq kompiti f'oqsma speċjalizzati bħall-mediċina jew il-liġi.
Filwaqt li l-LLM ċertament jista' jirrispondi għal mistoqsijiet ġenerali dwar dawn l-oqsma, jista' jbati biex joffri tweġibiet aktar dettaljati jew sfumati li jeħtieġu għarfien jew kompetenza speċjalizzata.
Dan għaliex l-LLMs huma mħarrġa fuq ammonti vasti ta’ dejta tat-test minn sorsi diversi, li jippermettulhom jitgħallmu mudelli, jifhmu l-kuntest, u jiġġeneraw risponsi koerenti. Madankollu, it-taħriġ tagħhom tipikament ma jinvolvix akkwist ta' għarfien speċifiku għal dominju jew speċjalizzat bl-istess punt bħall-esperti umani f'dawk l-oqsma.
Għalhekk, filwaqt li LangChain, flimkien ma 'LLMs, jista' jkun għodda imprezzabbli għal firxa wiesgħa ta 'kompiti, huwa importanti li wieħed jagħraf li kompetenza profonda tad-dominju tista' tkun għadha meħtieġa f'ċerti sitwazzjonijiet. Esperti umani b'għarfien speċjalizzat jistgħu jipprovdu l-fond meħtieġ, fehim sfumat u għarfien speċifiku għall-kuntest li jistgħu jkunu lil hinn mill-kapaċitajiet tal-LLMs biss.
Aħna nagħtu parir li nħarsu lejn id-dokumenti ta' LangChain jew GitHub repożitorju għal fehim aktar bir-reqqa tal-każijiet ta’ użu tipiċi tiegħu. Huwa rakkomandat ħafna li tikseb stampa akbar ta 'dan il-pakkett.
Kif taħdem?
Biex tifhem l-iskop u x-xogħol ta 'LangChain, ejja nikkunsidraw eżempju prattiku. Aħna konxji li GPT-4 għandu għarfien ġenerali impressjonanti u jista 'jipprovdi tweġibiet affidabbli għal firxa wiesgħa ta' mistoqsijiet.
Madankollu, x'jiġri jekk irridu informazzjoni speċifika mid-dejta tagħna stess, bħal dokument personali, ktieb, fajl PDF, jew database proprjetarja?
LangChain jippermettilna li jgħaqqdu a mudell tal-lingwa kbira bħal GPT-4 għas-sorsi tad-dejta tagħna stess. Imur lil hinn minn sempliċiment twaħħal snippet ta' test f'interface taċ-chat. Minflok, nistgħu nirreferu għal database sħiħa mimlija bid-dejta tagħna stess.
Ladarba niksbu l-informazzjoni mixtieqa, LangChain jista 'jgħinna biex nieħdu azzjonijiet speċifiċi. Pereżempju, nistgħu nagħtuha struzzjonijiet biex tibgħat email li jkun fiha ċerti dettalji.
Biex jinkiseb dan, aħna nsegwu approċċ ta 'pipeline bl-użu ta' LangChain. L-ewwel, nieħdu d-dokument li rridu mudell tal-lingwa biex tirreferi u taqsamha f'biċċiet iżgħar. Dawn il-biċċiet huma mbagħad maħżuna bħala embeddings, li huma rappreżentazzjonijiet vettorjali tat-test, f'Vector Database.
B'din is-setup, nistgħu nibnu applikazzjonijiet tal-mudell tal-lingwa li jsegwu pipeline standard: utent jistaqsi mistoqsija inizjali, li mbagħad tintbagħat lill-mudell tal-lingwa. Ir-rappreżentazzjoni tal-vettur tal-mistoqsija tintuża biex twettaq tfittxija ta 'xebh fid-Database tal-Vector, billi tirkupra l-biċċiet rilevanti ta' informazzjoni.
Dawn il-biċċiet imbagħad jiġu rritornati lill-mudell tal-lingwa, li jippermettilu li jipprovdi tweġiba jew jieħu l-azzjoni mixtieqa.
LangChain jiffaċilita l-iżvilupp ta 'applikazzjonijiet li huma konxji tad-dejta, peress li nistgħu nirreferu d-dejta tagħna stess f'maħżen tal-vettur, u awtentiċi, peress li jistgħu jieħdu azzjonijiet lil hinn milli jwieġbu mistoqsijiet. T
tiegħu jiftaħ numru kbir ta’ każijiet ta’ użu prattiċi, partikolarment fl-assistenza personali, fejn mudell lingwistiku kbir jista’ jieħu ħsieb kompiti bħall-ibbukkjar ta’ titjiriet, it-trasferiment tal-flus, jew l-assistenza fi kwistjonijiet relatati mat-taxxa.
Barra minn hekk, l-implikazzjonijiet għall-istudju u t-tagħlim ta’ suġġetti ġodda huma sinifikanti, peress li mudell tal-lingwa jista’ jirreferi għal sillabu sħiħ u jħaffef il-proċess tat-tagħlim. Il-kodifikazzjoni, l-analiżi tad-dejta u x-xjenza tad-dejta huma wkoll mistennija li jkunu influwenzati ħafna minn dawn l-avvanzi.
Wieħed mill-aktar prospetti eċċitanti huwa li tgħaqqad mudelli lingwistiċi kbar mad-dejta eżistenti tal-kumpanija, bħal informazzjoni dwar il-klijenti jew data dwar il-kummerċjalizzazzjoni. Din l-integrazzjoni ma 'APIs avvanzati bħall-API ta' Meta jew l-API ta 'Google twiegħed progress esponenzjali fl-analiżi tad-dejta u x-xjenza tad-dejta.
Kif tibni Webpage (Demo)
Bħalissa, Langchain huwa disponibbli bħala Pakketti Python u JavaScript.
Nistgħu noħolqu App Web ta 'dimostrazzjoni li tuża Streamlit, LangChain, u l-mudell OpenAI GPT-3 biex timplimenta l-kunċett LangChain.
Iżda l-ewwel, irridu ninstallaw ftit dipendenzi, inklużi Streamlit, LangChain, u OpenAI.
Pre-rekwiżiti
Streamlit: Pakkett Python popolari għall-ħolqien ta' applikazzjonijiet tal-web relatati max-xjenza tad-dejta
OpenAI: Huwa meħtieġ aċċess għall-mudell tal-lingwa GPT-3 ta' OpenAI.
Biex tinstalla dawn id-dipendenzi, uża l-kmandi li ġejjin f'cmd:
pip install streamlit
pip install langchain
pip install openai
Pakketti ta' importazzjoni
Nibdew billi jimportaw il-pakketti meħtieġa, bħal OpenAI, LangChain, u Streamlit. Il-ktajjen tal-mudell tal-lingwa tagħna huma definiti u esegwiti bl-użu ta’ tliet klassijiet minn LangChain: LLMChain, SimpleSequentialChain, u PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Setup Bażiku
Il-bażi strutturali tal-proġett tagħna mbagħad ġiet imqiegħda bl-użu tas-sintassi Streamlit. Tajna lill-app it-titlu “X’inhu VERU: Użu ta’ Katina Sekwenzjali Sempliċi” u inkludejna link ta’ markdown għar-repożitorju ta’ GitHub li serva bħala l-ispirazzjoni tal-app.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgets ta' Front-End
Aħna waqqafna l-app bi ftit informazzjoni rilevanti, billi nużaw sintassi sempliċi Streamlit:
# 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")
Biex iżżid widgets front-end
Barra minn hekk, għandna bżonn nipprovdu widget ta' input biex inħallu lill-utenti tagħna jidħlu kwalunkwe mistoqsija.
# 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?",
)
Kollox lest! Il-ktajjen qed jaħdmu!
Aħna nimpjegaw diversi ktajjen ta 'operazzjonijiet flimkien ma' SimpleSequentialChain
biex tirrispondi għall-mistoqsija tal-utent. Il-ktajjen jitwettqu fis-sekwenza li ġejja meta l-utent jagħżel il- "Tell me about it"
buttuna:
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
: li huwa l-ewwel pass fil-pipeline tagħna, jirċievi l-mistoqsija tal-utent bħala input u output. Il-mistoqsija tal-utent isservi bħala l-mudell tal-katina.- Ibbażat fuq dikjarazzjoni marbuta mal-mistoqsija, il
assumptions_chain
jiġġenera lista bullet-point ta' suppożizzjonijiet bl-użu tal-output mill-question_chain
bħala input. Il-LLMChain
u,OpenAI
mudell minn LangChain intuża biex tinbena d-dikjarazzjoni. L-utent għandu l-kompitu li joħloq lista tas-suppożizzjonijiet li saru sabiex jipproduċi d-dikjarazzjoni bl-użu tal-mudell għal din il-katina. - Ibbażat fuq l-outputs mill-
question_chain
u,assumptions_chain
, Il-fact_checker_chain
jiġġenera lista ta' affermazzjonijiet fil-forma ta' punti bullet. It-talbiet huma prodotti bl-użu tal-OpenAI
mudell uLLMChain
minn LangChain. L-utent għandu l-kompitu li jiddetermina jekk kull talba hijiex preċiża jew mhux korretta u li jipprovdi ġustifikazzjoni għal dawk li huma. - il
answer_chain
juża l-outputs mill-question_chain
,assumptions_chain
, ufact_checker_chain
bħala inputs biex tinħoloq tweġiba għall-mistoqsija tal-utent bl-użu tad-dejta prodotta mill-ktajjen preċedenti. Il-mudell għal din il-katina jitlob li l-utent iwieġeb għall-ewwel mistoqsija billi juża l-fatti li nħolqu. - Sabiex nipprovdu r-rispons aħħari għall-inkjesta tal-utent ibbażata fuq l-informazzjoni prodotta mill-ktajjen ta 'qabel, aħna nintegraw dawn il-ktajjen fil-katina ġenerali. Wara li jitlestew il-ktajjen, nużaw
st.success()
biex turi s-soluzzjoni lill-utent.
konklużjoni
Nistgħu sempliċiment nikkatina flimkien azzjonijiet differenti tal-mudell tal-lingwa biex noħolqu pipelines aktar ikkumplikati billi nużaw il- SimpleSequentialChain
modulu ta' LangChain. Għal varjetà wiesgħa ta 'applikazzjonijiet NLP, inklużi chatbots, sistemi ta' mistoqsijiet u tweġibiet, u għodod ta 'traduzzjoni tal-lingwa, dan jista' jkun pjuttost utli.
Il-brillanza ta 'LangChain tinsab fil-kapaċità tagħha li tagħmel astratt, li tippermetti lill-utent jikkonċentra fuq il-kwistjoni attwali aktar milli l-ispeċifiċitajiet tal-immudellar tal-lingwa.
LangChain jagħmel il-proċess tal-ħolqien ta 'mudelli lingwistiċi sofistikati aktar faċli għall-utent billi joffri mudelli mħarrġa minn qabel u għażla ta' mudelli.
Jagħtik l-għażla li tirfina l-mudelli tal-lingwa billi tuża d-dejta tagħhom stess, u tagħmilha sempliċi biex tippersonalizza l-mudelli tal-lingwa. Dan jippermetti l-iżvilupp ta' mudelli aktar preċiżi u speċifiċi għad-dominju li, għal xogħol partikolari, jaqbżu l-mudelli mħarrġa.
il SimpleSequentialChain
modulu u karatteristiċi oħra ta 'LangChain jagħmluha għodda effettiva għall-iżvilupp u l-iskjerament malajr ta' sistemi NLP sofistikati.
Ħalli Irrispondi