LangChain е авангарден и стабилен инструмент, разработен, за да използва силата на големите езикови модели (LLM).
Тези LLM притежават забележителни възможности и могат ефективно да се справят с широк набор от задачи. Въпреки това е важно да се отбележи, че тяхната сила се крие в общия им характер, а не в задълбочения опит в областта. Популярността му нарасна бързо след въвеждането на GPT-4.
Въпреки че LLM се справят отлично с различни задачи, те може да се сблъскат с ограничения, когато става въпрос за предоставяне на конкретни отговори или справяне със задачи, които изискват задълбочени познания в областта. Помислете например за използване на LLM, за да отговаряте на въпроси или да изпълнявате задачи в специализирани области като медицина или право.
Докато LLM със сигурност може да отговори на общи запитвания относно тези области, може да се затрудни да предложи по-подробни или нюансирани отговори, които изискват специализирани знания или опит.
Това е така, защото LLM се обучават на огромни количества текстови данни от различни източници, което им позволява да научат модели, да разберат контекста и да генерират съгласувани отговори. Въпреки това, тяхното обучение обикновено не включва придобиване на специфични за дадена област или специализирани знания в същата степен, както човешките експерти в тези области.
Ето защо, докато LangChain, във връзка с LLMs, може да бъде безценен инструмент за широк спектър от задачи, важно е да се признае, че задълбочената експертиза в областта все още може да е необходима в определени ситуации. Човешки експерти със специализирани познания могат да осигурят необходимата дълбочина, нюансирано разбиране и специфични за контекста прозрения, които може да надхвърлят възможностите само на LLM.
Препоръчваме ви да разгледате документите на LangChain или GitHub хранилище за по-задълбочено разбиране на неговите типични случаи на употреба. Силно се препоръчва да получите по-голяма картина на този пакет.
Как действа тя?
За да разберем целта и работата на LangChain, нека разгледаме един практически пример. Наясно сме, че GPT-4 има впечатляващи общи познания и може да предостави надеждни отговори на широк кръг от въпроси.
Но какво ще стане, ако искаме конкретна информация от нашите собствени данни, като например личен документ, книга, PDF файл или собствена база данни?
LangChain ни позволява да свържем a голям езиков модел като GPT-4 към нашите собствени източници на данни. Той надхвърля простото поставяне на фрагмент от текст в интерфейс за чат. Вместо това можем да се позоваваме на цяла база данни, пълна с наши собствени данни.
След като получим желаната информация, LangChain може да ни помогне да предприемем конкретни действия. Например, можем да го инструктираме да изпрати имейл, съдържащ определени подробности.
За да постигнем това, ние следваме тръбопроводен подход, използвайки LangChain. Първо вземаме документа, който искаме езиков модел за справка и разделяне на по-малки части. След това тези парчета се съхраняват като вграждания, които са векторни представяния на текста във векторна база данни.
С тази настройка можем да създаваме приложения на езиков модел, които следват стандартен конвейер: потребителят задава първоначален въпрос, който след това се изпраща на езиковия модел. Векторното представяне на въпроса се използва за извършване на търсене по подобие във векторната база данни, като се извличат съответните части от информация.
След това тези части се връщат обратно към езиковия модел, позволявайки му да предостави отговор или да предприеме желаното действие.
LangChain улеснява разработването на приложения, които са запознати с данни, тъй като можем да препращаме към нашите собствени данни във векторно хранилище, и автентични, тъй като те могат да предприемат действия извън отговорите на въпроси. T
той отваря множество случаи на практическа употреба, особено при лична помощ, където голям езиков модел може да се справи със задачи като резервиране на полети, превод на пари или помощ при въпроси, свързани с данъци.
Освен това, последиците за изучаването и изучаването на нови предмети са значителни, тъй като езиковият модел може да препраща към цяла учебна програма и да ускори процеса на обучение. Кодирането, анализът на данни и науката за данните също се очаква да бъдат силно повлияни от тези постижения.
Една от най-вълнуващите перспективи е свързването на големи езикови модели със съществуващи фирмени данни, като информация за клиенти или маркетингови данни. Тази интеграция с усъвършенствани API като API на Meta или API на Google обещава експоненциален напредък в анализа на данни и науката за данните.
Как да създадете уеб страница (демонстрация)
В момента Langchain се предлага като Python и JavaScript пакети.
Можем да създадем демонстрационно уеб приложение, използващо Streamlit, LangChain и модела OpenAI GPT-3, за да реализираме концепцията LangChain.
Но първо трябва да инсталираме няколко зависимости, включително Streamlit, LangChain и OpenAI.
Предварителни условия
Поточно осветен: Популярен пакет на Python за създаване на уеб приложения, свързани с науката за данни
OpenAI: Необходим е достъп до езиковия модел GPT-3 на OpenAI.
За да инсталирате тези зависимости, използвайте следните команди в cmd:
pip install streamlit
pip install langchain
pip install openai
Импортиране на пакети
Започваме с импортиране на необходимите пакети, като OpenAI, LangChain и Streamlit. Веригите на нашите езикови модели се дефинират и изпълняват с помощта на три класа от LangChain: LLMChain, SimpleSequentialChain и PromptTemplate.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Basic Setup
След това структурната основа на нашия проект беше поставена с помощта на синтаксиса Streamlit. Дадохме на приложението заглавието „Какво е ИСТИНА: Използване на проста последователна верига“ и включихме връзка за маркиране към хранилището на GitHub, което послужи като вдъхновение за приложението.
import streamlit as st
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
Предни джаджи
Настроихме приложението с малко подходяща информация, използвайки прост синтаксис на 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")
За да добавите джаджи в предния край
Освен това трябва да предоставим джаджа за въвеждане, за да позволим на нашите потребители да въвеждат всякакви въпроси.
# 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?",
)
Готово! Веригите са готови!
Използваме различни вериги от операции заедно с SimpleSequentialChain
за да отговорите на запитването на потребителя. Веригите се извършват в следната последователност, когато потребителят избере "Tell me about it"
бутон:
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
: което е първата стъпка в нашия процес, получава въпроса на потребителя като вход и изход. Заявката на потребителя служи като шаблон на веригата.- Въз основа на изявление, свързано с въпроса,
assumptions_chain
генерира списък с точки от предположения, използвайки изхода отquestion_chain
като вход. TheLLMChain
намляваOpenAI
модел от LangChain е използван за конструиране на изявлението. Потребителят има за задача да създаде списък с предположенията, които са направени, за да се създаде изявлението, като се използва шаблонът за тази верига. - Въз основа на резултатите от
question_chain
намляваassumptions_chain
-fact_checker_chain
генерира списък с твърдения под формата на точки. Претенциите са произведени с помощта наOpenAI
модел иLLMChain
от LangChain. Потребителят има за задача да определи дали всяко твърдение е точно или неправилно и да предостави обосновка за тези, които са. - -
answer_chain
използва изходите отquestion_chain
,assumptions_chain
, иfact_checker_chain
като входове за създаване на отговор на въпроса на потребителя, използвайки данните, произведени от по-ранните вериги. Шаблонът за тази верига изисква потребителят да отговори на първото запитване, използвайки създадените факти. - За да предоставим най-добрия отговор на запитването на потребителя въз основа на информацията, произведена от по-ранните вериги, ние интегрираме тези вериги в общата верига. След като веригите са завършени, използваме
st.success()
за да покаже на потребителя решението.
Заключение
Можем просто да свържем заедно различни действия на езиков модел, за да създадем по-сложни конвейери, като използваме SimpleSequentialChain
модул на LangChain. За голямо разнообразие от НЛП приложения, включително чатботове, системи за въпроси и отговори и инструменти за езиков превод, това може да бъде доста полезно.
Блясъкът на LangChain се намира в способността му да абстрахира, което позволява на потребителя да се концентрира върху текущия проблем, а не върху спецификата на езиковото моделиране.
LangChain прави процеса на създаване на сложни езикови модели по-удобен за потребителя, като предлага предварително обучени модели и селекция от шаблони.
Той ви дава възможност да прецизирате езиковите модели, като използвате техните собствени данни, което улеснява персонализирането на езиковите модели. Това позволява разработването на по-прецизни модели, специфични за дадена област, които за дадена работа превъзхождат обучените модели.
- SimpleSequentialChain
модул и други функции на LangChain го правят ефективен инструмент за бързо разработване и внедряване на сложни NLP системи.
Оставете коментар