Este é o código -fonte de www.gptflix.ai
Construiremos um Bot GPTFLIX com OpenAi, Pinecone DB e Streamlit. Você aprenderá como preparar o texto para enviar para um modelo de incorporação. Você capturará as incorporações e o texto retornados do modelo para upload para pnecone db. Posteriormente, você configurará um índice Pinecone DB e fará o upload das incorporações do OpenAI no banco de dados para o bot pesquisar nas incorporações.
Finalmente, configuraremos um aplicativo de bate -papo de front -end de QA Bot com o Streamlit. Quando o usuário faz uma pergunta ao bot, o bot pesquisa o texto do filme em seu banco de dados. Ele responderá sua pergunta sobre um filme baseado em texto do banco de dados.
Isso significa um andaime básico para construir seus próprios sistemas de retirada de conhecimento, é super básico por enquanto!
Este repo contém o código -fonte GPTFLIX e um guia de implantação do streamlit.
Este repositório está configurado para implantação no streamlit, você deseja definir suas variáveis de ambiente em streamlit como esta:
Fork o repo GPTFLIX para sua conta do GitHub.
Configure uma conta no Pinecone.io
Configure uma conta na norma de streamlit
Crie um novo aplicativo no streamlit. Ligue -o ao seu garfo do repo no github e aponte o aplicativo para /chat/main.py
como o executável principal.
Vá para as configurações do seu aplicativo e navegue para segredos. Configure o segredo como este:
[API_KEYS]
pinecone = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
openai = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
.env
na raiz do projeto com sua chave de API do OpenAI em sua máquina local. PINECONE_API_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Aqueles precisam ser suas teclas de API Pinecone e OpenAI, é claro;)
Este repositório está configurado para percorrer uma demonstração usando os dados do MPST em /data_samples Estas são as etapas:
p1.generate_index_mpst.py
para preparar o texto de ./data_sample/d0.mpst_1k_raw.csv
em um formato que podemos injetar em um modelo e obter sua incorporação. python p1.generate_index_mpst.py
p2.make_jsonl_for_requests_mpst.py
para converter seu novo arquivo d1.mpst_1k_converted.csv
em um arquivo jsonl com instruções para executar as solicitações de incorporação contra o API Openai. python p2.make_jsonl_for_requests_mpst.py
p3.api_request_parallel_processor.py
no arquivo jsonl de (2) para obter incorporação. python src/p3.api_request_parallel_processor.py
--requests_filepath data_sample/d2.embeddings_maker.jsonl
--save_filepath data_sample/d3.embeddings_maker_results.jsonl
--request_url https://api.openai.com/v1/embeddings
--max_requests_per_minute 1500
--max_tokens_per_minute 6250000
--token_encoding_name cl100k_base
--max_attempts 5
--logging_level 20
p4.convert_jsonl_with_embeddings_to_csv.py
com o novo arquivo jsonl para fazer um belo CSV com o texto e as incorporações. python p4.convert_jsonl_with_embeddings_to_csv.py
p5.upload_to_pinecone.py
com a chave da API e as configurações do banco de dados para fazer upload de todos os dados e incorporação de texto. python p5.upload_to_pinecone.py
Você pode executar o aplicativo localmente, mas precisará remover as imagens (os caminhos são diferentes na nuvem de streamlit)
No momento, existem alguns dados em sample_data, todos retirados de Kaggle como exemplos.
[] Adicione a memória: resume as perguntas / respostas anteriores e prenda para solicitar
[] Adicione modos diferentes: pesquisa mais ampla no banco de dados
[] Adicione modos diferentes: tons / caracteres de AI para respostas
[] Melhores documentos
Melhores documentos em breve! Sinta -se à vontade para contribuí -los :)
#LICENÇA
MIT Licença
Copyright (C) 2023 Stephan Sturges
A permissão é concedida, gratuita, 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 usar, copiar, modificar, mesclar, publicar, distribuir, mobilizar o software e/ou vender cópias do software e permitir que as pessoas a quem
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou em 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 innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis 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 no software.