Создайте своего собственного чат-бота с помощью Gradio, Langchain и OpenAI.
Создайте своего собственного чат-бота с помощью Gradio, Langchain и OpenAI.

Чат-боты становятся все более популярными для взаимодействия с предприятиями и другими организациями. Их можно использовать для обслуживания клиентов, ответа на вопросы и даже для создания творческого контента. Создание собственного чат-бота может значительно улучшить качество обслуживания клиентов и автоматизировать задачи.

API OpenAI предоставляет мощный инструмент для создания чат-ботов. Он дает вам доступ к большим языковым моделям OpenAI, которые могут генерировать текст, переводить языки и отвечать на вопросы всесторонне и неформально.

В этой статье вы узнаете больше о ChatGPT и создадите собственного чат-бота с использованием Python и платформы Langchain с созданием внешнего интерфейса на основе Gradio.

Вот шаги, предпринимаемые в этом упражнении:

1. Создайте учетную запись OpenAI и получите ключ API. 2. Выберите большую языковую модель для использования. 3. Используйте платформу Langchain. 4. Используйте интерфейс Gradio для развертывания своего чат-бота.

Что такое ChatGPT?

ChatGPT — это модель искусственного интеллекта обработки языка, созданная OpenAI. Он имеет 175 миллиардов параметров и может отвечать на вопросы, писать эссе и стихи, переводить языки, обобщать длинные тексты и писать фрагменты кода. ChatGPT использует технологию обработки естественного языка и машинного обучения для понимания и генерации ответов, похожих на человеческие.

1. Создайте учетную запись OpenAI и получите ключ API.

Вы можете посетить платформу.openai.com[1], создать учетную запись OpenAI и согласиться с условиями ChatGPT.

Нажмите на свое имя или значок в правом верхнем углу страницы и выберите «Ключи API» или нажмите ссылку — Ключи API учетной записи — OpenAI API[2]

Нажмите кнопку «Создать новый секретный ключ», чтобы создать новый ключ OpenAI.

Пожалуйста, храните секретный ключ в безопасном и доступном месте. По соображениям безопасности вы не сможете просмотреть его снова через свою учетную запись OpenAI.

2. Выберите большую языковую модель для использования.

Существует множество факторов, определяющих выбор большой языковой модели для создания собственного чат-бота.

1.Определите свой**чат-бот**Цель:ты хочешь свойчат-ботчто можно сделать?Какие задачи вы хотите, чтобы он выполнял??Как только вы определилисьчат-ботцель,Вы можете начать сужать большие языки Модельдиапазон выбора。2.Учитывайте размер вашего набора данных:данные Чем больше набор,чат-ботмогу поучиться на этомданныетем больше。Это означает, что вам нужно выбрать большой язык с большим количеством параметров.Модель。3.Подумайте, что вы хотите**чат-ботсозданныйТип контента**:ты хочешьчат-бот Умение создавать креативные текстовые форматы,Например, стихи, коды, сценарии, музыкальные композиции, электронные письма, письма и т. д.,Все еще надеюсь, что он ответит на вопрос всесторонне и информативно.?ты хочешьчат-ботсозданный Тип контента将帮助您缩小большой язык Модельдиапазон выбора。4.Рассмотрим стоимость больших языковых моделей:использоватьбольшой язык Модельможет быть дорогим。Если у вас есть бюджетные ограничения,Возможно, вы захотите выбрать меньший язык Модель。5.Прочтите документацию для каждой большой языковой модели:每个большой язык Модель Документация предоставит вам информацию о Модель Более подробная информация о возможностях и ограничениях。Эта информация поможет вам решить, что подойдет именно вам.чат-ботиз Модель做出明智из决策。6.Тестируйте различные большие языковые модели:Как только вы сузили свой выбор,Вы можете тестировать разные большие языки Модель,смотреть Какой чат-бот вам больше всего подходит? Вы можете использовать OpenAI API для генерации текста, перевода на языки и ответа на вопросы для тестирования.

