Abbey adalah antarmuka AI dengan buku catatan, obrolan dasar, dokumen, video YouTube, dan banyak lagi. Ini mengatur berbagai model AI dalam paket yang di-hosting sendiri. Anda dapat menjalankan Abbey sebagai server untuk beberapa pengguna menggunakan penyedia otentikasi Anda sendiri, atau Anda dapat menjalankannya sendiri di mesin Anda sendiri. Abbey sangat dapat dikonfigurasi, menggunakan model LLMS, TTS yang dipilih, model OCR, dan mesin pencari. Anda dapat menemukan versi Abbey yang di -host di sini, yang digunakan oleh banyak siswa dan profesional.
Punya masalah? Tolong, silakan kirim masalah atau hubungi pencipta secara langsung! Twitter DM @gkamer8, email [email protected], atau ping -nya - dia menyukainya.
Jika Abbey tidak secara default dapat dikonfigurasi sesuai keinginan Anda, dan Anda nyaman menulis kode, harap pertimbangkan untuk membuka PR dengan perbaikan Anda! Menambahkan integrasi baru dan bahkan antarmuka lengkap sangat mudah; Lihat detail lebih lanjut di bagian "Kontribusi" di bawah ini.


docker compose terpasang. Lihat detailnya di sini.Jika Anda memiliki versi Abbey sebelumnya dan sedang melakukan pola "instalasi baru" dengan pengaturan.yml untuk pertama kalinya, tarik, buat pengaturan.yml dan .env baru seperti yang dijelaskan di bawah ini, pindahkan file Anda dari backend/app/statis ke penyimpanan file, dan membangun kembali dengan--Build
Pengaturan melibatkan kloning/mengunduh repo ini, membuat file .env dan settings.yml dengan integrasi AI yang Anda pilih, dan kemudian menjalankan docker compose untuk kedua pengembangan (kinerja yang lebih buruk tetapi mudah dimainkan) atau produksi (kinerja yang lebih baik tetapi lebih lambat untuk mengubah pengaturan). Inilah langkah -langkahnya:
Langkah 1: Klon / unduh repositori ini dan navigasikan di dalamnya.
Langkah 2: Buat file yang disebut .env untuk kunci rahasia dan file yang disebut settings.yml untuk pengaturan konfigurasi pada akar repo (yaitu, pada tingkat yang sama dengan file docker-compose.yml ). Kemudian, masukkan ke dalam file -file tersebut tombol / model yang ingin Anda gunakan. Anda dapat menemukan detail tentang cara mengkonfigurasi setiap jenis integrasi di seluruh readme ini.
File .env memegang tombol API atau rahasia lain yang Anda butuhkan. Anda juga harus menyertakan kata sandi untuk database MySQL yang digunakan Abbey. File .env untuk seseorang yang menggunakan API OpenAI resmi, API yang kompatibel dengan Openai yang membutuhkan kunci, dan API antropik mungkin terlihat seperti:
MYSQL_ROOT_PASSWORD="my-password"
OPENAI_API_KEY="my-openai-key"
OPENAI_COMPATIBLE_KEY="my-api-key"
ANTHROPIC_API_KEY="my-anthropic-key"
File settings.yml mengkonfigurasi Abbey untuk menggunakan model dan opsi yang Anda inginkan. Minimal, Anda harus menggunakan setidaknya satu model bahasa dan satu model embedding. Letakkan model terbaik terlebih dahulu sehingga Abbey menggunakannya secara default. Misalnya, berikut adalah file settings.yml yang menggunakan model dari API OpenAI resmi, API OpenAI yang kompatibel, Antropik, dan Ollama:
lms:
models:
- provider: anthropic
model: "claude-3-5-sonnet-20241022"
name: "Claude 3.5 Sonnet" # optional, give a name for Abbey to use
traits: "Coding" # optional, let Abbey display what it's good for
desc: "One of the best models ever!" # optional, let Abbey show a description
accepts_images: true # optional, put true if the model is a vision model / accepts image input
context_length: 200_000 # optional, defaults to 8192
- provider: openai_compatible
model: "gpt-4o"
accepts_images: true
context_length: 128_000
- provider: ollama
model: "llama3.2"
openai_compatible:
url: "http://host.docker.internal:1234" # Use host.docker.internal for services running on localhost
ollama:
url: "http://host.docker.internal:11434" # Use host.docker.internal for services running on localhost
embeds:
models:
- provider: "openai"
model: "text-embedding-ada-002"
Dan mengingat bahwa Anda juga memasukkan kunci yang relevan ke .env , itu akan menjadi file pengaturan yang lengkap. Untuk mengonfigurasi berbagai model, mesin pencari, layanan otentikasi, model teks-ke-pidato, dll.: Silakan cari dokumentasi yang sesuai di bawah ini!
Langkah 3: Jika Anda masih bermain -main dengan pengaturan Anda, Anda dapat menjalankan Abbey dalam mode dev dengan hanya menggunakan:
docker compose up
Dalam mode dev, ketika Anda mengubah pengaturan / rahasia Anda, Anda hanya perlu memulai kembali wadah untuk mendapatkan pengaturan Anda untuk diterapkan, yang dapat dilakukan dengan:
docker compose restart backend frontend celery db_pooler
Setelah siap, Anda dapat menjalankan Abbey dalam mode produksi untuk memberikan kinerja yang lebih baik:
docker compose -f docker-compose.prod.yml up --build
Jika Anda ingin mengubah pengaturan / rahasia dalam mode Prod, Anda perlu membangun kembali wadah:
docker compose down
docker compose -f docker-compose.prod.yml up --build
Langkah 4: Sekarang Abbey harus berjalan di http://localhost:3000 ! Cukup kunjungi URL itu di browser Anda untuk mulai menggunakan Abbey. Dalam mode DEV, mungkin perlu satu detik untuk memuat.
Perhatikan bahwa backend berjalan di http://localhost:5000 - jika Anda pergi ke sana, Anda akan melihat lirik dari Gilbert dan HMS Pinafore Sullivan. Jika tidak, maka backend tidak berjalan.
Jika ada sesuatu yang tidak berfungsi dengan benar, silakan (silahkan) mengajukan masalah atau menjangkau pencipta secara langsung - @gkamer8 di twitter atau [email protected] melalui email.
Secara default, Abbey berjalan di LocalHost di Ports 3000 untuk frontend dan 5000 untuk backend. Jika Anda ingin mengubah ini (karena Anda cukup paham teknologi), Anda harus memodifikasi file Docker Compose Anda, dan kemudian menambahkan ini ke settings.yml Anda.
services:
backend:
public_url: http://localhost:5000 # Replace with your new user-accessible BACKEND URL
internal_url: http://backend:5000 # This probably won't change - it's where the frontend calls the backend server side, within Docker
frontend:
public_url: http://localhost:3000 # Replace with your new user-accessible FRONTEND URL
Pastikan untuk memperbarui file Compose Docker Anda oleh, misalnya, mengubah pemetaan port untuk backend ke 1234: 5000, jika mengubah port. Pastikan untuk mengganti untuk file komposisi Docker yang benar ( docker-compose.prod.yml untuk prod build, docker-compose.yml untuk dev). Inilah yang terlihat seperti backend:
backend:
# ... some stuff
ports:
- "1234:5000" # now the backend is at http://localhost:1234 in my browser
# ... some stuff
Umum: Pastikan semua wadah Docker benar -benar berjalan dengan docker ps . Anda harus melihat 6: backend, frontend, seledri, redis, mysql, dan db_pooler (maaf ada begitu banyak - biara dapat melakukan tugas AI di latar belakang dan di banyak utas, yang mengharuskan wadah pooler, redis, dan seledri). Jika seseorang tidak berjalan, coba mulai ulang dengan docker compose restart backend (atau Frontend, atau seledri, atau apa pun yang Anda miliki). Jika terus mogok, ada kemungkinan besar Anda telah mengacaukan settings.yml Anda.yml atau lupa memasukkan rahasia yang sesuai ke dalam .env . Kalau tidak, lihat log.
Docker Config tidak valid: Jika memberi tahu Anda bahwa Docker Compose Anda tidak valid, maka Anda mungkin perlu meningkatkan Docker pada mesin Anda ke sesuatu> = versi 2. Abbey mengambil keuntungan dari fitur Docker yang relatif baru seperti default untuk variabel dan profil Env. Akan lebih mudah hanya untuk meningkatkan Docker dalam jangka panjang - kepercayaan.
Segalanya terlihat kosong / jangan memuat / permintaan ke backend sepertinya tidak berfungsi dengan benar. Pertama, arahkan ke backend di browser, suka http://localhost:5000 atau url apa pun yang Anda masukkan semula. Seharusnya memberi Anda pesan seperti "Tar Inggris adalah jiwa yang melonjak ..." Jika Anda melihatnya, maka backend sudah berjalan dan berjalan tetapi konfigurasi URL backend Anda salah atau tidak lengkap (apakah Anda bermain -main dengannya?). Jika backend Anda tidak berjalan, periksa log di Docker untuk informasi lebih lanjut - silakan baca apa yang mereka katakan!
Docker macet mengunduh/menginstal/menjalankan gambar. Ada kemungkinan bahwa Anda kehabisan ruang di mesin Anda. Pertama, cobalah menjalankan docker system prune untuk membersihkan barang -barang jahat yang tergeletak di Docker yang Anda lupakan. Kemudian cobalah membersihkan ruang di komputer Anda - mungkin cukup untuk ~ 10GB di mesin Anda. Kemudian restart Docker dan coba lagi. Jika Anda masih mendapatkan masalah - cobalah menghapus / menginstal ulang Docker.
Perintah docker compose menolak untuk berjalan karena beberapa masalah "API" atau sesuatu. Jika Docker sedang berjalan (Docker Desktop di Mac, misalnya), maka Anda harus memulai ulang. Jika itu tidak membantu, cobalah membersihkan/membersihkan datanya sebelum memulai kembali (klik ikon "bug" di Docker Desktop jika Anda memilikinya - lihat data clean/purge ). Jika Docker tidak berjalan, maka itu masalah Anda! Anda perlu memastikan daemon Docker (yaitu Docker Desktop di Mac) sedang berjalan.
Port sudah digunakan. Backend Abbey berjalan di port 5000 secara default; Frontend Abbey berjalan pada port 3000. Ada kemungkinan bahwa sesuatu di komputer Anda sudah menggunakan port 5000 atau port 3000. Pada mac yang biasanya berarti pemutar. Tujuan Anda adalah memeriksa apakah ada sesuatu yang berjalan di port 3000 atau 5000, dan, jika demikian, untuk mematikan proses tersebut. Di Mac/Linux: Gunakan lsof -i :5000 atau lsof -i :3000 untuk memeriksa apakah ada proses yang berjalan pada port tersebut. Jika Anda melihat proses seperti 'ControlCe' berjalan di Mac, itu berarti "Pusat Kontrol," dan itu mungkin hal penerima AirPlay. Anda dapat masuk ke pengaturan sistem Anda di Mac dan hapus centang "Penerima AirPlay". Jika Anda menemukan sesuatu yang lain, Anda dapat membunuhnya dengan kill -9 YOUR_PID di mana YOUR_PID digantikan oleh ID proses (ditampilkan menggunakan LSOF). Di Windows: Gunakan netstat -ano | findstr :5000 atau netstat -ano | findstr :3000 . Anda kemudian dapat membunuh proses dengan taskkill /PID YOUR_PID /F - Ganti YOUR_PID dengan ID proses dari proses yang relevan.
Integrasi pihak ke -3 dikelola dalam pengaturan variabel pengaturan dan lingkungan Anda. Berikut ringkasan yang tersedia:
Model Bahasa (LMS)
Model penyematan (embeds)
Teks-ke-speech (TTS)
Pengenalan Karakter Optik (OCR)
Mesin pencari (web)
https://api.bing.microsoft.com/v7.0/search )Penyimpanan file (penyimpanan)
file-storage lokal (default)Otentikasi
Beberapa integrasi memerlukan konfigurasi di settings.yml. Jika menggunakan salah satu integrasi berikut, Anda harus menentukan pengaturannya seperti itu:
s3:
bucket: 'your-bucket'
searxng:
url: "http://host.docker.internal:8080" # Replace with your URL
ollama:
url: "http://host.docker.internal:11434" # Replace with your URL
openai_compatible:
url: "http://host.docker.internal:12345" # Replace with your URL
Ini masuk pada akar settings.yml pada tingkat yang sama dengan lms atau embeds .
Model bahasa dikonfigurasi di bawah lms di settings.yml . Anda dapat menentukan model bahasa dari penyedia mana pun yang ingin Anda dukung, ditambah default yang digunakan di belakang layar untuk hal -hal seperti generasi kuis, ringkasan, dan menyarankan pertanyaan. Anda harus memiliki setidaknya satu LM untuk Abbey untuk bekerja dengan baik. Ingatlah untuk mengonfigurasi pengaturan penyedia yang relevan jika diperlukan seperti yang ditunjukkan di atas.
lms:
defaults: # all are optional, use the optional "code" you specify to refer to each model, or use "model-provider" like "gpt-4o-openai"
chat: "llama3.2-ollama" # User chat model (user can change) - defaults to first listed model
fast: "llama3.2-ollama" # Fastest model, used for suggested questions and other places - defaults to chat model
high_performance: "gpt-4o" # Your best language model, used for generating curricula - defaults to default chat model
long_context: "gpt-4o" # Model used in long-context situations - defaults to longest context model specified
balanced: "claude-3-5-sonnet-anthropic" # Model that is in the middle for speed / accuracy - defaults to default chat model
fast_long_context: "gpt-4o-mini-openai" # A long context model that's fast, defaults to long_context model, used for summaries / key points
alt_long_context: "claude-3-5-sonnet" # A long context model used for variation in things like question generation - default to long_context
models:
- provider: openai # required - see below table for options
model: "gpt-4o" # required, code for the API
context_length: 128_000 # optional (defaults to 4096)
supports_json: true # optional, defaults to false
accepts_images: true # optional, defaults to false
name: "GPT-4o" # optional display name for the model
desc: "One of the best models ever!" # optional, lets Abbey display a description
code: "gpt-4o" # optional - defaults to 'model-provider' like 'gpt-4o-openai' - used to specify defaults above.
disabled: false # optional
# Specify more in a list...
Tabel ini memberikan kode penyedia untuk setiap penyedia dan nama kunci API yang relevan untuk ditempatkan di .env :
| Penyedia | Kode Penyedia | Nama Kunci API | Membutuhkan pengaturan penyedia |
|---|---|---|---|
| Openai | Openai | Openai_api_key | TIDAK |
| Antropik | Antropik | Antropic_api_key | TIDAK |
| Ollama | Ollama | Ya | |
| Openai kompatibel | Openai_Compatible | Openai_compatible_key | Ya |
Model teks ke ucapan dikonfigurasi di bawah tts di settings.yml . Anda dapat menentukan model TTS dari penyedia mana pun yang ingin Anda dukung, ditambah default. Model TTS benar -benar opsional. Ingatlah untuk mengonfigurasi pengaturan penyedia yang relevan jika diperlukan seperti yang ditunjukkan di atas.
tts:
default: "openai_onyx"
voices:
- provider: openai # required
voice: "onyx" # required
model: "tts-1" # required
name: "Onyx" # optional
desc: "One of the best models ever!" # optional
code: "openai_onyx" # optional, to set a default via a code (defaults to "voice-model-provider")
sample_url: "https://public-audio-samples.s3.amazonaws.com/onyx.wav" # optional
disabled: false # optional
| Penyedia | Kode Penyedia | Nama Kunci API | Membutuhkan pengaturan penyedia |
|---|---|---|---|
| Openai | Openai | Openai_api_key | TIDAK |
| Elevenlabs | Eleven_labs | Eleven_labs_api_key | TIDAK |
| Openai kompatibel | Openai_Compatible | Openai_compatible_key | Ya |
Model embedding dikonfigurasi di bawah embeds di settings.yml . Untuk saat ini, tepatnya satu model embedding wajib digunakan di seluruh Abbey sekaligus. Model penyematan digunakan untuk mencari dokumen. Ingatlah untuk mengonfigurasi pengaturan penyedia yang relevan jika diperlukan seperti yang ditunjukkan di atas.
embeds:
models:
- provider: "openai" # required
model: "text-embedding-ada-002" # required
| Penyedia | Kode Penyedia | Nama Kunci API | Membutuhkan pengaturan penyedia |
|---|---|---|---|
| Openai | Openai | Openai_api_key | TIDAK |
| Ollama | Ollama | Ya | |
| Openai kompatibel | Openai_Compatible | Openai_compatible_key | Ya |
Mesin pencari dikonfigurasi di bawah web di settings.yml . Mereka digunakan saat Anda memeriksa Use Web saat mengobrol di Abbey. Ingatlah untuk mengonfigurasi pengaturan penyedia yang relevan jika diperlukan seperti yang ditunjukkan di atas.
web:
engines:
- provider: "bing" # required
# TO USE SEARXNG, MAKE SURE YOUR SEARXNG SETTINGS ARE CORRECT - SEE [BELOW](#searxng)
- provider: "searxng"
- engine: "pubmed" # Only used for SearXNG - leave blank to search over all engines you've enabled
- provider: "searxng"
engine: "arxiv"
use_pdf: true # Some SearXNG engines give PDF URLs - this tells Abbey to go to the PDF rather than the regular result
| Penyedia | Kode Penyedia | Nama Kunci API | Membutuhkan pengaturan penyedia |
|---|---|---|---|
| Bing | Bing | Bing_api_key | TIDAK |
| Searxng | searxng | Ya |
Searxng tidak secara default memungkinkan akses API. Saat menjalankan instance searxng Anda, Anda harus memastikan bahwa pengaturan searxng Anda (bukan dalam repo Abbey, tetapi di searxng/settings.yml ) memungkinkan json sebagai format, seperti:
search:
formats:
- html
- json
Anda dapat memastikan bahwa instance searxng Anda berfungsi dengan benar ketika permintaan curl berikut berfungsi (ganti URL dengan URL instance searxng Anda - port mungkin berbeda.)
curl -kLX GET --data-urlencode q='abbey ai' -d format=json http://localhost:8080
API pengenalan karakter optik dikonfigurasi di bawah ocr di settings.yml . Secara default, tidak ada OCR yang digunakan. Secara opsional mengonfigurasi OCR memungkinkan Abbey membaca PDF yang dipindai. Abbey secara otomatis menentukan apakah OCR tampaknya diperlukan.
ocr:
models:
- provider: "mathpix"
| Penyedia | Kode Penyedia | Nama kunci API | Membutuhkan pengaturan penyedia |
|---|---|---|---|
| Mathpix | Mathpix | Mathpix_api_app dan mathpix_api_key | TIDAK |
API Email dikonfigurasi di bawah email di settings.yml . Mengkonfigurasi email memungkinkan Abbey untuk mengirim tautan ke aset di Abbey ketika mereka dibagikan, ditambah dalam beberapa keadaan lain. Secara default, Abbey tidak mengirim email. Menjalankan Abbey dengan profil email (seperti docker compose up --profile email ) memungkinkan Abbey mengirim email pengingat tambahan untuk beberapa templat.
email:
default: smtp # Refer to each service by its provider name (defaults to first specified)
services:
- provider: sendgrid # Required
email: "[email protected]" # Required
unsub_group: 24624 # Optional, only for Sendgrid
- provider: smtp # Regular email
email: "[email protected]"
| Penyedia | Kode Penyedia | Rahasia wajib | Membutuhkan pengaturan penyedia |
|---|---|---|---|
| Sendgrid | sendgrid | Sendgrid_api_key | TIDAK |
| Email SMTP | SMTP | Smtp_server, smtp_port, smtp_email, dan smtp_password | TIDAK |
API penyimpanan file dikonfigurasi di bawah storage di settings.yml . Secara default, Abbey menyimpan semua file yang diunggah di folder file-storage yang dipasang. Saat mencadangkan Abbey, Anda harus mencadangkan folder itu plus database. Jika Anda ingin menggunakan S3, Anda dapat menggunakan yang berikut:
storage:
default: s3 # All new uploads go to the default provider (you don't need to set up local)
locations:
- provider: s3
| Penyedia | Kode Penyedia | Nama kunci API | Membutuhkan pengaturan penyedia |
|---|---|---|---|
| S3 | S3 | AWS_ACCESS_KEY dan AWS_SECRET_KEY | TIDAK |
| Lokal | lokal | TIDAK |
Penyedia otentikasi dikonfigurasi di bawah auth in settings.yml . Secara default, Abbey akan menggunakan satu pengguna "default". Menyiapkan penyedia otentikasi tambahan memungkinkan pengaturan multi-pengguna. Anda dapat menggunakan penyedia OAuth2 seperti Google, atau Anda dapat menjadi tuan rumah swadaya instance Keycloak (instruksi di bawah). Untuk penyedia seperti Google dan GitHub, Anda akan memerlukan rahasia klien dan ID klien. Saat mendaftarkan Abbey, Anda mungkin harus menyediakan URL di mana Abbey dapat diakses - itu akan menjadi http://localhost:3000 secara default, atau URL publik apa pun yang Anda gunakan untuk frontend Abbey.
auth:
providers:
- google
- github
- keycloak
| Penyedia | Kode Penyedia | Variabel env | Cara memperoleh ID / Rahasia Klien |
|---|---|---|---|
| Google_client_id dan google_secret | Lihat di sini | ||
| GitHub | GitHub | Github_client_id dan github_secret | Lihat di sini |
| Keycloak | Keycloak | Keycloak_public_url, keycloak_internal_url, keycloak_realm, keycloak_secret, dan keycloak_client_id | Lihat di bawah |
Di lingkungan produksi, Anda juga harus memberikan rahasia auth tambahan untuk menangani token auth. Lakukan dengan menambahkan yang berikut ini ke file lingkungan Anda:
CUSTOM_AUTH_SECRET="my-auth-secret"
REFRESH_TOKEN_SECRET="my-refresh-secret"
Anda dapat menyelenggarakan otentikasi sendiri sepenuhnya menggunakan Keycloak. Menggunakan Keycloak dengan Abbey membutuhkan pengaturan tertentu - misalnya, URL frontend untuk ranah harus ditentukan untuk memungkinkan Abbey dan Keycloak berjalan di Docker VM yang sama. Jika Anda memiliki instance Keycloak yang ada, Anda harus membuat klien baru untuk Abbey dengan ID klien dan rahasia klien yang Anda tempatkan di .env . Kalau tidak, berikut adalah instruksi yang menyiapkan instance baru untuk Abbey:
Berikut adalah file keycloak-realm.json yang dapat Anda tempatkan di sebelah file docker-compose Anda yang mengatur Keycloak secara otomatis:
{
"realm": "abbey-realm",
"enabled": true,
"loginWithEmailAllowed": true,
"duplicateEmailsAllowed": false,
"registrationEmailAsUsername": true,
"attributes": {
"frontendUrl": "http://localhost:8080"
},
"clients": [
{
"clientId": "abbey-client",
"enabled": true,
"protocol": "openid-connect",
"publicClient": false,
"secret": "not-a-secret",
"redirectUris": ["http://localhost:3000/*"]
}
],
"users": [
{
"username": "[email protected]",
"email": "[email protected]",
"enabled": true,
"emailVerified": true,
"credentials": [
{
"type": "password",
"value": "password"
}
]
}
]
}
Berikut adalah contoh layanan yang dapat Anda jalankan bersama dengan file docker-compose.yml Anda:
services:
keycloak:
image: quay.io/keycloak/keycloak:22.0.3
container_name: keycloak
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
ports:
- 8080:8080
volumes:
- ./keycloak-realm.json:/opt/keycloak/data/import/myrealm.json
command: ["start-dev", "--import-realm"]
volumes:
keycloak_data:
Keycloak juga memerlukan beberapa rahasia tambahan di .env :
# The Public URL should be user accessible
KEYCLOAK_PUBLIC_URL="http://localhost:8080"
# The optional Internal URL should be accessible within Docker
KEYCLOAK_INTERNAL_URL="http://keycloak:8080"
KEYCLOAK_REALM="abbey-realm"
KEYCLOAK_SECRET="not-a-secret"
KEYCLOAK_CLIENT_ID="abbey-client"
Menambahkan Layanan + Membuat keycloak-realm.json File + memasukkan rahasia ke .env harus memungkinkan Abbey untuk "hanya bekerja" dengan Keycloak di lingkungan dev.
Secara default, Abbey memiliki layanan MySQL yang harus Anda berikan MYSQL_ROOT_PASSWORD di .env . Abbey menggunakan dua database, custom_auth untuk otentikasi dan learn untuk yang lainnya. Mereka dapat berada di server yang sama atau berbeda. Sampai sekarang, server harus kompatibel dengan MySQL atau MySQL (bukan Postgres).
Anda dapat mengubah di mana server MySQL tersedia, menggunakan variabel .env ini:
MYSQL_ROOT_PASSWORD=my-root-password
# Remember that the endpoint is accessed server side, so "mysql" is the default network name
DB_ENDPOINT=mysql
DB_USERNAME=root
DB_PASSWORD=my-root-password
DB_PORT=3306
DB_NAME=learn
DB_TYPE=local # 'local' or 'deployed' --> changes how app deals with transaction settings
# You should set global transaction isolation level to READ COMMITTED when using your own database
CUSTOM_AUTH_DB_ENDPOINT=mysql
CUSTOM_AUTH_DB_USERNAME=root
CUSTOM_AUTH_DB_PASSWORD=my-root-password
CUSTOM_AUTH_DB_PORT=3306
CUSTOM_AUTH_DB_NAME=custom_auth
Ketika layanan mySQL default dimulai, itu akan menginisialisasi dirinya menggunakan file di dalam mysql-init . Jika Anda mengatur layanan MySQL Anda sendiri, Anda harus menginisialisasi database / tabel yang relevan dengan menjalankan file .sql (menyalin dan menempel ke terminal sudah cukup).
Anda mungkin memperhatikan bahwa di beranda (saat masuk), sisi kanan memiliki gambar dan deskripsi. Pada inisialisasi database, ada satu gambar yang akan muncul di sana secara default (yang di -host di Internet). Untuk mengubah gambar itu, atau untuk menambahkan lebih banyak, Anda perlu menambahkan entri ke tabel Art_History di database Learn (pada layanan MySQL). Di sana Anda meletakkan URL untuk gambar dan penurunan harga untuk deskripsi. Domain tempat gambar di -host juga perlu dimasukkan dalam settings.yml , seperti itu:
images:
domains:
- "my-domain.com"
Untuk menambahkan entri ke Art_history, Anda perlu menjalankan beberapa SQL. Dengan komposisi Docker, Anda dapat menggunakan:
docker-compose exec mysql mysql -u root -p
Dan kemudian gunakan kata sandi root mysql Anda (tersedia di file .env yang terletak di root proyek). Kemudian, Anda harus mengeksekusi:
use learn;
INSERT INTO art_history (`markdown`, `image`)
VALUES ('This is my *description*', 'https://my-domain.com/image.webp');
Gambar dipilih secara acak untuk ditampilkan dari tabel art_history itu.
Anda dapat mengubah nama Abbey menjadi apa pun yang Anda suka menggunakan opsi ini di settings.yml :
name: "Abbey" # Replace with your chosen name
Branding lain seperti Logo, Favicons, dan sebagainya terletak di frontend/public . Anda dapat mengubahnya dengan mengganti file (tetapi menjaga nama mereka). Gambar latar belakang ada di folder frontend/public/random .
Secara default, Abbey akan melakukan ping URL hardcoded ketika backend dimulai dan setiap jam sesudahnya. Ini dilakukan untuk melacak statistik penggunaan. Versi backend Anda berada di plus settings.yml Anda.yml termasuk dalam ping. Untuk menonaktifkan ping, masukkan yang berikut ini di settings.yml Anda.
ping: false
Karena saya tidak dapat membedakan antara pengguna yang mengatur ping: false dan pengguna yang berhenti menggunakan Abbey, pertimbangkan untuk menjangkau ke [email protected] sehingga saya bisa mendapatkan sejumlah besar pengguna yang menonaktifkan ping.
Salah satu kekuatan utama Abbey adalah kemampuan memperpanjangnya. Anda dapat menerapkan integrasi dan antarmuka baru secara langsung.
Setiap jenis integrasi kecuali untuk auth (lihat catatan di bawah) berada dalam file di backend/app/integrations . Setiap jenis integrasi mengimplementasikan kelas tertentu (misalnya, lm.py memberikan kelas LM, dan setiap jenis integrasi mengimplementasikan kelas itu). Anda cukup menambahkan kelas yang mewarisi dari kelas dasar (LM, TTS, OCR, dll.). Kemudian, Anda harus menambahkan kelas Anda ke kamus PROVIDER_TO_ (ada yang berbeda untuk setiap jenis integrasi). Untuk integrasi yang dapat dipilih oleh pengguna, ia harus secara otomatis muncul setelah perubahan yang sesuai telah dilakukan di settings.yml (misalnya, pengguna dapat memilih mesin pencari, model bahasa, dan model teks-ke-pidato). Untuk integrasi seperti embed yang dipilih oleh Abbey secara default, Anda harus memastikan bahwa integrasi Anda adalah default di settings.yml .
Jika integrasi Anda bergantung pada rahasia, Anda harus menambahkannya ke backend/app/configs/secrets.py menggunakan pola yang ditentukan dan kemudian mengimpornya ke dalam file integrasi (misalnya, lm.py ).
Berbeda dengan integrasi lainnya, jika Anda hanya menambahkan penyedia OAuth2, sebenarnya tidak ada alasan untuk melakukan apa pun apa pun di labu backend. Server Frontend Next.js menangani semuanya. Yang perlu Anda lakukan adalah:
frontend/src/pages/api/auth/[...auth].js . Contoh paling sederhana adalah kelas GoogleAuth (memperpanjang baseauth) yang menyediakan tiga URL: titik akhir auth oauth2; titik akhir token OAuth2; dan titik akhir Info Pengguna OpenId Connect. Karena GitHub tidak mengimplementasikan fungsi OpenID standar, ia mengimplementasikan fungsi getUserData () secara langsung.authProviders berdasarkan ketersediaan rahasia.frontend/src/auth/custom.js . Pertama, itu berarti mendorong untuk enabledProviders Kode Penyedia baru Anda secara kondisional berdasarkan apakah variabel lingkungan diatur ke 1 (variabel lingkungan harus dimulai dengan next_public sehingga tersedia sisi klien). Kedua, itu berarti menambahkan objek ke daftar providers yang menentukan kode penyedia dan nilai tombol Anda (Anda dapat menambahkan logo penyedia Anda dengan mengikuti pola dan menambahkan logo ke frontend/public/random ). Satu Catatan di Mesin Pencarian: Beberapa Fungsi Kelas untuk Mesin Pencari Mengembalikan Objek Pencarian Kustom; Kelas yang relevan diimplementasikan dalam web.py , dan Anda harus melihat jika Anda memilih untuk mengimplementasikan integrasi mesin pencari baru.
Di Abbey, semuanya adalah "aset", dan setiap aset mengimplementasikan "templat". Misalnya, jika Anda mengunggah dokumen, itu menjadi "aset" document templat. Demikian pula, jika Anda membuat ruang kerja baru, itu menjadi "aset" notebook templat (nama internal untuk ruang kerja). Di frontend, antarmuka yang diberikan kepada pengguna ditentukan oleh templat yang dia lihat. Ada sedikit variabel umum yang harus ditetapkan untuk setiap templat (misalnya, apakah template diizinkan untuk mengobrol, jika ada di folder atau semacamnya). Variabel -variabel itu dan fungsi yang diimplementasikan menentukan, antara lain, cara titik akhir umum seperti /asset/chat berperilaku.
Di backend, semua templat adalah kelas yang mewarisi dari kelas dasar Template . Templat ini terletak di file mereka sendiri di backend/app/templates . Templat terdaftar di backend/app/templates.py . Anda harus menambahkan contoh templat Anda di sana untuk mengaktifkannya. Anda juga harus menambahkan template ke backend/app/configs/user_config.py . Di dalam file template juga dapat menjadi titik akhir spesifik untuk template itu; Jika Anda memilih untuk membuat satu, itu harus terdaftar di backend/app/__init__.py .
Di frontend, semua templat diimplementasikan dalam satu file, frontend/src/template.js . Setiap templat ada kelas yang mewarisi dari kelas Template . Di bagian bawah file, ada berbagai daftar dan objek yang menentukan ketersediaan templat; Anda setidaknya harus menambahkan templat Anda ke objek TEMPLATES untuk membuatnya tersedia untuk pengguna.
Beberapa templat seperti daun; Misalnya, dokumen tidak memiliki sumber aset tertaut, yang berarti bahwa ketika Anda mengobrol dengan dokumen, Anda benar -benar mengobrol hanya dengan satu dokumen itu. Template lain memiliki sumber yang menghubungkan. Misalnya, konten folder adalah aset terkait. Sistem ini ada untuk templat lain seperti editor teks, yang dapat sumber materi dari aset lain dengan fungsi tulis AI. Menggunakan sumber dengan cara yang konsisten memastikan bahwa fungsionalitas yang meluas lintas templat, seperti berbagi aset, tetap fungsional. Jika Anda berbagi folder dengan seseorang, misalnya, izin merambat ke semua item di dalam folder itu.
Cara standar untuk mengambil informasi tentang sumber aset di frontend adalah dengan titik akhir /assets/sources-info . Cara standar untuk menambahkan sumber ke aset adalah dengan titik akhir /assets/add-resource dan /assets/add-resources . Titik akhir ini mencari entri di tabel asset_metadata dengan kunci retrieval_source yang nilainya merupakan ID aset. Lihat detail lebih lanjut tentang titik akhir di backend/app/assets.py .