Чат-боты становятся все более популярными для взаимодействия с предприятиями и другими организациями. Их можно использовать для обслуживания клиентов, ответа на вопросы и даже для создания творческого контента. Создание собственного чат-бота может значительно улучшить качество обслуживания клиентов и автоматизировать задачи.
API OpenAI предоставляет мощный инструмент для создания чат-ботов. Он дает вам доступ к большим языковым моделям OpenAI, которые могут генерировать текст, переводить языки и отвечать на вопросы всесторонне и неформально.
В этой статье вы узнаете больше о ChatGPT и создадите собственного чат-бота с использованием Python и платформы Langchain с созданием внешнего интерфейса на основе Gradio.
Вот шаги, предпринимаемые в этом упражнении:
1. Создайте учетную запись OpenAI и получите ключ API. 2. Выберите большую языковую модель для использования. 3. Используйте платформу Langchain. 4. Используйте интерфейс Gradio для развертывания своего чат-бота.
ChatGPT — это модель искусственного интеллекта обработки языка, созданная OpenAI. Он имеет 175 миллиардов параметров и может отвечать на вопросы, писать эссе и стихи, переводить языки, обобщать длинные тексты и писать фрагменты кода. ChatGPT использует технологию обработки естественного языка и машинного обучения для понимания и генерации ответов, похожих на человеческие.
Вы можете посетить платформу.openai.com[1], создать учетную запись OpenAI и согласиться с условиями ChatGPT.
Нажмите на свое имя или значок в правом верхнем углу страницы и выберите «Ключи API» или нажмите ссылку — Ключи API учетной записи — OpenAI API[2]
Нажмите кнопку «Создать новый секретный ключ», чтобы создать новый ключ OpenAI.
Пожалуйста, храните секретный ключ в безопасном и доступном месте. По соображениям безопасности вы не сможете просмотреть его снова через свою учетную запись OpenAI.
Существует множество факторов, определяющих выбор большой языковой модели для создания собственного чат-бота.
1.Определите свой**чат-бот**Цель:ты хочешь свойчат-ботчто можно сделать?Какие задачи вы хотите, чтобы он выполнял??Как только вы определилисьчат-ботцель,Вы можете начать сужать большие языки Модельдиапазон выбора。2.Учитывайте размер вашего набора данных:данные Чем больше набор,чат-ботмогу поучиться на этомданныетем больше。Это означает, что вам нужно выбрать большой язык с большим количеством параметров.Модель。3.Подумайте, что вы хотите**чат-ботсозданныйТип контента**:ты хочешьчат-бот Умение создавать креативные текстовые форматы,Например, стихи, коды, сценарии, музыкальные композиции, электронные письма, письма и т. д.,Все еще надеюсь, что он ответит на вопрос всесторонне и информативно.?ты хочешьчат-ботсозданный Тип контента将帮助您缩小большой язык Модельдиапазон выбора。4.Рассмотрим стоимость больших языковых моделей:использоватьбольшой язык Модельможет быть дорогим。Если у вас есть бюджетные ограничения,Возможно, вы захотите выбрать меньший язык Модель。5.Прочтите документацию для каждой большой языковой модели:每个большой язык Модель Документация предоставит вам информацию о Модель Более подробная информация о возможностях и ограничениях。Эта информация поможет вам решить, что подойдет именно вам.чат-ботиз Модель做出明智из决策。6.Тестируйте различные большие языковые модели:Как только вы сузили свой выбор,Вы можете тестировать разные большие языки Модель,смотреть Какой чат-бот вам больше всего подходит? Вы можете использовать OpenAI API для генерации текста, перевода на языки и ответа на вопросы для тестирования.
Для текущих учений была выбрана модель ГПТ-3,5-Турбо. GPT-3.5-Turbo со 175 миллиардами параметров является одной из крупнейших языковых моделей, доступных в настоящее время. GPT-3.5-Turbo работает быстро и эффективно, генерируя ответы в режиме реального времени. Это делает его идеальным для чат-ботов, которым необходимо идти в ногу с темпом общения.
LangChain просто объединяет большие объемы данных, на которые может ссылаться LLM, с минимально возможной вычислительной мощностью. Он работает путем разделения большого источника данных, такого как 50-страничный PDF-файл, и встраивания фрагментов в векторное хранилище.
Мы начнем с установки необходимых библиотек Python, необходимых для этого упражнения. Вы можете использовать Jupyter Notebook или другую аналогичную среду разработки, например Visual Studio.
pip install streamlit streamlit_chat langchain openai faiss-cpu tiktoken unstructured chromadb gradio
•создать файлconstants.py
并提供你изOpenAI API-ключ
Замените и переименуйте этот файл в Constants.py.
APIKEY = "####"
•Создайте новый файл Python chatgpt_demo.py
или chatgpt_demo.ipynb
и добавьте в него следующий код. Импортируйте следующие библиотеки в свой код.
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ключ
os.environ["OPENAI_API_KEY"] = constants.APIKEY
Долженкодназначив егоos.environ["OPENAI_API_KEY"]
ПриходитьнастраиватьOpenAI API-ключ。ДолженAPI-ключпозволятьчат-бот КOpenAI API отправляет запрос для генерации ответа. "
пожалуйста, обрати внимание,Этот код требует дополнительной настройки,Например вconstants
указано в модулеAPIKEY
并准备必要изданныедокумент。
•Обработка настойчивости
PERSIST = False
PERSIST
переменная определеначат-бот Стоит ли повторятьиспользовать先前保存изиндекс。если включеноPERSIST
и существует под названием"persist"из持久目录,нокод会从Должен目录加载预构建изиндекс。если отключеноPERSIST
или Должен目录不存在,нокод会创建一个新изиндекс。
•Загрузка и индексирование документов
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
класс выполняет операции над этими документамииндекс,для достижения эффективного поиска.
•Создать цепочку разговоров
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) для формирования цепочки разговоров. Эта цепочка взаимодействует с языковой моделью для генерации релевантных ответов на основе запроса пользователя.
•Обработка истории чата
chat_history = []
Переменная «chat_history» используется для отслеживания истории разговоров, сохраняя запросы пользователя и ответы чат-бота в виде кортежей. Это позволяет чат-боту сохранять контекст и предоставлять релевантные ответы на основе прошлых взаимодействий.
•Определить функцию ответа
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
) генерировать ответы. История чата будет обновляться новыми вопросами и ответами.
Теперь, когда ваш код готов, мы можем использовать Gradio для его развертывания.
•настраиватьпользовательский интерфейс
iface = gr.Interface( fn=answer_question, inputs="text", outputs="text", title="Chatbot", описание="Задавайте вопросы и получайте ответы из пользовательских документов")
использоватьgr.Interface
,Этот код определяет пользовательский интерфейс чат-бота. Он определяет типы ввода и вывода (в данном случае оба текста).,А заголовок и описание даны, чтобы объяснить назначение чат-бота.
•запускатьчат-бот
iface.launch(share=True)
Команда iface.launch(share=True) запускает интерфейс чат-бота, позволяя пользователям взаимодействовать с чат-ботом через веб-приложение. Параметр «share=True» разрешает делиться приложением по общедоступной ссылке.
Создайте образец набора данных
现在我们Приходить添加样本данные集Приходить测试чат-бот。您可以创建一个样本текстдокумент并将其另存为data.txt,Это образец текстового файла.
Мою собаку зовут Санни.
Моего кота зовут Маффи.
将документ保存在项目документ夹下изdataдокумент夹中。
После выполнения всех вышеперечисленных шагов вы можете использовать Jupyter. NotebookЗапускайте прямо вкод,или Запускайте сценарии Python из командной строки.
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. Если вам интересно, поставьте лайк, соберите , и следуйте.
[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