Tujuan dari pembuktian konsep ini adalah untuk menilai apa yang diperlukan untuk menciptakan chatbot yang serbaguna, andal, dan intuitif bagi pengguna untuk terlibat dalam topik terkait Alkemio. Proyek ini tidak dapat diterapkan sebagaimana adanya, namun harus berfungsi sebagai masukan berharga untuk menunjukkan kemampuan AI generatif dan membantu menilai apa yang diperlukan untuk menanamkan fungsi ini ke dalam platform.
Model Bahasa Besar (LLM), telah meningkat secara signifikan selama beberapa periode terakhir dan tidak ada di mana-mana serta berkinerja baik. Ini membuka banyak kemungkinan untuk penggunaannya di berbagai bidang. OpenAI adalah penyedia LLM komersial paling terkenal, namun ada banyak pilihan untuk model LLM, baik komersial atau open source. Meskipun hal ini memberikan opsi, hal ini juga menimbulkan risiko terkuncinya penyedia layanan.
LLM hanyalah salah satu komponen yang diperlukan untuk implementasi praktis dari solusi AI generatif, dan banyak 'blok penyusun' lainnya juga diperlukan. Langchain adalah perpustakaan sumber terbuka populer yang menyediakan blok penyusun ini dan membuat lapisan abstraksi, sehingga menciptakan independensi penyedia.
Pelatihan LLM sangat mahal bagi sebagian besar organisasi, namun untuk sebagian besar implementasi praktis ada kebutuhan untuk memasukkan data spesifik organisasi. Pendekatan yang umum adalah menambahkan konteks spesifik pada pertanyaan pengguna ke perintah yang dikirimkan ke LLM. Hal ini menimbulkan tantangan, karena LLM umumnya hanya mengizinkan permintaan dengan ukuran terbatas (biasanya sekitar 4 ribu token). Oleh karena itu, penting untuk menyediakan informasi kontekstual yang relevan dan untuk itu perlu dilakukan hal-hal berikut:
Proyek ini terinspirasi oleh banyak artikel, baik teoretis maupun praktis. Sebagian besar basis kode berasal dari proyek Membangun Chatbot AWS yang Diarsitektur dengan Baik dengan LangChain.
Proyek telah diimplementasikan sebagai layanan mikro berbasis kontainer dengan RPC RabbitMQ. Ada satu antrian RabbitMQ:
alkemio-virtual-contributor-engine-guidance
- antrean untuk mengirimkan permintaan ke layanan mikroPayload permintaan terdiri dari json dengan struktur berikut (contoh untuk kueri):
{
"data": {
"userId": "userID",
"question": "What are the key Alkemio concepts?",
"language": "UK"
},
"pattern": {
"cmd": "query"
}
}
Jenis operasinya adalah:
ingest
: pengumpulan data dari situs web yayasan Alkemio (melalui sumber Github) dan penyematan menggunakan model teks OpenAI Ada, tanpa permintaan tambahan data .reset
: mengatur ulang riwayat obrolan untuk obrolan yang sedang berlangsung, memerlukan userId.query
: posting pertanyaan berikutnya dalam urutan obrolan, lihat contohRespons dipublikasikan dalam antrean yang dibuat secara otomatis, eksklusif, dan tidak disebutkan namanya.
Terdapat rancangan implementasi untuk bahasa interaksi model (ini memerlukan perbaikan yang signifikan). Jika tidak ada kode bahasa yang ditentukan, bahasa Inggris akan dianggap. Pilihannya adalah: 'EN': 'Bahasa Inggris', 'US': 'Bahasa Inggris', 'UK': 'Bahasa Inggris', 'FR': 'Prancis', 'DE': 'Jerman', 'ES': 'Spanyol' , 'NL': 'Belanda', 'BG': 'Bulgaria', 'UA': "Ukraina"
*catatan: ada implementasi RESTful sebelumnya (ketinggalan jaman) yang tersedia di https://github.com/alkem-io/virtual-contributor-engine-guidance/tree/http-api
Perintah berikut dapat digunakan untuk membangun container dari Docker CLI (arsitektur defaultnya adalah amd64, jadi --build-arg ARCHITECTURE=arm64
untuk build amd64): docker build --build-arg ARCHITECTURE=arm64 --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.4.0 .
docker build --no-cache -t alkemio/virtual-contributor-engine-guidance:v0.2.0 .
Dockerfile memiliki beberapa argumen konfigurasi yang cukup jelas.
Perintah berikut dapat digunakan untuk memulai kontainer dari Docker CLI: docker run --name virtual-contributor-engine-guidance -v /dev/shm:/dev/shm --env-file .env virtual-contributor-engine-guidance
di mana .env
berdasarkan .azure-template.env
Alternatifnya gunakan docker-compose up -d
.
dengan:
AZURE_OPENAI_API_KEY
: kunci API OpenAI yang validOPENAI_API_VERSION
: versi Azure OpenAI yang valid. Pada saat penulisan, yang terbaru adalah 2023-05-15
AZURE_OPENAI_ENDPOINT
: URL dasar Azure OpenAI yang valid, misalnya https://{your-azure-resource-name}.openai.azure.com/
RABBITMQ_HOST
: nama host RabbitMQRABBITMQ_USER
: pengguna RabbitMQRABBITMQ_PASSWORD
: kata sandi RabbitMQAI_MODEL_TEMPERATURE
: temperature
model, nilai penggunaan antara 0 dan 1. 1 berarti jawaban yang lebih acak, mendekati 0 - jawaban yang lebih ketatLLM_DEPLOYMENT_NAME
: nama penerapan model AI gpt di AzureEMBEDDINGS_DEPLOYMENT_NAME
: nama penerapan model penyematan AI di AzureAI_SOURCE_WEBSITE
: URL website yayasan yang berisi sumber data (untuk referensi saja)AI_SOURCE_WEBSITE2
: URL situs selamat datang yang berisi data sumber (untuk referensi saja)AI_LOCAL_PATH
: jalur file lokal untuk menyimpan dataAI_WEBSITE_REPO
: url repositori Git yang berisi data sumber situs web yayasan, berdasarkan Hugo - tanpa httpsAI_WEBSITE_REPO2
: url repositori Git yang berisi data sumber situs selamat datang, berdasarkan Hugo - tanpa httpsAI_GITHUB_USER
: Pengguna Github digunakan untuk mengkloning repo situs webAI_GITHUB_PAT
: Token akses pribadi untuk mengkloning repo situs webLANGCHAIN_TRACING_V2
: aktifkan pelacakan LangchainLANGCHAIN_ENDPOINT
: Titik akhir pelacakan Langchain (misalnya "https://api.smith.langchain.com")LANGCHAIN_API_KEY
: Kunci API penelusuran LangchainLANGCHAIN_PROJECT
: Nama proyek pelacakan Langchain (misalnya "panduan-kontributor-virtual-engine") Anda dapat menemukan nilai sampel di .azure-template.env
. Konfigurasikan dan buat file .env
dengan pengaturan yang diperbarui.
Proyek ini memerlukan instalasi Python & Puisi. Ketergantungan versi minimum dapat ditemukan di pyproject.toml
. Setelah menginstal Python & Puisi:
poetry install
poetry run python virtual_contributor_engine_guidance.py
Proyek ini memerlukan minimal Python 3.11 dan memerlukan instalasi Go dan Hugo untuk membuat situs web versi lokal. Lihat dokumentasi Go dan Hugo untuk instruksi instalasi (hanya ketika dijalankan di luar container)
Tugas-tugas berikut ini masih belum terselesaikan: