Ini adalah kode sumber www.gptflix.ai
Kami akan membangun bot GPTFLIX QA dengan OpenAi, Pinecone DB dan Streamlit. Anda akan belajar cara menyiapkan teks untuk dikirim ke model penyematan. Anda akan menangkap embeddings dan teks yang dikembalikan dari model untuk diunggah ke Pinecone DB. Setelah itu Anda akan mengatur indeks DB Pinecone dan mengunggah embeddings openai ke DB untuk bot untuk mencari embeddings.
Akhirnya, kami akan mengatur aplikasi obrolan QA bot Frontend dengan StreamLit. Ketika pengguna mengajukan pertanyaan pada bot, bot akan mencari teks film di DB Pinecone Anda. Ini akan menjawab pertanyaan Anda tentang film berdasarkan teks dari DB.
Ini dimaksudkan sebagai perancah dasar untuk membangun sistem pengembalian pengetahuan Anda sendiri, ini sangat mendasar untuk saat ini!
Repo ini berisi kode sumber GPTFLIX dan panduan penyebaran streamlit.
Repo ini diatur untuk ditempatkan di StreamLit, Anda akan ingin mengatur variabel lingkungan Anda secara stream seperti ini:
Gabungkan repo GPTFLIX ke akun GitHub Anda.
Siapkan akun di pinecone.io
Siapkan akun di cloud streamlit
Buat aplikasi baru di StreamLit. Tautkan ke garpu repo Anda di github lalu arahkan aplikasi ke /chat/main.py
sebagai yang dapat dieksekusi utama.
Buka pengaturan aplikasi Anda, dan navigasikan ke rahasia. Siapkan rahasia seperti ini:
[API_KEYS]
pinecone = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
openai = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
.env
di root proyek dengan kunci API openai Anda di mesin lokal Anda. PINECONE_API_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Mereka harus menjadi kunci Pinecone dan Openai API Anda tentu saja;)
Repo ini diatur untuk berjalan melalui demo menggunakan data MPST di /data_samples Ini adalah langkah -langkahnya:
p1.generate_index_mpst.py
untuk menyiapkan teks dari ./data_sample/d0.mpst_1k_raw.csv
ke dalam format yang dapat kita suntikan ke dalam model dan mendapatkan embeddingnya. python p1.generate_index_mpst.py
p2.make_jsonl_for_requests_mpst.py
untuk mengonversi file d1.mpst_1k_converted.csv
baru Anda ke file jsonl dengan instruksi untuk menjalankan permintaan embeddings terhadap API OpenAI. python p2.make_jsonl_for_requests_mpst.py
p3.api_request_parallel_processor.py
pada file jsonl dari (2) untuk mendapatkan embeddings. 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
dengan file JSONL baru untuk membuat CSV cantik dengan teks dan embeddings. python p4.convert_jsonl_with_embeddings_to_csv.py
p5.upload_to_pinecone.py
dengan tombol API Anda dan pengaturan database untuk mengunggah semua data teks dan embeddings. python p5.upload_to_pinecone.py
Anda dapat menjalankan aplikasi secara lokal tetapi Anda harus menghapus gambar (jalurnya berbeda pada cloud yang diintonton)
Saat ini ada beberapa data di sample_data, semua diambil dari Kaggle sebagai contoh.
[] Tambahkan Memori: Rangkum pertanyaan / jawaban sebelumnya dan prepend untuk meminta
[] Tambahkan mode yang berbeda: Pencarian yang lebih luas dalam database
[] Tambahkan mode yang berbeda: nada / karakter AI untuk tanggapan
[] Dokumen yang lebih baik
Dokumen yang lebih baik segera hadir! Jangan ragu untuk berkontribusi mereka :)
#LISENSI
Lisensi MIT
Hak Cipta (C) 2023 Stephan Sturges
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.