Для текущих учений была выбрана модель ГПТ-3,5-Турбо. GPT-3.5-Turbo со 175 миллиардами параметров является одной из крупнейших языковых моделей, доступных в настоящее время. GPT-3.5-Turbo работает быстро и эффективно, генерируя ответы в режиме реального времени. Это делает его идеальным для чат-ботов, которым необходимо идти в ногу с темпом общения.

3. Используйте фреймворк Langchain

LangChain просто объединяет большие объемы данных, на которые может ссылаться LLM, с минимально возможной вычислительной мощностью. Он работает путем разделения большого источника данных, такого как 50-страничный PDF-файл, и встраивания фрагментов в векторное хранилище.

Мы начнем с установки необходимых библиотек Python, необходимых для этого упражнения. Вы можете использовать Jupyter Notebook или другую аналогичную среду разработки, например Visual Studio.

Язык кода:javascript
копировать
pip install streamlit streamlit_chat langchain openai faiss-cpu tiktoken unstructured chromadb gradio

создать файлconstants.py并提供你изOpenAI API-ключ

Замените и переименуйте этот файл в Constants.py.

Язык кода:javascript
копировать
APIKEY = "####"

Создайте новый файл Python chatgpt_demo.py или chatgpt_demo.ipynb и добавьте в него следующий код. Импортируйте следующие библиотеки в свой код.

Язык кода:javascript
копировать
import gradio as grimport os
import openai from langchain.chains
import ConversationalRetrievalChain from langchain.chat_models 
import ChatOpenAI from langchain.document_loaders
import DirectoryLoader from langchain.indexes.vectorstore 
import VectorStoreIndexWrapper from langchain.indexes
import VectorstoreIndexCreator from langchain.llms
import OpenAI from langchain.embeddings 
import OpenAIEmbeddings from langchain.vectorstores.chroma 
import Chroma
import constants

Следующий текст будет переведен на zh-CN:

текст:“исходныйкодимпорт строкичат-бот所需из库。импортироватьgrбиблиотека для создания пользовательских интерфейсов, а такжеopenaiиosи другие библиотеки для обработки сOpenAI相关из操作。

настраиватьOpenAI APIключ

Язык кода:javascript
копировать
os.environ["OPENAI_API_KEY"] = constants.APIKEY

Долженкодназначив егоos.environ["OPENAI_API_KEY"]ПриходитьнастраиватьOpenAI API-ключ。ДолженAPI-ключпозволятьчат-бот КOpenAI API отправляет запрос для генерации ответа. "

пожалуйста, обрати внимание,Этот код требует дополнительной настройки,Например вconstantsуказано в модулеAPIKEY并准备必要изданныедокумент。

Обработка настойчивости

Язык кода:javascript
копировать
PERSIST = False

PERSISTпеременная определеначат-бот Стоит ли повторятьиспользовать先前保存изиндекс。если включеноPERSISTи существует под названием"persist"из持久目录,нокод会从Должен目录加载预构建изиндекс。если отключеноPERSISTили Должен目录不存在,нокод会创建一个新изиндекс。

Загрузка и индексирование документов

Язык кода:javascript
копировать
if PERSIST and os.path.exists("persist"): 
  print("Reusing index...\n") 
  vectorstore = Chroma(persist_directory="persist", embedding_function=OpenAIEmbeddings()) 
  index = VectorStoreIndexWrapper(vectorstore=vectorstore) 
  index.load("persist")
else: loader = DirectoryLoader("data/") 
if PERSIST: index = VectorstoreIndexCreator(vectorstore_kwargs=
  {"persist_directory":"persist"}).from_loaders([loader]) 
else: 
  index = VectorstoreIndexCreator().from_loaders([loader])

кодиспользоватьlangchain.document_loaders模块中изDirectoryLoaderКласс загружает документы из указанного каталога。ЗатемиспользоватьVectorstoreIndexCreatorкласс выполняет операции над этими документамииндекс,для достижения эффективного поиска.

Создать цепочку разговоров

