LangChain — это передовой и надежный инструмент, разработанный для использования возможностей больших языковых моделей (LLM).
Эти LLM обладают замечательными возможностями и могут эффективно решать широкий спектр задач. Однако важно отметить, что их сила заключается в их общем характере, а не в глубоком знании предметной области. Его популярность быстро росла с момента появления GPT-4.
Хотя LLM отлично справляются с различными задачами, они могут столкнуться с ограничениями, когда дело доходит до предоставления конкретных ответов или решения задач, требующих глубоких знаний предметной области. Рассмотрим, например, использование LLM для ответов на вопросы или выполнения задач в специализированных областях, таких как медицина или юриспруденция.
Хотя LLM, безусловно, может ответить на общие вопросы об этих областях, ему может быть трудно предложить более подробные или детализированные ответы, которые требуют специальных знаний или опыта.
Это связано с тем, что LLM обучаются на огромном количестве текстовых данных из различных источников, что позволяет им изучать закономерности, понимать контекст и генерировать связные ответы. Однако их обучение обычно не включает в себя приобретение конкретных предметных или специализированных знаний в той же степени, что и люди-эксперты в этих областях.
Поэтому, хотя LangChain в сочетании с LLM может быть бесценным инструментом для решения широкого круга задач, важно осознавать, что в определенных ситуациях все же может потребоваться глубокое знание предметной области. Эксперты-люди со специальными знаниями могут обеспечить необходимую глубину, тонкое понимание и понимание контекста, которые могут быть за пределами возможностей одних только LLM.
Мы советуем посмотреть документы LangChain или GitHub репозиторий для более полного понимания его типичных случаев использования. Настоятельно рекомендуется получить более широкое представление об этом комплекте.
Как это работает?
Чтобы понять назначение и работу LangChain, рассмотрим практический пример. Мы знаем, что GPT-4 обладает впечатляющими общими знаниями и может дать надежные ответы на широкий круг вопросов.
Однако что, если нам нужна конкретная информация из наших собственных данных, таких как личный документ, книга, файл PDF или собственная база данных?
LangChain позволяет нам подключить большая языковая модель как GPT-4 к нашим собственным источникам данных. Это выходит за рамки простой вставки фрагмента текста в интерфейс чата. Вместо этого мы можем ссылаться на всю базу данных, заполненную нашими собственными данными.
Как только мы получим нужную информацию, LangChain может помочь нам предпринять определенные действия. Например, мы можем поручить ему отправить электронное письмо, содержащее определенные детали.
Для этого мы используем конвейерный подход с использованием LangChain. Во-первых, мы берем документ, который мы хотим языковая модель для ссылки и разделить его на более мелкие куски. Затем эти фрагменты сохраняются как вложения, которые векторные представления текста в векторной базе данных.
С помощью этой настройки мы можем создавать приложения языковой модели, которые следуют стандартному конвейеру: пользователь задает первоначальный вопрос, который затем отправляется в языковую модель. Векторное представление вопроса используется для выполнения поиска сходства в базе данных векторов, извлечения соответствующих фрагментов информации.
Затем эти фрагменты возвращаются в языковую модель, что позволяет ей предоставить ответ или выполнить желаемое действие.
LangChain облегчает разработку приложений, которые учитывают данные, поскольку мы можем ссылаться на наши собственные данные в векторном хранилище, и аутентичные, поскольку они могут выполнять действия помимо ответов на вопросы. Т
это открывает множество практических вариантов использования, особенно в сфере личной помощи, где большая языковая модель может выполнять такие задачи, как бронирование рейсов, перевод денег или помощь в вопросах, связанных с налогами.
Кроме того, последствия для изучения и изучения новых предметов значительны, поскольку языковая модель может ссылаться на весь учебный план и ускорять процесс обучения. Ожидается, что эти достижения также сильно повлияют на кодирование, анализ данных и науку о данных.
Одной из самых захватывающих перспектив является подключение больших языковых моделей к существующим данным компании, таким как информация о клиентах или маркетинговые данные. Эта интеграция с передовыми API, такими как API Meta или API Google, обещает экспоненциальный прогресс в области анализа данных и науки о данных.
Как создать веб-страницу (демо)
В настоящее время Langchain доступен в виде пакетов Python и JavaScript.
Мы можем создать демонстрационное веб-приложение, используя Streamlit, LangChain и модель OpenAI GPT-3 для реализации концепции LangChain.
Но сначала мы должны установить несколько зависимостей, включая Streamlit, LangChain и OpenAI.
Предварительные условия
Стримлит: Популярный пакет Python для создания веб-приложений, связанных с наукой о данных.
ОпенАИ: Необходим доступ к языковой модели 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
в качестве ввода.LLMChain
иOpenAI
модель из LangChain использовалась для построения оператора. Перед пользователем ставится задача создать список предположений, которые были сделаны для создания утверждения с использованием шаблона для этой цепочки. - На основе выводов из
question_chain
иassumptions_chain
,fact_checker_chain
генерирует список утверждений в виде маркеров. Претензии составляются с использованиемOpenAI
модель иLLMChain
от Лангчейн. Перед пользователем ставится задача определить, является ли каждое утверждение точным или неправильным, и предоставить обоснование для тех, которые являются таковыми. - Ассоциация
answer_chain
использует выходы изquestion_chain
,assumptions_chain
качестваfact_checker_chain
в качестве входных данных для создания ответа на вопрос пользователя с использованием данных, полученных более ранними цепочками. Шаблон для этой цепочки требует, чтобы пользователь ответил на первый запрос, используя созданные факты. - Чтобы предоставить окончательный ответ на запрос пользователя на основе информации, полученной от более ранних цепочек, мы интегрируем эти цепочки в общую цепочку. После завершения цепочек используем
st.success()
чтобы показать пользователю решение.
Заключение
Мы можем просто связать вместе различные действия языковой модели, чтобы создать более сложные конвейеры, используя SimpleSequentialChain
модуль LangChain. Для широкого спектра приложений НЛП, включая чат-боты, системы вопросов и ответов и инструменты языкового перевода, это может оказаться весьма полезным.
Великолепие LangChain заключается в его способности абстрагироваться, что позволяет пользователю сосредоточиться на текущей проблеме, а не на специфике языкового моделирования.
LangChain делает процесс создания сложных языковых моделей более удобным для пользователя, предлагая предварительно обученные модели и набор шаблонов.
Это дает вам возможность тонкой настройки языковых моделей с использованием их собственных данных, что упрощает настройку языковых моделей. Это позволяет разрабатывать более точные предметно-ориентированные модели, которые для данной работы превосходят обученные модели.
Ассоциация SimpleSequentialChain
модуль и другие функции LangChain делают его эффективным инструментом для быстрой разработки и развертывания сложных систем НЛП.
Оставьте комментарий