? A Megabots fornece aplicativos LLM de produção de última geração, tornando-se mega-fácil, para que você não precise construí-los a partir do zero? Criar um bot, agora?
A Biblioteca Megabots pode ser usada para criar bots que:
? O Megabots é apoiado por algumas das ferramentas mais famosas para a produção de IA. Ele usa Langchain para gerenciar cadeias LLM, Langchain-Serve para criar uma API pronta para a produção, Gradio para criar uma interface do usuário. No momento, ele usa o OpenAI para gerar respostas, mas planejamos apoiar outros LLMs no futuro.
Nota: Este é um trabalho em andamento. A API pode mudar.
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" ) Você pode alterar o BOTS Promonpt a personalizá -lo para suas necessidades. No tipo qna-over-docs , você precisará passar 2 variáveis para o context (Knwoledge pesquisado no índice) e a question (a questão humana).
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?" ) Você pode adicionar facilmente memória ao seu bot usando o parâmetro memory . Ele aceita uma string com o tipo de memória a ser usada. Isso padrão é alguns sãos dafaults. Se você precisar de mais configuração, poderá usar a função memory e passar o tipo de memória e a configuração necessária.
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. Ou usando a função de fábrica 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?" )) NOTA: Para o bot qna-over-docs , ao usar a memória e passar seu prompt personalizado, é importante lembrar de passar mais uma variável para o seu prompt personalizado para facilitar o histórico de bate-papo. O nome da variável é 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?" )) O Megabots bot também pode usar o Milvus como um back -end para seu mecanismo de pesquisa. Você pode encontrar um exemplo de como fazê -lo abaixo.
Para executar o Milvus, você precisa seguir este guia para baixar um arquivo de composição do Docker e executá -lo. O comando é:
wget https://raw.githubusercontent.com/milvus-io/pymilvus/v2.2.7/examples/hello_milvus.pyVocê pode instalar o ATTU como uma ferramenta de gerenciamento para 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?" ) Ou use a função vectorstore Factory para mais personalização
from megabots import bot , vectorstore
milvus = vectorstore ( "milvus" , host = "localhost" , port = 19530 )
bot = bot ( "qna-over-docs" , index = "./examples/files/" , vectorstore = milvus ) Você também pode expor os pontos de extremidade do bot localmente usando o Langchain-serve. Uma amostra de arquivo api.py é fornecida na pasta megabots .
Para expor a API localmente, você pode fazer
lc-serve deploy local megabots.api Você poderá visitar http://localhost:8000/docs para ver e interagir com a documentação da API.
Para implantar sua API na nuvem, você pode fazer e se conectar à API usando o terminal fornecido na saída.
lc-serve deploy jcloud megabots.api Você pode expor uma interface do graduação para o bot usando a função create_interface . Supondo que seu arquivo seja chamado de ui.py execute gradio qnabot/ui.py para executar a interface do usuário localmente. Você poderá visitar http://127.0.0.1:7860 para ver a documentação da API.
from megabots import bot , create_interface
demo = create_interface ( bot ( "qna-over-docs" )) A função bot deve servir como ponto de partida para criar e personalizar seu bot. Abaixo está uma lista dos argumentos disponíveis no bot .
| Argumento | Descrição |
|---|---|
| tarefa | O tipo de bot para criar. Opções disponíveis: qna-over-docs . Mais vindo em breve |
| índice | Especifica o índice a ser usado para o bot. Pode ser um arquivo de índice salvo (por exemplo, index.pkl ) ou um diretório de documentos (por exemplo, ./index ). No caso do diretório, o índice será criado automaticamente. Se nenhum índice for especificado, bot procurará index.pkl ou ./index |
| modelo | O nome do modelo a ser usado para o bot. Você pode especificar um modelo diferente, fornecendo seu nome, como "Text-Davinci-003". Modelos suportados: gpt-3.5-turbo (padrão), text-davinci-003 mais em breve. |
| incitar | Um modelo de string para o prompt, que define o formato da pergunta e contexto passados para o modelo. O modelo deve incluir variáveis de espaço reservado como So: context , {question} e, no caso de usar history da memória. |
| memória | O tipo de memória a ser usado pelo bot. Pode ser uma string com o tipo de memória ou você pode usar a função de fábrica memory . Memórias suportadas: conversation-buffer , conversation-buffer-window |
| VectorStore | O VectorStore a ser usado para o índice. Pode ser uma string com o nome do banco de dados ou você pode usar a função vectorstore Factory. DBS suportado: milvus . |
Os grandes modelos de idiomas (LLMs) são poderosos, mas não podem responder a perguntas sobre documentos que não viram. Se você deseja usar um LLM para responder a perguntas sobre documentos em que não foi treinado, você deve fornecer informações sobre esses documentos. Para resolver isso, usamos "geração aumentada de recuperação".
Em termos simples, quando você tem uma pergunta, primeiro procura documentos relevantes. Em seguida, você dá os documentos e a pergunta ao modelo de idioma para gerar uma resposta. Para fazer isso funcionar, você precisa de seus documentos em um formato pesquisável (um índice). Esse processo envolve duas etapas principais: (1) Preparando seus documentos para fácil consulta e (2) usando o método de geração aumentada de recuperação.
qna-over-docs usa o FAISS para criar um índice de documentos e GPT para gerar respostas.
Sequenciadoiagram
Usuário do ator
API do participante
Participante LLM
participante VectorStore
Ingestão de participantes
Datalake de participante
AutoNumber
Nota sobre a API, Datalake: Fase de Ingestão
loop todo x tempo
IngestionEngine ->> Datalake: Carregar documentos
Datalake ->> IngestionEngine: Retornar dados
IngestionEngine ->> IngestionEngine: Documentos divididos e crie incorporação
IngestionEngine ->> VectorStore: Store Documents and Incorddings
fim
Nota sobre a API, Datalake: Fase de Geração
Usuário ->> API: receba a pergunta do usuário
API ->> VectorStore: documentos de pesquisa no índice relevante para a pergunta
API ->> API: Construa um prompt da pergunta e quaisquer documentos relevantes
API ->> llm: passe o prompt para o modelo
LLM ->> API: Obtenha a resposta do modelo
API ->> Usuário: Retornar Resposta