Язык кода:javascript
копировать
chain = ConversationalRetrievalChain.from_llm(llm=ChatOpenAI(model="gpt-3.5-turbo"), 
retriever=index.vectorstore.as_retriever(search_kwargs={"k": 1}))

«ConversationalRetrivalChain» — это основа чат-бота. Он сочетает в себе языковую модель (ChatOpenAI) со средством извлечения документов (index.vectorstore.as_retriever) для формирования цепочки разговоров. Эта цепочка взаимодействует с языковой моделью для генерации релевантных ответов на основе запроса пользователя.

Обработка истории чата

Язык кода:javascript
копировать
chat_history = []

Переменная «chat_history» используется для отслеживания истории разговоров, сохраняя запросы пользователя и ответы чат-бота в виде кортежей. Это позволяет чат-боту сохранять контекст и предоставлять релевантные ответы на основе прошлых взаимодействий.

Определить функцию ответа

Язык кода:javascript
копировать
def answer_question(question): global chat_history result = chain({"question": question, "chat_history": chat_history}) chat_history.append((question, result['answer'])) return result['answer']

answer_question Функция принимает на вход вопрос. Он вызывает цепочку разговоров, используя текущую историю чата. (chain) генерировать ответы. История чата будет обновляться новыми вопросами и ответами.

4. Разверните своего чат-бота с помощью Gradio

Теперь, когда ваш код готов, мы можем использовать Gradio для его развертывания.

настраиватьпользовательский интерфейс

Язык кода:javascript
копировать
iface = gr.Interface( fn=answer_question, inputs="text", outputs="text", title="Chatbot", описание="Задавайте вопросы и получайте ответы из пользовательских документов")

использоватьgr.Interface,Этот код определяет пользовательский интерфейс чат-бота. Он определяет типы ввода и вывода (в данном случае оба текста).,А заголовок и описание даны, чтобы объяснить назначение чат-бота.

запускатьчат-бот

Язык кода:javascript
копировать
iface.launch(share=True)

Команда iface.launch(share=True) запускает интерфейс чат-бота, позволяя пользователям взаимодействовать с чат-ботом через веб-приложение. Параметр «share=True» разрешает делиться приложением по общедоступной ссылке.

Создайте образец набора данных

现在我们Приходить添加样本данные集Приходить测试чат-бот。您可以创建一个样本текстдокумент并将其另存为data.txt,Это образец текстового файла.

Мою собаку зовут Санни.

Моего кота зовут Маффи.

将документ保存在项目документ夹下изdataдокумент夹中。

Запустить приложение

После выполнения всех вышеперечисленных шагов вы можете использовать Jupyter. NotebookЗапускайте прямо вкод,или Запускайте сценарии Python из командной строки.

Код для запуска сценария Python из командной строки

Язык кода:javascript
копировать
python chatbot_demo.py

Вы получите следующий результат

В зависимости от того, как вы получаете доступ,Вы можете нажать на URL. или человек,Вы также можете скопировать URL-адрес и вставить его в свой браузер.

Вы получите следующий экран

Создайте с помощью Gradio

Теперь давайте зададим несколько вопросов и посмотрим ответы.

Вот что у вас есть! Ваш собственный на базе GPT3.5чат-бот:)

Подвести итог

В целом, этот код использует библиотеку Gradio для создания чат-бота и использует структуру Langchain для интеграции языковой модели OpenAI с системой поиска документов. Пользователи могут задавать вопросы и отвечать чат-боту на основе предоставленного набора данных документа и истории разговоров.

Полный код можно получить здесь [3].

заявление

Эта статья была переведена и составлена ​​Shanxing по адресу: https://pub.aimind.so/build-your-own-custom-chatbot-using-gradio-langchain-and-openai-ff65c6010f71. Если вам интересно, поставьте лайк, соберите , и следуйте.

References

[1] platform.openai.com: https://platform.openai.com/ [2] Account API Keys — OpenAI API: https://platform.openai.com/account/api-keys [3] здесь: https://github.com/rahulapiit/ChatBot

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода