
O Rasagpt é a primeira plataforma de chatbot LLM sem cabeça, construída em cima da Rasa e Langchain. É o Boilerplate e uma implementação de referência da RASA e telegrama utilizando uma biblioteca LLM como Langchain para indexação, recuperação e injeção de contexto.

Em suas próprias palavras:
Rasa é uma estrutura de aprendizado de máquina de código aberto (Python) para automatizar conversas baseadas em texto e voz: NLU, gerenciamento de diálogo, conectar-se a Slack, Facebook e muito mais- Crie chatbots e assistentes de voz
Nas minhas palavras:
Rasa é um muito popular (ouso dizer de fato?) E fácil o suficiente para usar a estrutura do chatbot com pipelines de NLU ML embutidos que são obsoletos e um ponto de partida conceitual para uma estrutura de chatbot reimaginada em um mundo dos LLMs.
Rasagpt funciona fora da caixa. Muitas das dores de cabeça implementadoras foram resolvidas para que você não precise, incluindo:
A história de fundo é familiar. Um amigo veio até mim com um problema. Eu vasculhei o Google e o Github em busca de uma implementação decente de referência do LLM está integrada à Rasa, mas cheguei de mãos vazias. Achei que essa era uma grande oportunidade para saciar minha curiosidade e, dois dias depois, tive uma prova de conceito, e uma semana depois foi isso que eu inventei.
️ Adverting Emptor: Isso está longe de ser o código de produção e repleto de injeção imediata e vulnerabilidades gerais de segurança. Só espero que alguém ache isso útil?
Introdução é fácil, apenas certifique -se de encontrar as dependências abaixo.
️ ️ ️ ** ATENÇÃO Usuários não-MACOS: ** Se você estiver usando Linux ou Windows, precisará alterar o nome da imagem dekhalosa/rasa-aarch64:3.5.2pararasa/rasa:latestem docker-compose.yml on-line #64 e nas ações Dockerfile na linha 1 aqui
# Get the code
git clone https://github.com/paulpierre/RasaGPT.git
cd RasaGPT
# # Setup the .env file
cp .env-example .env
# Edit your .env file and add all the necessary credentials
make install
# Type "make" to see more options
makehttps://t.me/yourbotnamegit clone https://github.com/paulpierre/RasaGPT.git
cd RasaGPT
cp .env-example .env
# Edit your .env file and all the credentials
A qualquer momento, sinta -se à vontade para digitar make e exibirá a lista de opções, principalmente útil para depuração:

A maneira mais fácil de começar é usar o Makefile no diretório raiz. Ele instalará e executará todos os serviços do RasAGPT na ordem correta.
make install
# This will automatically install and run RasaGPT
# After installation, to run again you can simply run
make run Isso é útil se você deseja se concentrar no desenvolvimento da API, foi feito um Makefile separado para isso. Isso criará um ambiente virtual local para você.
# Assuming you are already in the RasaGPT directory
cd app/api
make install
# This will automatically install and run RasaGPT
# After installation, to run again you can simply run
make run Da mesma forma, digite make para ver uma lista completa de comandos

A instalação deve ser automatizada deve ficar assim:

Log de instalação completa: https://app.warp.dev/block/vflua6eue29epk8evvw8kd
O processo de instalação para o Docker toma as seguintes etapas em um nível alto
.env disponívelpgvectorseed.pyVocê pode começar a conversar com seu bot visitando https://t.me/yourbotsname

Você pode visualizar todo o log visitando https: // localhost: 9999/que exibirá toras em tempo real de todos os contêineres do Docker

Veja os documentos de endpoint da API visitando https: // localhost: 8888/docs
Nesta página, você pode criar e atualizar entidades, bem como fazer upload de documentos para a base de conhecimento.

O bot é apenas uma prova de conceito e não foi otimizado para recuperação. Atualmente, ele usa o Chunking de 1000 caracteres para indexação e distância euclidiana básica para recuperação e a qualidade é atingida ou errada.
Você pode visualizar o exemplo de acertos e erros com o bot no arquivo Results.md. No geral, estimar a otimização do índice e as alterações de configuração do LLM podem aumentar a qualidade da saída em mais de 70%.
Clique para ver os resultados de perguntas e respostas dos dados de demonstração em resultados.md
A API REST é direta, visite a documentação http: // localhost: 8888/docs
As entidades abaixo têm operações básicas de CRUD e retornam JSON
Isso pode ser considerado uma empresa que é seu cliente em um mundo SaaS / Multi-Tenant. Por padrão, uma lista de organizações fictícias foi fornecida

[
{
" id " : 1,
" uuid " : " d2a642e6-c81a-4a43-83e2-22cee3562452 " ,
" display_name " : " Pepe Corp. " ,
" namespace " : " pepe " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:42:45.933976 " ,
" updated_at " : " 2023-05-05T10:42:45.933979 "
},
{
" id " : 2,
" uuid " : " 7d574f88-6c0b-4c1f-9368-367956b0e90f " ,
" display_name " : " Umbrella Corp " ,
" namespace " : " acme " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:03.555484 " ,
" updated_at " : " 2023-05-05T10:43:03.555488 "
},
{
" id " : 3,
" uuid " : " 65105a15-2ef0-4898-ac7a-8eafee0b283d " ,
" display_name " : " Cyberdine Systems " ,
" namespace " : " cyberdine " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:04.175424 " ,
" updated_at " : " 2023-05-05T10:43:04.175428 "
},
{
" id " : 4,
" uuid " : " b7fb966d-7845-4581-a537-818da62645b5 " ,
" display_name " : " Bluth Companies " ,
" namespace " : " bluth " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:04.697801 " ,
" updated_at " : " 2023-05-05T10:43:04.697804 "
},
{
" id " : 5,
" uuid " : " 9283d017-b24b-4ecd-bf35-808b45e258cf " ,
" display_name " : " Evil Corp " ,
" namespace " : " evil " ,
" bot_url " : null,
" created_at " : " 2023-05-05T10:43:05.102546 " ,
" updated_at " : " 2023-05-05T10:43:05.102549 "
}
]Isso pode ser pensado como um produto que pertence a uma empresa. Você pode visualizar a lista de projetos que pertencem a organizações como assim:

