Mae LangChain yn offeryn blaengar a chadarn a ddatblygwyd i harneisio pŵer Modelau Iaith Mawr (LLMs).
Mae gan y LLMs hyn alluoedd rhyfeddol a gallant fynd i'r afael ag amrywiaeth eang o dasgau yn effeithlon. Fodd bynnag, mae'n bwysig nodi bod eu cryfder yn gorwedd yn eu natur gyffredinol yn hytrach nag arbenigedd parth manwl. Mae ei boblogrwydd wedi tyfu'n gyflym ers cyflwyno GPT-4.
Er bod LLMs yn rhagori ar drin tasgau amrywiol, efallai y byddant yn wynebu cyfyngiadau o ran darparu atebion penodol neu fynd i'r afael â thasgau sy'n gofyn am wybodaeth parth dwfn. Ystyriwch, er enghraifft, ddefnyddio LLM i ateb cwestiynau neu gyflawni tasgau o fewn meysydd arbenigol fel meddygaeth neu'r gyfraith.
Er y gall yr LLM yn sicr ymateb i ymholiadau cyffredinol am y meysydd hyn, efallai y bydd yn ei chael yn anodd cynnig atebion manylach neu gynnil sy'n gofyn am wybodaeth arbenigol neu arbenigedd.
Mae hyn oherwydd bod LLMs yn cael eu hyfforddi ar lawer iawn o ddata testun o ffynonellau amrywiol, gan eu galluogi i ddysgu patrymau, deall cyd-destun, a chynhyrchu ymatebion cydlynol. Fodd bynnag, nid yw eu hyfforddiant fel arfer yn cynnwys caffael gwybodaeth parth-benodol neu arbenigol i'r un graddau ag arbenigwyr dynol yn y meysydd hynny.
Felly, er y gall LangChain, ar y cyd â LLMs, fod yn arf amhrisiadwy ar gyfer ystod eang o dasgau, mae'n bwysig cydnabod y gallai fod angen arbenigedd parth dwfn o hyd mewn rhai sefyllfaoedd. Gall arbenigwyr dynol â gwybodaeth arbenigol ddarparu'r dyfnder angenrheidiol, dealltwriaeth gynnil, a mewnwelediadau cyd-destun penodol a allai fod y tu hwnt i allu LLMs yn unig.
Byddem yn cynghori edrych ar ddogfennau LangChain neu GitHub storfa ar gyfer dealltwriaeth fwy trylwyr o'i achosion defnydd nodweddiadol. Fe'ch cynghorir yn gryf i gael darlun ehangach o'r bwndel hwn.
Sut mae'n gweithio?
Er mwyn deall pwrpas a gwaith LangChain, gadewch i ni ystyried enghraifft ymarferol. Rydym yn ymwybodol bod gan GPT-4 wybodaeth gyffredinol drawiadol a gall ddarparu atebion dibynadwy i ystod eang o gwestiynau.
Fodd bynnag, beth os ydym am gael gwybodaeth benodol o'n data ein hunain, megis dogfen bersonol, llyfr, ffeil PDF, neu gronfa ddata berchnogol?
Mae LangChain yn caniatáu inni gysylltu a model iaith mawr fel GPT-4 i'n ffynonellau data ein hunain. Mae'n mynd y tu hwnt i gludo darn o destun i ryngwyneb sgwrsio. Yn lle hynny, gallwn gyfeirio at gronfa ddata gyfan wedi'i llenwi â'n data ein hunain.
Unwaith y byddwn yn cael y wybodaeth a ddymunir, gall LangChain ein cynorthwyo i gymryd camau penodol. Er enghraifft, gallwn ei gyfarwyddo i anfon e-bost yn cynnwys rhai manylion.
Er mwyn cyflawni hyn, rydym yn dilyn dull piblinell gan ddefnyddio LangChain. Yn gyntaf, rydym yn cymryd y ddogfen yr ydym am ei chael model iaith i gyfeirio ato a'i rannu'n dalpiau llai. Yna caiff y darnau hyn eu storio fel mewnosodiadau, sef cynrychioliadau fector o'r testun, mewn Cronfa Ddata Fector.
Gyda'r gosodiad hwn, gallwn adeiladu cymwysiadau model iaith sy'n dilyn piblinell safonol: mae defnyddiwr yn gofyn cwestiwn cychwynnol, a anfonir wedyn at y model iaith. Defnyddir cynrychioliad fector y cwestiwn i wneud chwiliad tebygrwydd yn y Gronfa Ddata Fector, gan adfer y darnau perthnasol o wybodaeth.
Mae'r darnau hyn wedyn yn cael eu bwydo'n ôl i'r model iaith, gan ei alluogi i roi ateb neu gymryd y camau a ddymunir.
Mae LangChain yn hwyluso datblygiad cymwysiadau sy'n ymwybodol o ddata, oherwydd gallwn gyfeirio at ein data ein hunain mewn storfa fector, a dilys, gan y gallant gymryd camau y tu hwnt i ateb cwestiynau. T
mae'n agor llu o achosion defnydd ymarferol, yn enwedig mewn cymorth personol, lle gall model iaith mawr ymdrin â thasgau fel archebu teithiau hedfan, trosglwyddo arian, neu gynorthwyo gyda materion yn ymwneud â threth.
Yn ogystal, mae'r goblygiadau ar gyfer astudio a dysgu pynciau newydd yn sylweddol, gan y gall model iaith gyfeirio at faes llafur cyfan a chyflymu'r broses ddysgu. Disgwylir i godio, dadansoddi data a gwyddor data hefyd gael eu dylanwadu'n fawr gan y datblygiadau hyn.
Un o'r rhagolygon mwyaf cyffrous yw cysylltu modelau iaith mawr â data cwmnïau presennol, megis gwybodaeth cwsmeriaid neu ddata marchnata. Mae'r integreiddio hwn ag APIs datblygedig fel API Meta neu API Google yn addo cynnydd esbonyddol mewn dadansoddeg data a gwyddor data.
Sut i Adeiladu Tudalen We (Demo)
Ar hyn o bryd, mae Langchain ar gael fel Pecynnau Python a JavaScript.
Gallwn greu Web App arddangos gan ddefnyddio Streamlit, LangChain, a'r model OpenAI GPT-3 i weithredu cysyniad LangChain.
Ond yn gyntaf, rhaid inni osod ychydig o ddibyniaethau, gan gynnwys Streamlit, LangChain, ac OpenAI.
Rhagofynion
Syml: Pecyn Python poblogaidd ar gyfer creu cymwysiadau gwe sy'n gysylltiedig â gwyddoniaeth data
OpenAI: Mae angen mynediad at fodel iaith GPT-3 OpenAI.
I osod y dibyniaethau hyn, defnyddiwch y gorchmynion canlynol yn cmd:
pip install streamlit
pip install langchain
pip install openai
Pecynnau Mewnforio
Rydym yn dechrau trwy fewnforio'r pecynnau gofynnol, megis OpenAI, LangChain, a Streamlit. Mae ein cadwyni model iaith yn cael eu diffinio a'u gweithredu gan ddefnyddio tri dosbarth o LangChain: LLMChain, SimpleSequentialChain, a PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Sefydlu Sylfaenol
Yna gosodwyd sylfaen strwythurol ein prosiect gan ddefnyddio cystrawen Streamlit. Rhoesom y teitl “Beth Sy'n WIR: Defnyddio Cadwyn Ddilyniannol Syml” i'r ap ac roedd yn cynnwys dolen marcio i lawr i ystorfa GitHub a oedd yn ysbrydoliaeth i'r ap.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Widgets Pen Blaen
Fe wnaethom sefydlu'r ap gydag ychydig o wybodaeth berthnasol, gan ddefnyddio cystrawen Streamlit syml:
# 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")
I ychwanegu teclynnau pen blaen
Ymhellach, mae angen i ni ddarparu teclyn mewnbwn i ganiatáu i'n defnyddwyr nodi unrhyw gwestiynau.
# 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?",
)
Pawb wedi'i wneud! Mae'r cadwyni ar waith!
Rydym yn cyflogi cadwyni amrywiol o weithrediadau ynghyd â SimpleSequentialChain
i ymateb i ymholiad y defnyddiwr. Cynhelir y cadwyni yn y dilyniant canlynol pan fydd y defnyddiwr yn dewis y "Tell me about it"
botwm:
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
: sef y cam cyntaf ar y gweill, yn derbyn cwestiwn y defnyddiwr fel mewnbwn ac allbwn. Mae ymholiad y defnyddiwr yn gweithredu fel templed y gadwyn.- Yn seiliedig ar ddatganiad sy'n gysylltiedig â'r cwestiwn, mae'r
assumptions_chain
cynhyrchu rhestr pwyntiau bwled o dybiaethau gan ddefnyddio'r allbwn o'rquestion_chain
fel mewnbwn. Mae'rLLMChain
acOpenAI
defnyddiwyd model o LangChain i lunio'r datganiad. Mae'r defnyddiwr yn cael y dasg o greu rhestr o'r rhagdybiaethau a wnaed er mwyn cynhyrchu'r datganiad gan ddefnyddio'r templed ar gyfer y gadwyn hon. - Yn seiliedig ar yr allbynnau o'r
question_chain
acassumptions_chain
,fact_checker_chain
yn cynhyrchu rhestr o honiadau ar ffurf pwyntiau bwled. Cynhyrchir yr honiadau gan ddefnyddio'rOpenAI
model aLLMChain
o LangChain. Y defnyddiwr sy'n gyfrifol am benderfynu a yw pob hawliad yn gywir neu'n anghywir a darparu cyfiawnhad dros y rhai sydd. - Mae adroddiadau
answer_chain
yn defnyddio'r allbynnau o'rquestion_chain
,assumptions_chain
, afact_checker_chain
fel mewnbynnau i greu ymateb i gwestiwn y defnyddiwr gan ddefnyddio'r data a gynhyrchwyd gan y cadwyni cynharach. Mae'r templed ar gyfer y gadwyn hon yn gofyn i'r defnyddiwr ymateb i'r ymholiad cyntaf gan ddefnyddio'r ffeithiau a grëwyd. - Er mwyn darparu'r ymateb terfynol i ymholiad y defnyddiwr yn seiliedig ar y wybodaeth a gynhyrchwyd gan y cadwyni cynharach, rydym yn integreiddio'r cadwyni hyn i'r gadwyn gyffredinol. Ar ôl i'r cadwyni gael eu cwblhau, rydyn ni'n defnyddio
st.success()
i ddangos y datrysiad i'r defnyddiwr.
Casgliad
Yn syml, gallwn gadwyno gwahanol gamau model iaith i greu piblinellau mwy cymhleth drwy ddefnyddio'r SimpleSequentialChain
modiwl o LangChain. Ar gyfer amrywiaeth eang o gymwysiadau NLP, gan gynnwys chatbots, systemau cwestiwn-ac-ateb, ac offer cyfieithu iaith, gallai hyn fod yn eithaf defnyddiol.
Gwelir disgleirdeb LangChain yn ei allu i haniaethu, sy'n galluogi'r defnyddiwr i ganolbwyntio ar y mater cyfredol yn hytrach na manylion modelu iaith.
Mae LangChain yn gwneud y broses o greu modelau iaith soffistigedig yn fwy hawdd ei defnyddio trwy gynnig modelau sydd wedi'u hyfforddi ymlaen llaw a detholiad o dempledi.
Mae'n rhoi'r opsiwn i chi fireinio'r modelau iaith gan ddefnyddio eu data eu hunain, gan ei gwneud hi'n hawdd addasu'r modelau iaith. Mae hyn yn galluogi datblygu modelau mwy manwl gywir, parth-benodol sydd, ar gyfer swydd benodol, yn perfformio'n well na'r modelau hyfforddedig.
Mae adroddiadau SimpleSequentialChain
modiwl a nodweddion eraill LangChain yn ei wneud yn arf effeithiol ar gyfer datblygu a defnyddio systemau NLP soffistigedig yn gyflym.
Gadael ymateb