Este es el código fuente de www.gptflix.ai
Construiremos un bot Gptflix QA con OpenAI, Pinecone DB y Streamlit. Aprenderá a preparar el texto para enviar a un modelo de incrustación. Capturará los incrustaciones y el texto devuelto del modelo para cargar a Pinecone DB. Luego, configurará un índice de DB Pinecone y cargará los incrustaciones de OpenAI al DB para que el BOT busque sobre los incrustaciones.
Finalmente, configuraremos una aplicación de chat de QA Bot Frontend con Strewlit. Cuando el usuario le hace una pregunta al bot, el bot buscará el texto de la película en su DB Pinecone. Responderá a su pregunta sobre una película basada en el texto del DB.
Esto se entiende como un andamio básico para construir sus propios sistemas de retrieval de conocimiento, ¡es súper básico por ahora!
Este repositorio contiene el código fuente de GPTFLIX y una guía de implementación de optimización.
Este repositorio está configurado para la implementación en Streamlit, querrá establecer sus variables de entorno en Strewlit así:
Bifurca el repositorio de Gptflix a su cuenta GitHub.
Configure una cuenta en Pinecone.io
Configurar una cuenta en la nube de rayas
Cree una nueva aplicación en Streamlit. Enlíquelo a su bifurcación del repositorio en GitHub y luego apunte la aplicación a /chat/main.py
como el ejecutable principal.
Vaya a la configuración de su aplicación y navegue a los secretos. Configure el secreto como este:
[API_KEYS]
pinecone = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
openai = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
.env
en la raíz del proyecto con su clave API OpenAI en su máquina local. PINECONE_API_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Esos necesitan ser sus claves API de Pinecone y OpenAI, por supuesto;)
Este repositorio está configurado para caminar a través de una demostración utilizando los datos MPST en /data_samples, estos son los pasos:
p1.generate_index_mpst.py
para preparar el texto de ./data_sample/d0.mpst_1k_raw.csv
en un formato que podemos inyectar en un modelo y obtener su incrustación. python p1.generate_index_mpst.py
p2.make_jsonl_for_requests_mpst.py
para convertir su nuevo archivo d1.mpst_1k_converted.csv
en un archivo jsonl con instrucciones para ejecutar las solicitudes de incrustaciones contra la API de OpenAI. python p2.make_jsonl_for_requests_mpst.py
p3.api_request_parallel_processor.py
en el archivo jsonl de (2) para obtener incrustaciones. 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
con el archivo nuevo JSONL para hacer un CSV bonito con el texto y las incrustaciones. python p4.convert_jsonl_with_embeddings_to_csv.py
p5.upload_to_pinecone.py
con su clave API y la configuración de la base de datos para cargar todos esos datos de texto e incrustaciones. python p5.upload_to_pinecone.py
Puede ejecutar la aplicación localmente, pero necesitará eliminar las imágenes (las rutas son diferentes en la nube de transmisión)
En este momento hay algunos datos en Sample_Data, todos tomados de Kaggle como ejemplos.
[] Agregar memoria: resumir las preguntas / respuestas anteriores y prevenir para solicitar
[] Agregar modos diferentes: búsqueda más amplia en la base de datos
[] Agregar diferentes modos: tonos / caracteres de ai para respuestas
[] Mejores documentos
¡Mejores documentos próximamente! Siéntete libre de contribuir con ellos :)
#LICENCIA
Licencia de MIT
Copyright (c) 2023 Stephan Sturges
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y archivos de documentación asociados (el "software"), para tratar en el software sin restricción, incluidos los derechos de los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicense y/o vender copias del software, y para permitir que las personas a quienes se les proporciona el software para hacer, sujeto a las siguientes condiciones: las siguientes condiciones: las siguientes condiciones: las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otra responsabilidad, ya sea en una acción de contrato, agravio o de otra manera, que surge, de o en relación con el software o el uso u otros tratos en el software.