LangChain — це передовий і надійний інструмент, розроблений для використання потужності великих мовних моделей (LLM).
Ці LLM мають надзвичайні можливості та можуть ефективно вирішувати широкий спектр завдань. Однак важливо зазначити, що їх перевага полягає в їх загальному характері, а не в глибокому досвіді в галузі. Його популярність швидко зросла після впровадження GPT-4.
Хоча LLM чудово справляються з різними завданнями, вони можуть зіткнутися з обмеженнями, коли справа доходить до надання конкретних відповідей або вирішення завдань, які вимагають глибоких знань у галузі. Розгляньте, наприклад, використання LLM, щоб відповідати на запитання або виконувати завдання в таких спеціалізованих галузях, як медицина чи право.
Хоча LLM, безумовно, може відповісти на загальні запити про ці галузі, йому може бути важко запропонувати більш детальні чи нюансовані відповіді, які вимагають спеціальних знань або досвіду.
Це пояснюється тим, що магістратури навчаються на величезній кількості текстових даних із різноманітних джерел, що дозволяє їм вивчати шаблони, розуміти контекст і генерувати послідовні відповіді. Однак їхнє навчання зазвичай не передбачає набуття предметних або спеціальних знань у такому ж обсязі, як люди-експерти в цих галузях.
Таким чином, незважаючи на те, що LangChain у поєднанні з LLM може бути безцінним інструментом для широкого спектру завдань, важливо визнати, що в певних ситуаціях може знадобитися глибока експертиза. Експерти-люди зі спеціальними знаннями можуть забезпечити необхідну глибину, детальне розуміння та контекстно-специфічні уявлення, які можуть виходити за межі можливостей одних лише магістрів права.
Радимо переглянути документи LangChain або GitHub репозиторій для більш повного розуміння його типових випадків використання. Настійно рекомендуємо отримати ширше уявлення про цей пакет.
Як це працює?
Щоб зрозуміти призначення та роботу LangChain, розглянемо практичний приклад. Ми усвідомлюємо, що GPT-4 має вражаючі загальні знання та може надати надійні відповіді на широкий спектр питань.
Однак що, якщо нам потрібна конкретна інформація з наших власних даних, як-от особистий документ, книга, PDF-файл або приватна база даних?
LangChain дозволяє підключити a велика модель мови наприклад GPT-4 до наших власних джерел даних. Це виходить за рамки простого вставлення фрагмента тексту в інтерфейс чату. Замість цього ми можемо посилатися на всю базу даних, заповнену нашими власними даними.
Коли ми отримаємо потрібну інформацію, LangChain може допомогти нам у вживанні конкретних дій. Наприклад, ми можемо вказати йому надіслати електронний лист із певними деталями.
Щоб досягти цього, ми використовуємо конвеєрний підхід, використовуючи LangChain. Спочатку беремо потрібний нам документ мовна модель посилатися та розділити його на менші частини. Потім ці фрагменти зберігаються як вбудовування, які є векторні представлення тексту у векторній базі даних.
За допомогою цього налаштування ми можемо створювати додатки мовної моделі, які слідують стандартному конвеєру: користувач задає початкове запитання, яке потім надсилається до мовної моделі. Векторне представлення питання використовується для виконання пошуку подібності у векторній базі даних, отримання відповідних фрагментів інформації.
Потім ці блоки повертаються до моделі мови, що дозволяє їй надати відповідь або виконати бажану дію.
LangChain полегшує розробку додатків, які орієнтуються на дані, оскільки ми можемо посилатися на власні дані у векторному сховищі, і автентичні, оскільки вони можуть виконувати дії, окрім відповідей на запитання. Т
це відкриває безліч практичних випадків використання, зокрема в особистій допомозі, де велика мовна модель може виконувати такі завдання, як бронювання авіаквитків, переказ грошей або допомога з податковими питаннями.
Крім того, наслідки для вивчення та вивчення нових предметів є значними, оскільки мовна модель може посилатися на весь навчальний план і прискорити процес навчання. Також очікується, що ці досягнення значно вплинуть на кодування, аналіз даних і науку про дані.
Однією з найцікавіших перспектив є підключення великих мовних моделей до існуючих даних компанії, таких як інформація про клієнтів або маркетингові дані. Ця інтеграція з розширеними API, такими як API Meta або API Google, обіцяє експоненційний прогрес у аналітиці та науці даних.
Як створити веб-сторінку (демо)
Зараз Langchain доступний у вигляді пакетів Python і JavaScript.
Ми можемо створити демонстраційний веб-додаток, використовуючи Streamlit, LangChain і модель OpenAI GPT-3 для реалізації концепції LangChain.
Але спочатку ми повинні встановити кілька залежностей, зокрема Streamlit, LangChain і OpenAI.
Передумови
Streamlit: Популярний пакет Python для створення веб-додатків, пов’язаних із наукою про дані
OpenAI: Потрібен доступ до мовної моделі OpenAI GPT-3.
Щоб установити ці залежності, використовуйте такі команди в 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
Основна настройка
Структурна основа нашого проекту була створена за допомогою синтаксису 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.
залишити коментар