LangChain er et banebrydende og robust værktøj udviklet til at udnytte kraften fra Large Language Models (LLM'er).
Disse LLM'er besidder bemærkelsesværdige egenskaber og kan effektivt tackle en bred vifte af opgaver. Det er dog vigtigt at bemærke, at deres styrke ligger i deres generelle karakter snarere end i dybdegående domæneekspertise. Dens popularitet er vokset hurtigt siden introduktionen af GPT-4.
Mens LLM'er udmærker sig ved at håndtere forskellige opgaver, kan de stå over for begrænsninger, når det kommer til at give specifikke svar eller tackle opgaver, der kræver dybtgående domæneviden. Overvej for eksempel at bruge en LLM til at besvare spørgsmål eller udføre opgaver inden for specialiserede områder som medicin eller jura.
Mens LLM helt sikkert kan svare på generelle forespørgsler om disse områder, kan det være svært at tilbyde mere detaljerede eller nuancerede svar, der kræver specialiseret viden eller ekspertise.
Dette skyldes, at LLM'er er trænet i enorme mængder tekstdata fra forskellige kilder, hvilket gør dem i stand til at lære mønstre, forstå kontekst og generere sammenhængende svar. Deres uddannelse involverer dog typisk ikke domænespecifik eller specialiseret videnserhvervelse i samme omfang som menneskelige eksperter på disse områder.
Derfor, mens LangChain sammen med LLM'er kan være et uvurderligt værktøj til en bred vifte af opgaver, er det vigtigt at erkende, at dyb domæneekspertise stadig kan være nødvendig i visse situationer. Menneskelige eksperter med specialiseret viden kan give den nødvendige dybde, nuancerede forståelse og kontekstspecifikke indsigter, som måske ligger uden for LLM'ers evner alene.
Vi vil råde dig til at se på LangChains dokumenter eller GitHub repository for en mere grundig forståelse af dets typiske brugssager. Det anbefales kraftigt at få et større billede af dette bundt.
Hvordan virker det?
For at forstå formålet og arbejdet med LangChain, lad os overveje et praktisk eksempel. Vi er klar over, at GPT-4 har en imponerende generel viden og kan give pålidelige svar på en lang række spørgsmål.
Men hvad nu hvis vi ønsker specifikke oplysninger fra vores egne data, såsom et personligt dokument, bog, PDF-fil eller proprietær database?
LangChain giver os mulighed for at forbinde en stor sprogmodel som GPT-4 til vores egne datakilder. Det går ud over blot at indsætte et uddrag af tekst i en chatgrænseflade. I stedet kan vi referere til en hel database fyldt med vores egne data.
Når vi har fået den ønskede information, kan LangChain hjælpe os med at foretage specifikke handlinger. For eksempel kan vi bede den om at sende en e-mail med visse detaljer.
For at opnå dette følger vi en pipeline-tilgang ved hjælp af LangChain. Først tager vi det dokument, vi ønsker sprogmodel at referere og opdele det i mindre bidder. Disse bidder opbevares derefter som indlejringer, hvilket er vektorrepræsentationer af teksten i en vektordatabase.
Med denne opsætning kan vi bygge sprogmodelapplikationer, der følger en standardpipeline: en bruger stiller et indledende spørgsmål, som derefter sendes til sprogmodellen. Spørgsmålets vektorrepræsentation bruges til at udføre en lighedssøgning i vektordatabasen, hvorved de relevante bidder af information hentes.
Disse bidder føres derefter tilbage til sprogmodellen, så den kan give et svar eller foretage den ønskede handling.
LangChain letter udviklingen af applikationer, der er databevidste, da vi kan referere til vores egne data i et vektorlager, og autentiske, da de kan foretage handlinger ud over at besvare spørgsmål. T
hans åbner op for et væld af praktiske use cases, især inden for personlig assistance, hvor en stor sprogmodel kan håndtere opgaver som at booke flyrejser, overføre penge eller hjælpe med skatterelaterede spørgsmål.
Derudover er implikationerne for at studere og lære nye fag betydelige, da en sprogmodel kan referere til et helt pensum og fremskynde læringsprocessen. Kodning, dataanalyse og datavidenskab forventes også at blive stærkt påvirket af disse fremskridt.
En af de mest spændende muligheder er at forbinde store sprogmodeller med eksisterende virksomhedsdata, såsom kundeinformation eller marketingdata. Denne integration med avancerede API'er som Metas API eller Googles API lover eksponentielle fremskridt inden for dataanalyse og datavidenskab.
Sådan opbygger du en webside (demo)
I øjeblikket er Langchain tilgængelig som Python- og JavaScript-pakker.
Vi kan oprette en demonstrations-webapp ved at bruge Streamlit, LangChain og OpenAI GPT-3-modellen til at implementere LangChain-konceptet.
Men først skal vi installere et par afhængigheder, herunder Streamlit, LangChain og OpenAI.
Forudsætninger
Strømbelyst: En populær Python-pakke til at skabe datavidenskabsrelaterede webapplikationer
OpenAI: Adgang til OpenAIs GPT-3 sprogmodel er nødvendig.
For at installere disse afhængigheder skal du bruge følgende kommandoer i cmd:
pip install streamlit
pip install langchain
pip install openai
Importer pakker
Vi starter med at importere de nødvendige pakker, såsom OpenAI, LangChain og Streamlit. Vores sprogmodelkæder er defineret og eksekveret ved hjælp af tre klasser fra LangChain: LLMChain, SimpleSequentialChain og PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Grundlæggende opsætning
Det strukturelle grundlag for vores projekt blev derefter sat op ved hjælp af Streamlit-syntaks. Vi gav appen titlen "What's TRUE: Using Simple Sequential Chain" og inkluderede et markdown-link til GitHub-lageret, der fungerede som appens inspiration.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Front-end widgets
Vi konfigurerer appen med få relevante oplysninger ved hjælp af simpel Streamlit-syntaks:
# 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")
For at tilføje frontend-widgets
Yderligere skal vi levere en input-widget, så vores brugere kan indtaste spørgsmål.
# 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?",
)
Helt færdig! Kæderne er oppe og køre!
Vi anvender forskellige driftskæder sammen med SimpleSequentialChain
at svare på brugerens forespørgsel. Kæderne udføres i følgende rækkefølge, når brugeren vælger "Tell me about it"
knap:
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
: som er det første trin i vores pipeline, modtager brugerens spørgsmål som input og output. Brugerens forespørgsel fungerer som kædens skabelon.- Baseret på en udtalelse knyttet til spørgsmålet
assumptions_chain
genererer en punktliste over antagelser ved hjælp af outputtet fraquestion_chain
som input. DetLLMChain
,OpenAI
model fra LangChain blev brugt til at konstruere udsagnet. Brugeren har til opgave at oprette en liste over de antagelser, der blev gjort for at producere erklæringen ved hjælp af skabelonen for denne kæde. - Baseret på output fra
question_chain
,assumptions_chain
,fact_checker_chain
genererer en liste over påstande i form af punkttegn. Kravene er fremstillet ved hjælp afOpenAI
model ogLLMChain
fra LangChain. Brugeren har til opgave at afgøre, om hvert krav er korrekt eller forkert, og give en begrundelse for dem, der er. -
answer_chain
bruger udgangene fraquestion_chain
,assumptions_chain
ogfact_checker_chain
som input til at skabe et svar på brugerens spørgsmål ved hjælp af data produceret af de tidligere kæder. Skabelonen for denne kæde anmoder om, at brugeren svarer på den første forespørgsel ved hjælp af de fakta, der blev oprettet. - For at give det ultimative svar på brugerens henvendelse baseret på informationen fra de tidligere kæder, integrerer vi disse kæder i den samlede kæde. Efter at kæderne er færdige, bruger vi
st.success()
for at vise brugeren løsningen.
Konklusion
Vi kan simpelthen kæde forskellige sprogmodelhandlinger sammen for at skabe mere komplicerede pipelines ved at bruge SimpleSequentialChain
modul af LangChain. For en bred vifte af NLP-applikationer, herunder chatbots, spørgsmål-og-svar-systemer og sprogoversættelsesværktøjer, kan dette være ganske nyttigt.
Glansen ved LangChain findes i dens evne til at abstrahere, hvilket gør det muligt for brugeren at koncentrere sig om det aktuelle problem snarere end det specifikke ved sprogmodellering.
LangChain gør processen med at skabe sofistikerede sprogmodeller mere brugervenlig ved at tilbyde præ-trænede modeller og et udvalg af skabeloner.
Det giver dig mulighed for at finjustere sprogmodellerne ved hjælp af deres egne data, hvilket gør det nemt at tilpasse sprogmodellerne. Dette muliggør udvikling af mere præcise, domænespecifikke modeller, der for en given opgave overgår de trænede modeller.
SimpleSequentialChain
modul og andre funktioner i LangChain gør det til et effektivt værktøj til hurtigt at udvikle og implementere sofistikerede NLP-systemer.
Giv en kommentar