LangChain is 'n toonaangewende en robuuste hulpmiddel wat ontwikkel is om die krag van groottaalmodelle (LLM's) te benut.
Hierdie LLM's beskik oor merkwaardige vermoëns en kan 'n wye verskeidenheid take doeltreffend aanpak. Dit is egter belangrik om daarop te let dat hul krag lê in hul algemene aard eerder as in-diepte domein kundigheid. Die gewildheid daarvan het vinnig gegroei sedert die bekendstelling van GPT-4.
Terwyl LLM's uitblink in die hantering van verskeie take, kan hulle beperkings ondervind wanneer dit kom by die verskaffing van spesifieke antwoorde of die aanpak van take wat diepgaande domeinkennis vereis. Oorweeg dit byvoorbeeld om 'n LLM te gebruik om vrae te beantwoord of take uit te voer binne gespesialiseerde velde soos medisyne of regte.
Alhoewel die LLM beslis kan reageer op algemene navrae oor hierdie velde, kan dit sukkel om meer gedetailleerde of genuanseerde antwoorde te bied wat gespesialiseerde kennis of kundigheid noodsaak.
Dit is omdat LLM's opgelei word op groot hoeveelhede teksdata uit diverse bronne, wat hulle in staat stel om patrone te leer, konteks te verstaan en samehangende response te genereer. Hul opleiding behels egter nie tipies domeinspesifieke of gespesialiseerde kennisverwerwing in dieselfde mate as menslike kundiges in daardie velde nie.
Daarom, terwyl LangChain, in samewerking met LLM's, 'n waardevolle hulpmiddel vir 'n wye reeks take kan wees, is dit belangrik om te erken dat diep domeinkundigheid steeds in sekere situasies nodig kan wees. Menslike kundiges met gespesialiseerde kennis kan die nodige diepte, genuanseerde begrip en konteksspesifieke insigte verskaf wat buite die vermoëns van LLM's alleen kan wees.
Ons sal aanbeveel om na LangChain se dokumente te kyk of GitHub bewaarplek vir 'n meer deeglike begrip van sy tipiese gebruiksgevalle. Dit word sterk aangeraai om 'n groter prentjie van hierdie bundel te kry.
Hoe werk dit?
Om die doel en werk van LangChain te verstaan, kom ons kyk na 'n praktiese voorbeeld. Ons is bewus daarvan dat GPT-4 indrukwekkende algemene kennis het en betroubare antwoorde op 'n wye reeks vrae kan verskaf.
Wat egter as ons spesifieke inligting uit ons eie data wil hê, soos 'n persoonlike dokument, boek, PDF-lêer of eie databasis?
LangChain stel ons in staat om 'n groot taalmodel soos GPT-4 na ons eie bronne van data. Dit gaan verder as om bloot 'n stukkie teks in 'n kletskoppelvlak te plak. In plaas daarvan kan ons verwys na 'n hele databasis gevul met ons eie data.
Sodra ons die verlangde inligting bekom het, kan LangChain ons help om spesifieke aksies te neem. Ons kan dit byvoorbeeld opdrag gee om 'n e-pos te stuur wat sekere besonderhede bevat.
Om dit te bereik, volg ons 'n pyplynbenadering deur LangChain te gebruik. Eerstens neem ons die dokument wat ons wil hê taalmodel om te verwys en dit in kleiner stukke te verdeel. Hierdie stukke word dan as inbeddings gestoor, wat is vektorvoorstellings van die teks, in 'n vektordatabasis.
Met hierdie opstelling kan ons taalmodeltoepassings bou wat 'n standaard pyplyn volg: 'n gebruiker vra 'n aanvanklike vraag, wat dan na die taalmodel gestuur word. Die vraag se vektorvoorstelling word gebruik om 'n ooreenkomstesoektog in die Vektordatabasis uit te voer, om die relevante stukke inligting te herwin.
Hierdie stukke word dan teruggevoer na die taalmodel, wat dit in staat stel om 'n antwoord te verskaf of die verlangde aksie te neem.
LangChain fasiliteer die ontwikkeling van toepassings wat data-bewus is, aangesien ons ons eie data in 'n vektorwinkel kan verwys, en outentiek, aangesien hulle aksies kan neem as om vrae te beantwoord. T
dit maak 'n menigte praktiese gebruiksgevalle oop, veral in persoonlike bystand, waar 'n groot taalmodel take kan hanteer soos om vlugte te bespreek, geld oor te dra of met belastingverwante aangeleenthede te help.
Daarbenewens is die implikasies vir die bestudering en aanleer van nuwe vakke beduidend, aangesien 'n taalmodel na 'n hele sillabus kan verwys en die leerproses kan bespoedig. Daar word ook verwag dat kodering, data-analise en datawetenskap grootliks deur hierdie vooruitgang beïnvloed sal word.
Een van die opwindendste vooruitsigte is om groot taalmodelle aan bestaande maatskappydata te koppel, soos kliënteinligting of bemarkingsdata. Hierdie integrasie met gevorderde API's soos Meta se API of Google se API beloof eksponensiële vordering in data-analise en datawetenskap.
Hoe om 'n webblad te bou (demo)
Tans is Langchain beskikbaar as Python- en JavaScript-pakkette.
Ons kan 'n demonstrasie-webtoepassing skep deur gebruik te maak van Streamlit, LangChain en die OpenAI GPT-3-model om die LangChain-konsep te implementeer.
Maar eers moet ons 'n paar afhanklikhede installeer, insluitend Streamlit, LangChain en OpenAI.
Voorvereistes
Stroomverligte: 'n Gewilde Python-pakket vir die skep van datawetenskapverwante webtoepassings
OpenAI: Toegang tot OpenAI se GPT-3-taalmodel is nodig.
Om hierdie afhanklikhede te installeer, gebruik die volgende opdragte in cmd:
pip install streamlit
pip install langchain
pip install openai
Voer pakkette in
Ons begin deur die vereiste pakkette in te voer, soos OpenAI, LangChain en Streamlit. Ons taalmodelkettings word gedefinieer en uitgevoer met behulp van drie klasse van LangChain: LLMChain, SimpleSequentialChain en PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Basiese Setup
Die strukturele basis van ons projek is toe opgestel met behulp van Streamlit-sintaksis. Ons het aan die toepassing die titel "Wat is WAAR: Gebruik eenvoudige opeenvolgende ketting" gegee en 'n afmerkskakel na die GitHub-bewaarplek ingesluit wat as die toepassing se inspirasie gedien het.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Voorkant-widgets
Ons stel die toepassing op met min relevante inligting, met behulp van eenvoudige Streamlit-sintaksis:
# 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")
Om front-end legstukke by te voeg
Verder moet ons 'n invoerlegstuk verskaf sodat ons gebruikers enige vrae kan invoer.
# 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?",
)
Alles klaar! Die kettings is aan die gang!
Ons gebruik verskeie kettings van bedrywighede saam met SimpleSequentialChain
om op die gebruiker se navraag te reageer. Die kettings word in die volgende volgorde uitgevoer wanneer die gebruiker die "Tell me about it"
knoppie:
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
: wat die eerste stap in ons pyplyn is, ontvang die gebruiker se vraag as invoer en afvoer. Die gebruiker se navraag dien as die ketting se sjabloon.- Gebaseer op 'n stelling gekoppel aan die vraag, die
assumptions_chain
genereer 'n kolpuntlys van aannames deur die uitset van diequestion_chain
as inset. DieLLMChain
enOpenAI
model van LangChain is gebruik om die stelling te konstrueer. Die gebruiker word getaak om 'n lys te skep van die aannames wat gemaak is om die stelling te produseer deur die sjabloon vir hierdie ketting te gebruik. - Gebaseer op die uitsette van die
question_chain
enassumptions_chain
, diefact_checker_chain
genereer 'n lys van bewerings in die vorm van kolpunte. Die eise word geproduseer deur gebruik te maak van dieOpenAI
model enLLMChain
van LangChain. Die gebruiker is getaak om te bepaal of elke eis akkuraat of verkeerd is en om regverdiging te verskaf vir dié wat is. - Die
answer_chain
gebruik die uitsette van diequestion_chain
,assumptions_chain
, enfact_checker_chain
as insette om 'n antwoord op die gebruiker se vraag te skep deur die data wat deur die vroeëre kettings geproduseer is, te gebruik. Die sjabloon vir hierdie ketting versoek dat die gebruiker op die eerste navraag reageer deur die feite wat geskep is, te gebruik. - Ten einde die uiteindelike reaksie op die gebruiker se navraag te verskaf gebaseer op die inligting wat deur die vroeëre kettings geproduseer is, integreer ons hierdie kettings in die algehele ketting. Nadat die kettings voltooi is, gebruik ons
st.success()
om die gebruiker die oplossing te wys.
Gevolgtrekking
Ons kan eenvoudig verskillende taalmodelaksies saamketting om meer ingewikkelde pyplyne te skep deur die SimpleSequentialChain
module van LangChain. Vir 'n wye verskeidenheid NLP-toepassings, insluitend kletsbotte, vraag-en-antwoord-stelsels en taalvertaalinstrumente, kan dit baie nuttig wees.
Die glans van LangChain word gevind in sy vermoë om te abstraheer, wat die gebruiker in staat stel om op die huidige kwessie te konsentreer eerder as die besonderhede van taalmodellering.
LangChain maak die proses om gesofistikeerde taalmodelle te skep meer gebruikersvriendelik deur vooraf opgeleide modelle en 'n verskeidenheid sjablone aan te bied.
Dit gee jou die opsie om die taalmodelle met hul eie data te verfyn, wat dit maklik maak om die taalmodelle aan te pas. Dit maak die ontwikkeling van meer presiese, domeinspesifieke modelle moontlik wat, vir 'n gegewe werk, beter as die opgeleide modelle presteer.
Die SimpleSequentialChain
module en ander kenmerke van LangChain maak dit 'n effektiewe hulpmiddel vir die vinnige ontwikkeling en implementering van gesofistikeerde NLP-stelsels.
Lewer Kommentaar