? Megabots предоставляет современные приложения LLM, готовые к производству, стали мега-легкими, так что вам не нужно строить их с нуля? Создать бот, сейчас?
Библиотека мегаботов можно использовать для создания ботов, которые:
? Megabots поддерживает некоторые из самых известных инструментов для производственного ИИ. Он использует Langchain для управления цепями LLM, Langchain-Serve, чтобы создать API, готовый к производству, Gradio для создания пользовательского интерфейса. На данный момент он использует OpenAI для генерации ответов, но мы планируем поддержать другие LLM в будущем.
Примечание: это работа в процессе. API может измениться.
pip install megabots from megabots import bot
import os
os . environ [ "OPENAI_API_KEY" ] = "my key"
# Create a bot with one line of code. Automatically loads your data from ./index or index.pkl.
# Keep in mind that you need to have one or another.
qnabot = bot ( "qna-over-docs" )
# Ask a question
answer = qnabot . ask ( "How do I use this bot?" )
# Save the index to save costs (GPT is used to create the index)
qnabot . save_index ( "index.pkl" )
# Load the index from a previous run
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" )
# Or create the index from a directory of documents
qnabot = bot ( "qna-over-docs" , index = "./index" )
# Change the model
qnabot = bot ( "qna-over-docs" , model = "text-davinci-003" ) Вы можете изменить Propnpt Bots, чтобы настроить его на ваши потребности. В BOT типа qna-over-docs вам нужно будет передать 2 переменные для context (KNWOLEDEGE SURKINE OT INDEX) и question (вопрос человека).
from megabots import bot
prompt = """
Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
Answer in the style of Tony Stark.
{context}
Question: {question}
Helpful humorous answer:"""
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , prompt = prompt )
qnabot . ask ( "what was the first roster of the avengers?" ) Вы можете легко добавить память к вашему bot , используя параметр memory . Он принимает строку с типом памяти, которая будет использоваться. Это по умолчанию некоторых здравомыслящих Dafaults. Если вам нужна дополнительная конфигурация, вы можете использовать функцию memory и передать тип памяти и необходимую вам конфигурацию.
from megabots import bot
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , memory = "conversation-buffer" )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" ))
# Bot should understand who "he" refers to. Или используя функцию заводской memory
from megabots import bot , memory
mem ( "conversation-buffer-window" , k = 5 )
qnabot = bot ( "qna-over-docs" , index = "./index.pkl" , memory = mem )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" )) Примечание. Для бота qna-over-docs при использовании памяти и передачи пользовательской подсказки важно непредубежать еще одну переменную в вашу пользовательскую подсказку для облегчения истории чата. Имя переменной - history .
from megabots import bot
prompt = """
Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}
{history}
Human: {question}
AI:"""
qnabot = bot ( "qna-over-docs" , prompt = prompt , index = "./index.pkl" , memory = "conversation-buffer" )
print ( qnabot . ask ( "who is iron man?" ))
print ( qnabot . ask ( "was he in the first roster?" )) Megabots bot также может использовать Milvus в качестве бэкэнда для своей поисковой системы. Вы можете найти пример того, как сделать это ниже.
Чтобы запустить Milvus, вам нужно следовать этому руководству, чтобы загрузить файл Docker Compose и запустить его. Команда:
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.7/examples/hello_milvus.pyЗатем вы можете установить ATTU в качестве инструмента управления для Milvus
from megabots import bot
# Attach a vectorstore by passing the name of the database. Default port for milvus is 19530 and default host is localhost
# Point it to your files directory so that it can index the files and add them to the vectorstore
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = "milvus" )
bot . ask ( "what was the first roster of the avengers?" ) Или используйте функцию заводки vectorstore для получения дополнительной настройки
from megabots import bot , vectorstore
milvus = vectorstore ( "milvus" , host = "localhost" , port = 19530 )
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = milvus ) Вы также можете разоблачить конечные точки бота локально, используя Langchain-Serve. Пример файла api.py представлен в папке megabots .
Чтобы разоблачить API на местном уровне, вы можете сделать
lc-serve deploy local megabots.api Затем вы должны иметь возможность посетить http://localhost:8000/docs чтобы увидеть и взаимодействовать с документацией API.
Чтобы развернуть ваш API в облако, вы можете сделать и подключиться к API, используя конечную точку, предоставленную на выходе.
lc-serve deploy jcloud megabots.api Вы можете разоблачить интерфейс Gradio для бота, используя функцию create_interface . Предполагая, что ваш файл называется ui.py запустить gradio qnabot/ui.py чтобы запустить пользовательский интерфейс локально. Затем вы должны иметь возможность посетить http://127.0.0.1:7860 , чтобы увидеть документацию API.
from megabots import bot , create_interface
demo = create_interface ( bot ( "qna-over-docs" )) Функция bot должна служить отправной точкой для создания и настройки вашего бота. Ниже приведен список доступных аргументов в bot .
| Аргумент | Описание |
|---|---|
| задача | Тип бота для создания. Доступные варианты: qna-over-docs . Скоро в ближайшее время |
| индекс | Определяет индекс для использования для бота. Это может быть либо сохраненный индексный файл (например, index.pkl ), либо каталог документов (например, ./index ). В случае каталога индекс будет создан автоматически. Если не указан индекс, bot будет искать index.pkl или ./index |
| модель | Название модели для использования для бота. Вы можете указать другую модель, предоставив ее название, например «Text-Davinci-003». Поддерживаемые модели: gpt-3.5-turbo (по умолчанию), text-davinci-003 , скоро. |
| быстрый | Шаблон строки для подсказки, который определяет формат вопроса и контекста, передаваемых модели. Шаблон должен включать в себя переменные заполнителя, такие как SO: context , {question} и в случае использования history памяти. |
| память | Тип памяти, который будет использоваться ботом. Может быть строкой с типом памяти или вы можете использовать функцию заводской memory . Поддерживаемые воспоминания: conversation-buffer , conversation-buffer-window |
| VectorStore | VectorStore, который будет использоваться для индекса. Может быть строкой с именем базы данных или вы можете использовать заводскую функцию vectorstore . Поддерживается DBS: milvus . |
Большие языковые модели (LLM) являются мощными, но они не могут ответить на вопросы о документах, которые они не видели. Если вы хотите использовать LLM, чтобы ответить на вопросы о документах, на которые он не был обучен, вы должны предоставить ему информацию об этих документах. Чтобы решить это, мы используем «поиск дополненного поколения».
Проще говоря, когда у вас есть вопрос, вы сначала ищите соответствующие документы. Затем вы даете документы и вопрос к языковой модели, чтобы генерировать ответ. Чтобы сделать эту работу, вам нужны ваши документы в формате для поиска (индекс). Этот процесс включает в себя два основных шага: (1) Подготовка ваших документов для легкого запроса и (2) использование метода получения добычей извлечения.
qna-over-docs использует FAISS для создания индекса документов и GPT для генерации ответов.
секвенированная
Актер пользователь
Участник API
Участник LLM
Участник VectorStore
Участник IngestionEngine
Участник DataLake
Автономный
Примечание по API, Datalake: фаза проглатывания
петлю каждое время
Ingestionengine ->> Datalake: загрузка документов
DataLake ->> IngestionEngine: вернуть данные
IngestionEngine ->> IngestionEngine: разделить документы и создавать построения
IngestionEngine ->> VectorStore: хранить документы и встраивания
конец
Примечание по API, Datalake: фаза генерации
User ->> API: получить вопрос пользователя
API ->> Vectorstore: документы поиска в индексе, относящиеся к вопросу
API ->> API: построить подсказку из вопроса и любых соответствующих документов
API ->> LLM: передать подсказку к модели
LLM ->> API: получить ответ от модели
API ->> Пользователь: возвратный ответ