Chatpdflike
Dokumen end-to-end end aplikasi imbalan menggunakan API model bahasa besar.
Catatan : Proyek ini tidak berafiliasi dengan atau didukung oleh ChatPDF. Ini adalah proyek independen yang mencoba mereplikasi fungsi yang serupa.
Ringkasan
ChatPDF-Like adalah aplikasi web yang memungkinkan pengguna untuk mengunggah dokumen PDF dan berinteraksi dengan mereka menggunakan kueri bahasa alami. Aplikasi ini memanfaatkan model bahasa besar (LLM) seperti OpenAI's GPT-3.5 Turbo untuk memahami konten PDF dan memberikan jawaban yang ringkas dan akurat untuk pertanyaan pengguna.
Fitur
- Unggah dokumen PDF : Unggah file PDF lokal atau berikan URL ke dokumen PDF.
- Interaksi Bahasa Alami : Ajukan pertanyaan tentang konten PDF dalam bahasa alami.
- Jawaban yang relevan : Terima jawaban ringkas berdasarkan konten dokumen.
- Referensi Sumber : Lihat Sumber (Bagian PDF) yang digunakan untuk menghasilkan jawabannya.
- Beberapa penyedia LLM : Dukungan untuk model OpenAI dan Ollama.
- Antarmuka Web : Antarmuka web sederhana dan intuitif dibangun dengan Flask dan JavaScript.
Cara kerjanya
Aplikasi mengikuti langkah -langkah utama ini:
Ekstraksi dan pemrosesan teks :
- PDF diuraikan menggunakan
PyPDF2 . - Teks diekstraksi dari setiap halaman, dan teks besar dibagi menjadi potongan yang dapat dikelola.
Generasi yang menanamkan :
- Untuk setiap potongan teks, vektor embedding dihasilkan menggunakan model embedding yang dipilih (misalnya,
text-embedding-ada-002 openai). - Embeddings ini mewakili makna semantik dari potongan teks dan disimpan untuk perhitungan kesamaan.
Penanganan kueri pengguna :
- Ketika seorang pengguna mengajukan pertanyaan, vektor embedding untuk kueri dihasilkan menggunakan model embedding yang sama.
Pencarian Kesamaan :
- Aplikasi menghitung kesamaan cosinus antara embedding kueri dan embeddings chunk teks.
- Potongan teks yang paling relevan dipilih berdasarkan skor kesamaan tertinggi.
Konstruksi yang cepat :
- Prompt dibuat untuk model bahasa, menggabungkan pertanyaan pengguna dan potongan teks yang paling relevan.
Generasi Jawaban :
- Prompt dikirim ke model bahasa (misalnya, Turbo GPT-3.5 Openai).
- Model ini menghasilkan jawaban untuk pertanyaan pengguna berdasarkan konteks yang disediakan.
Tampilan Respons :
- Jawabannya ditampilkan kepada pengguna di antarmuka web.
- Referensi ke potongan teks sumber juga disediakan untuk transparansi.
Memulai
Prasyarat
- Diperlukan Python : Versi 3.6 atau lebih tinggi.
- Kunci API :
- Kunci API OpenAI : Diperlukan untuk menggunakan model Openai untuk embeddings dan generasi jawaban.
- Kunci API Ollama : Opsional. Diperlukan jika Anda ingin menggunakan model ollama.
Instalasi
Klon Repositori
git clone https://github.com/Ulov888/chatpdflike.git
cd chatpdflike
Instal dependensi
Menggunakan pip , pasang paket yang diperlukan:
pip install -r requirements.txt
Kunci API
Untuk menggunakan API Openai:
Daftar untuk kunci API di OpenAI.
Atur variabel lingkungan OPENAI_API_KEY :
export OPENAI_API_KEY= " your_openai_api_key "
Untuk menggunakan API Ollama (jika diinginkan):
Dapatkan kunci API dari Ollama.
Atur variabel lingkungan OLLAMA_API_KEY :
export OLLAMA_API_KEY= " your_ollama_api_key "
Penggunaan
Mulai aplikasi
Jalankan aplikasi Flask:
Secara default, server berjalan di http://0.0.0.0:8080 .
Akses antarmuka web
Buka browser web dan navigasikan ke http://localhost:8080 .
Unggah dokumen PDF
Anda bisa:
- Klik "Unggah PDF" untuk memilih dan mengunggah file PDF dari komputer Anda.
- Masukkan URL ke dokumen PDF dan klik "Kirim".
Berinteraksi dengan pdf
- Setelah PDF diproses, Anda dapat mengajukan pertanyaan tentang kontennya menggunakan antarmuka obrolan di sisi kanan layar.
- Ketik pertanyaan Anda di kotak input dan tekan "Kirim".
Lihat Jawaban
- Respons aplikasi akan muncul di bawah pertanyaan Anda.
- Referensi sumber (misalnya, nomor halaman dan kutipan) disediakan untuk konteks.

Kustomisasi
Strategi yang cepat
Perilaku model bahasa dapat disesuaikan dengan memodifikasi strategi cepat di generate_embedding.py , khususnya dalam metode create_prompt dari kelas Chatbot .
Strategi meliputi:
- Kertas : Untuk meringkas makalah ilmiah.
- Buku Pegangan : Untuk meringkas buku pegangan keuangan (jawaban dalam bahasa Cina).
- Kontrak : Untuk memahami kontrak (jawaban dalam bahasa Cina).
- Default : Strategi tujuan umum (jawaban dalam bahasa Cina).
Untuk memilih strategi, Anda dapat memodifikasi parameter strategy saat memanggil create_prompt .
Bahasa dan output
Aplikasi saat ini dikonfigurasi untuk memberikan jawaban dalam bahasa Cina untuk beberapa strategi. Anda dapat memodifikasi petunjuk untuk mengubah bahasa atau menyesuaikan perilaku model.
Batasan
- Biaya API OpenAI : Menggunakan API Openai akan dikenakan biaya berdasarkan penggunaan. Pastikan untuk memantau penggunaan API Anda untuk menghindari biaya yang tidak terduga.
- PDF Parsing : Aplikasi menggunakan
PyPDF2 , yang mungkin tidak menangani semua PDF dengan sempurna. PDF kompleks dengan pemformatan yang tidak biasa mungkin tidak diuraikan dengan benar. - Batas embedding : Batas token maksimum untuk embeddings dapat membatasi ukuran potongan teks atau panjang maksimum prompt.
- Tanggapan Model : Kualitas dan keakuratan jawaban tergantung pada kinerja model bahasa dan relevansi potongan teks yang diambil.
Berkontribusi
Kontribusi dipersilakan! Jika Anda memiliki saran atau perbaikan, jangan ragu untuk mengirimkan masalah atau permintaan menarik.
Lisensi
Proyek ini dilisensikan di bawah lisensi Apache.