️ Catatan: Pengembangan aktif proyek ini ditunda untuk sementara waktu, karena keterbatasan waktu. Sementara itu, jangan ragu untuk melakukan fork pada repositori atau menghubungi jika Anda ingin mempertahankan proyek tersebut.
Pruju AI adalah asisten pengajar yang memungkinkan siswa berinteraksi dengan materi pelajaran guru. Asisten dirancang untuk menjawab pertanyaan siswa apa pun, tetapi hanya jika jawabannya dapat ditemukan dalam materi pelajaran yang disediakan oleh guru (misalnya, silabus, slide, transkrip perkuliahan). Asisten juga dapat dibimbing untuk menjawab dengan cara yang selaras dengan tujuan pedagogi kursus. Misalnya, asisten dapat diberitahu untuk tidak menjawab pertanyaan tertentu atau menjawab dengan cara tertentu.
Proyek ini ada untuk membuat pembuatan asisten pengajar virtual semudah mungkin. Dari sudut pandang pedagogi, penting untuk dapat mengontrol basis pengetahuan asisten serta jenis jawaban yang diberikan asisten terhadap pertanyaan siswa.
Aplikasi ini dapat dikonfigurasi untuk bekerja dengan materi milik guru tanpa pengkodean apa pun. Anda perlu memodifikasi beberapa file teks dan menjalankan satu skrip Python untuk menjadikannya milik Anda. Anda juga dapat menggunakan kode ini sebagai titik awal untuk penyiapan yang lebih canggih dan disesuaikan. Jika kursus Anda menggunakan Moodle, kini Anda dapat mengimpor data dari kursus Anda sendiri!
Aplikasi ini bekerja dengan API OpenAI, Layanan Azure OpenAI Microsoft, dan Ollama. Ollama mendukung lebih banyak model sumber terbuka (misalnya Mistral 7B, Llama 2). Hanya Mistral 7B yang telah diuji.
Pruju adalah bahasa gaul universitas Finlandia untuk handout studi. Menurut Urban Dictionary (Finlandia), prujus "kualitasnya bisa berkisar dari buku bagus [...] hingga tumpukan slide kuliah samar yang tidak masuk akal sama sekali."
Petunjuknya ditujukan untuk macOS tetapi juga dapat digunakan di Linux dan (dengan sedikit modifikasi) Windows.
Kloning repo dan buat lingkungan virtual untuk proyek tersebut. Instal dependensi yang diperlukan:
pip install -r requirements.txt
textract
. Langkah-langkah berikut akan membantu Anda menghindari masalah apa pun.
pip install --upgrade pip==24.0
six
setelah menginstal persyaratan: pip install --upgrade six
Anda harus membuat file .env yang setidaknya berisi hal berikut:
# Specify LLM provider and model
LLM_PROVIDER="openai"
MODEL_NAME="gpt-4"
# Directory for your course data:
CHAT_DATA_FOLDER ="prujuai_resources"
# Total model call quota:
TOTAL_MODEL_QUOTA=5
# Max number of tokens per call
MAX_PROMPT_TOKENS=2000
# Capacity management:
MAX_CONCURRENCY=2
MAX_QUEUE=10
Saat ini Anda dapat memilih antara "openai" (API OpenAI sendiri), "azure" (Layanan Azure OpenAI Microsoft), atau "ollama" (Ollama).
Jika Anda memilih openai, Anda harus menentukan kunci API:
LLM_PROVIDER="openai"
MODEL_NAME="gpt-4"
OPENAI_API_KEY="your-secret-key-goes-here"
Jika Anda memilih Azure, Anda harus menentukan titik akhir API dan kunci API:
LLM_PROVIDER="azure"
MODEL_NAME="gpt-4"
OPENAI_API_KEY = "your-secret-key-goes-here"
MODEL_ENDPOINT="https://your-azure-endpoint"
# Optionally, you can define:
AZURE_OPENAI_CUSTOM_BACKEND = "/custom/url/back/end/other/than/chat/completions"
AZURE_OPENAI_CUSTOM_HEADER="Some-Custom-Authentication-Header"
Jika Anda memilih ollama, Anda perlu menentukan model yang akan digunakan.
LLM_PROVIDER="ollama"
MODEL_NAME="mistral"
Dalam kasus Ollama, Anda perlu menginstal Ollama dan menjalankan ollama serve <modelname>
untuk menyajikan model ke 127.0.0.1:11434
. Hanya Mistral 7B yang telah diuji sejauh ini. Fungsionalitas dasar berfungsi, tetapi belum diuji secara ekstensif.
Berlari:
gradio app.py
Setelah aplikasi berjalan, aplikasi akan memberi tahu Anda alamat di mana Anda dapat menemukan antarmuka chatbot.
Untuk memulai, buat salinan direktori prujuai_resources
dan beri nama yang Anda suka (misalnya, mycourse_resources
) Kemudian modifikasi file .env sehingga aplikasi mengetahui di mana mencari file tersebut (misalnya CHAT_DATA_FOLDER="mycourse_resources"
). Di direktori baru ini, ubah file berikut sesuai keinginan Anda:
prompt_template.txt
memberikan instruksi sistem umum untuk chatbotexamples_ui.txt
mendefinisikan contoh yang membantu pengguna mulai mengajukan pertanyaan bergunafavicon.ico
adalah ikon aplikasichat_header.md
memberikan deskripsi aplikasi Anda yang dapat dimodifikasi dan ditampilkan di atas antarmuka obrolanchat_footer.md
seperti di atas, tetapi di bawah antarmuka obrolanUntuk membaca materi Anda sendiri ke toko vektor, Anda harus menjalankan:
python3 read_to_vectorstore.py
Skrip akan membaca materi kursus Anda dari lokasi tertentu ( ./course_material
secara default) dan menyimpannya ke penyimpanan vektor FAISS (secara default ./course_material_vdb
). Setelah selesai, pindahkan file index.faiss
dan index.pkl
ke CHAT_DATA_FOLDER/faiss_index
. Jika Anda menginginkan lebih banyak opsi, seperti menjalankan skrip dalam mode non-interaktif dengan default yang masuk akal, jalankan skrip dengan -h:
python3 read_to_vectorstore.py -h
Materi kursus default berasal dari kursus imajiner yang disebut Primer on Business Analytics dengan Python , yang diproduksi dengan bantuan ChatGPT (GPT-4) untuk tujuan demonstrasi. Materi contoh ( course_materials
) antara lain slide perkuliahan, transkrip perkuliahan, dan tutorial scripting Python.
Harap pikirkan baik-baik data apa yang (tidak) ingin diakses oleh aplikasi Anda!
Anda dapat mengimpor materi dari instance Moodle. Buat file bernama .moodle
dan modifikasi agar memuat hal-hal berikut:
COURSE_ID="12345"
WS_TOKEN="your-token"
WS_ENDPOINT="https://your-moodle-instance.edu/webservice/rest/server.php"
WS_STORAGE="moodle_data"
Menjalankan skrip moodle.py
akan mengunduh file (dari sumber File dan Folder ). Postingan dari forum Pengumuman dapat disertakan dengan tanda -p
. Skrip secara default akan menyematkan konten dalam penyimpanan vektor FAISS di direktori yang ditentukan dalam variabel lingkungan WS_STORAGE
, diikuti dengan " _vdb
" (misalnya, moode_data_vdb
).
python3 moodle.py
Anda kemudian dapat menyalin file index.faiss
dan index.pkl
ke folder materi pelajaran Anda ( CHAT_DATA_FOLDER/faiss_index
). Skrip ini juga menyertakan link Moodle ke potongan teks yang digunakan oleh penyimpanan vektor, jadi disarankan untuk menambahkan sesuatu seperti ini ke prompt sistem: Make sure to include hyperlinks to allow easy access to the materials.
Hal ini memungkinkan pengguna dengan mudah menavigasi untuk melihat konten asli di Moodle. Pastikan bahwa token akses dikaitkan dengan izin yang sesuai di pihak Moodle.
Anda juga dapat menggunakan database vektor qdrant, dijalankan secara lokal dalam wadah, atau menggunakan layanan yang dihosting. Anda dapat menentukan aplikasi untuk menggunakan koleksi qdrant Anda dengan memodifikasi .env sebagai berikut:
VECTOR_STORE="qdrant" # If you use qdrant
VECTOR_STORE_COLLECTION="my_collection" # qdrant collection name
VECTOR_STORE_ENDPOINT="localhost" #"localhost" or hosted service endpoint
VECTOR_STORE_API_KEY="your-secret" # If you use qdrant's hosted service
Jika Anda mengimpor materi pelajaran dari Moodle menggunakan moodle.py
, tambahkan juga baris di atas ke .moodle
Anda. Anda dapat mempertimbangkan untuk menjalankan skrip impor Moodle secara berkala agar basis pengetahuan chatbot tetap mutakhir. Sekali lagi, mohon perhatikan izin pada Moodle .
Ada beberapa fitur baru di aplikasi yang belum didokumentasikan dengan baik. Fungsionalitas yang sudah ada sebelumnya tidak terpengaruh. Ini termasuk:
Proyek ini saat ini dalam tahap demo, dan masih banyak ruang untuk perbaikan. Beberapa kemungkinan arah untuk pengembangan lebih lanjut:
Enrico Glerean memberikan nasihat yang sangat berharga dalam banyak aspek proyek. Thomas Pfau menyumbangkan kode dan memberikan banyak wawasan teknis penting selama prosesnya.