[
{
" id " : 1,
" documents " : [
{
" id " : 1,
" uuid " : " 92604623-e37c-4935-bf08-0e9efa8b62f7 " ,
" display_name " : " project-pepetamine.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 44a4b60b-9280-4b21-a676-00612be9aa87 " ,
" display_name " : " Pepetamine " ,
" created_at " : " 2023-05-05T10:42:46.060930 " ,
" updated_at " : " 2023-05-05T10:42:46.060934 "
},
{
" id " : 2,
" documents " : [
{
" id " : 2,
" uuid " : " b408595a-3426-4011-9b9b-8e260b244f74 " ,
" display_name " : " project-frogonil.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 5ba6b812-de37-451d-83a3-8ccccadabd69 " ,
" display_name " : " Frogonil " ,
" created_at " : " 2023-05-05T10:42:48.043936 " ,
" updated_at " : " 2023-05-05T10:42:48.043940 "
},
{
" id " : 3,
" documents " : [
{
" id " : 3,
" uuid " : " b99d373a-3317-4699-a89e-90897ba00db6 " ,
" display_name " : " project-kekzal.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 1be4360c-f06e-4494-bf20-e7c73a56f003 " ,
" display_name " : " Kekzal " ,
" created_at " : " 2023-05-05T10:42:49.092675 " ,
" updated_at " : " 2023-05-05T10:42:49.092678 "
},
{
" id " : 4,
" documents " : [
{
" id " : 4,
" uuid " : " 94da307b-5993-4ddd-a852-3d8c12f95f3f " ,
" display_name " : " project-memetrex.md " ,
" node_count " : 3
}
],
" document_count " : 1,
" uuid " : " 1fd7e772-365c-451b-a7eb-4d529b0927f0 " ,
" display_name " : " Memetrex " ,
" created_at " : " 2023-05-05T10:42:50.184817 " ,
" updated_at " : " 2023-05-05T10:42:50.184821 "
},
{
" id " : 5,
" documents " : [
{
" id " : 5,
" uuid " : " 6deff180-3e3e-4b09-ae5a-6502d031914a " ,
" display_name " : " project-pepetrak.md " ,
" node_count " : 4
}
],
" document_count " : 1,
" uuid " : " a389eb58-b504-48b4-9bc3-d3c93d2fbeaa " ,
" display_name " : " PepeTrak " ,
" created_at " : " 2023-05-05T10:42:51.293352 " ,
" updated_at " : " 2023-05-05T10:42:51.293355 "
},
{
" id " : 6,
" documents " : [
{
" id " : 6,
" uuid " : " 2e3c2155-cafa-4c6b-b7cc-02bb5156715b " ,
" display_name " : " project-memegen.md " ,
" node_count " : 5
}
],
" document_count " : 1,
" uuid " : " cec4154f-5d73-41a5-a764-eaf62fc3db2c " ,
" display_name " : " MemeGen " ,
" created_at " : " 2023-05-05T10:42:52.562037 " ,
" updated_at " : " 2023-05-05T10:42:52.562040 "
},
{
" id " : 7,
" documents " : [
{
" id " : 7,
" uuid " : " baabcb6f-e14c-4d59-a019-ce29973b9f5c " ,
" display_name " : " project-neurokek.md " ,
" node_count " : 5
}
],
" document_count " : 1,
" uuid " : " 4a1a0542-e314-4ae7-9961-720c2d092f04 " ,
" display_name " : " Neuro-kek " ,
" created_at " : " 2023-05-05T10:42:53.689537 " ,
" updated_at " : " 2023-05-05T10:42:53.689539 "
},
{
" id " : 8,
" documents " : [
{
" id " : 8,
" uuid " : " 5be007ec-5c89-4bc4-8bfd-448a3659c03c " ,
" display_name " : " org-about_the_company.md " ,
" node_count " : 5
},
{
" id " : 9,
" uuid " : " c2b3fb39-18c0-4f3e-9c21-749b86942cba " ,
" display_name " : " org-board_of_directors.md " ,
" node_count " : 3
},
{
" id " : 10,
" uuid " : " 41aa81a9-13a9-4527-a439-c2ac0215593f " ,
" display_name " : " org-company_story.md " ,
" node_count " : 4
},
{
" id " : 11,
" uuid " : " 91c59eb8-8c05-4f1f-b09d-fcd9b44b5a20 " ,
" display_name " : " org-corporate_philosophy.md " ,
" node_count " : 4
},
{
" id " : 12,
" uuid " : " 631fc3a9-7f5f-4415-8283-78ff582be483 " ,
" display_name " : " org-customer_support.md " ,
" node_count " : 3
},
{
" id " : 13,
" uuid " : " d4c3d3db-6f24-433e-b2aa-52a70a0af976 " ,
" display_name " : " org-earnings_fy2023.md " ,
" node_count " : 5
},
{
" id " : 14,
" uuid " : " 08dd478b-414b-46c4-95c0-4d96e2089e90 " ,
" display_name " : " org-management_team.md " ,
" node_count " : 3
}
],
" document_count " : 7,
" uuid " : " 1d2849b4-2715-4dcf-aa68-090a221942ba " ,
" display_name " : " Pepe Corp. (company) " ,
" created_at " : " 2023-05-05T10:42:55.258902 " ,
" updated_at " : " 2023-05-05T10:42:55.258904 "
}
]Isso pode ser pensado como um artefato relacionado a um produto, como uma página de perguntas frequentes ou um PDF com ganhos de demonstração financeira. Você pode ver todos os documentos associados ao projeto de uma organização como assim:

{
" id " : 1,
" uuid " : " 44a4b60b-9280-4b21-a676-00612be9aa87 " ,
" organization " : {
" id " : 1,
" uuid " : " d2a642e6-c81a-4a43-83e2-22cee3562452 " ,
" display_name " : " Pepe Corp. " ,
" bot_url " : null,
" status " : 2,
" created_at " : " 2023-05-05T10:42:45.933976 " ,
" updated_at " : " 2023-05-05T10:42:45.933979 " ,
" namespace " : " pepe "
},
" document_count " : 1,
" documents " : [
{
" id " : 1,
" uuid " : " 92604623-e37c-4935-bf08-0e9efa8b62f7 " ,
" organization_id " : 1,
" project_id " : 1,
" display_name " : " project-pepetamine.md " ,
" url " : " " ,
"data": "# PepetaminennProduct Name: PepetaminennPurpose: Increases cognitive focus just like the Limitless movienn**How to Use**nnPepetamine is available in the form of rare Pepe-coated tablets. The recommended dosage is one tablet per day, taken orally with a glass of water, preferably while browsing your favorite meme forum for maximum cognitive enhancement. For optimal results, take Pepetamine 30 minutes before engaging in mentally demanding tasks, such as decoding ancient Pepe hieroglyphics or creating your next viral meme masterpiece.nn**Side Effects**nnSome potential side effects of Pepetamine may include:nn1. Uncontrollable laughter and a sudden appreciation for dank memesn2. An inexplicable desire to collect rare Pepesn3. Enhanced meme creation skills, potentially leading to internet famen4. Temporary green skin pigmentation, resembling the legendary Pepe himselfn5. Spontaneously speaking in "feels good man" languagennWhile most side effects are generally harmless, consult your memologist if side effects persist or become bothersome.nn**Precautions**nnBefore taking Pepetamine, please consider the following precautions:nn1. Do not use Pepetamine if you have a known allergy to rare Pepes or dank memes.n2. Pepetamine may not be suitable for individuals with a history of humor deficiency or meme intolerance.n3. Exercise caution when driving or operating heavy machinery, as Pepetamine may cause sudden fits of laughter or intense meme ideation.nn**Interactions**nnPepetamine may interact with other substances, including:nn1. Normie supplements: Combining Pepetamine with normie supplements may result in meme conflicts and a decreased sense of humor.n2. Caffeine: The combination of Pepetamine and caffeine may cause an overload of energy, resulting in hyperactive meme creation and potential internet overload.nnConsult your memologist if you are taking any other medications or substances to ensure compatibility with Pepetamine.nn**Overdose**nnIn case of an overdose, symptoms may include:nn1. Uncontrollable meme creationn2. Delusions of grandeur as the ultimate meme lordn3. Time warps into the world of PepennIf you suspect an overdose, contact your local meme emergency service or visit the nearest meme treatment facility. Remember, the key to enjoying Pepetamine is to use it responsibly, and always keep in mind the wise words of our legendary Pepe: "Feels good man."",
" hash " : " fdee6da2b5441080dd78e7850d3d2e1403bae71b9e0526b9dcae4c0782d95a78 " ,
" version " : 1,
" status " : 2,
" created_at " : " 2023-05-05T10:42:46.755428 " ,
" updated_at " : " 2023-05-05T10:42:46.755431 "
}
],
" display_name " : " Pepetamine " ,
" created_at " : " 2023-05-05T10:42:46.060930 " ,
" updated_at " : " 2023-05-05T10:42:46.060934 "
}Embora isso não esteja exposto na API, um nó é um pedaço de um documento para o qual as incorporações são geradas. Os nós são usados para pesquisa de recuperação e injeção de contexto. Um nó pertence a um documento.
Um usuário representa a pessoa conversando com um bot. Os usuários não pertencem necessariamente a uma organização ou produto, mas esse relacionamento é capturado no ChatSession abaixo.
Não exposto via API, mas isso representa uma pergunta e resposta entre o usuário e um bot. Cada um desses objetos pode ser identificado com flexibilidade por uma session_id que é gerada automaticamente. As sessões de bate -papo contêm metadados ricos que podem ser usados para treinamento e otimização. O ChatSessionsing via /chat Endpoint está de fato associado à organização (para fins de segurança de vários inquilinos)
/webhooks/{channel}/webhookFallbackClassifierrasa-credentials via App/Rasa-Credenciais/Main.pyaction_gpt_fallback , que acionará nosso servidor de açõesout_of_scopeaction_gpt_fallbackActionGPTFallback . O name do método retorna a ação que definimos para nossa intenção acimarasa train . Isso é feito automaticamente para você quando você é executado make installrasa run após o treinamentorasa run actions rasa-credentials cuida desse processo para você. O Ngrok é executado como um serviço, uma vez que está pronto, a rasa-credentials chama a API NGROK local para recuperar o URL do túnel e atualizar o arquivo credentials.yml e reinicia o RASA para vocêactions.py pgvector é um plug -in para o PostGres e instalado automaticamente, permitindo que você armazene e calcule os tipos de dados vetoriais. Temos nossa própria implementação porque a classe Langchain PGVector não é flexível para se adaptar ao nosso esquema e queremos flexibilidade.
/docker-entry-initdb.d são executados se o banco de dados não tiver sido inicializado. No Postgres Dockerfile, copiamos create_db.sh , que cria o banco de dados e o usuário para o nosso banco de dadosmodels no Makefile, executamos os modelos.py no contêiner da API, que cria as tabelas dos modelos.enable_vector permite a extensão PGVector no banco de dados index.jsonGPTSimpleVectorIndex básico para encontrar os dados relevantes e injeta -os em um prompt.out_of_scope , com base no regras.yml, ele acionará a ação action_gpt_fallbackActionGPTFallback chamará o servidor API FASTAPIEm geral, verifique os registros de contêiner do Docker simplesmente indo para http: // localhost: 9999/
Sempre verifique se seus webhooks com a partida NGROK e Telegram. Simplesmente faça isso por
curl -sS " https://api.telegram.org/bot<your-bot-secret-token>/getWebhookInfo " | json_pp.. deve devolver isso:
{
" ok " : true,
" result " : {
" url " : " https://b280-04-115-40-112.ngrok-free.app/webhooks/telegram/webhook " ,
" has_custom_certificate " : false,
" pending_update_count " : 0,
" max_connections " : 40,
" ip_address " : " 1.2.3.4 "
}
} .. que deve corresponder ao URL em suas credentials.yml File ou visite o NGROK Admin ui http: // localhost: 4040/status

Parece que é uma combinação. Caso contrário, reinicie tudo correndo:
make restart@paulpierre `
Parabéns, toda a sua base nos pertence! Kthxbye
Copyright (c) 2023 Paul Pierre. A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "software"), para lidar com o software sem restrição, inclusive sem limitação os direitos de uso, copiar, modificar, mesclar, mesclar . incluído em todas as cópias ou partes substanciais do software. O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não violação. Em nenhum caso os autores ou detentores de direitos autorais serão responsabilizados por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações nos Software.