Proyek ini merupakan pengganti REST API untuk Vertex AI ( PaLM 2, Codey, Gemini ) yang kompatibel dengan spesifikasi OpenAI API.
Contoh:
Ngobrol dengan Gemini di Chatbot UI | Dapatkan bantuan dari Gemini di VSCode |
---|---|
Proyek ini terinspirasi oleh gagasan LocalAI tetapi dengan fokus membuat Google Cloud Platform Vertex AI PaLM lebih mudah diakses oleh siapa saja.
Layanan Google Cloud Run diinstal yang menerjemahkan panggilan OpenAI API ke Vertex AI (PaLM 2, Codey, Gemini).
Layanan OpenAI API yang didukung:
OpenAI | API | Didukung |
---|---|---|
Daftar model | /v1/models | ✅ |
Penyelesaian Obrolan | /v1/chat/completions | ✅ |
Penyelesaian (Warisan) | /v1/completions | |
Penyematan | /v1/embeddings |
Perangkat lunak ini dikembangkan dengan Python dan berdasarkan FastAPI dan LangChain.
Semuanya dirancang sangat sederhana, sehingga Anda dapat dengan mudah menyesuaikan kode sumber dengan kebutuhan pribadi Anda.
Notebook Jupyter Vertex_AI_Chat.ipynb
dengan petunjuk langkah demi langkah telah disiapkan. Ini akan membantu Anda menerapkan backend API dan frontend Chatbot UI sebagai layanan Google Cloud Run.
Persyaratan:
Pengguna Anda (yang digunakan untuk penerapan) harus memiliki izin yang sesuai dalam proyek. Untuk penerapan yang cepat dan tidak merepotkan, peran "Pemilik" direkomendasikan.
Selain itu, akun layanan komputasi default ( [PROJECT_NR][email protected]
) harus memiliki peran "Role Vertex AI User" ( roles/aiplatform.user
).
Otentikasi:
gcloud auth login
Tetapkan proyek default:
gcloud config set project [PROJECT_ID]
Jalankan skrip berikut untuk membuat image container dan terapkan container tersebut sebagai API publik (yang memungkinkan panggilan yang tidak diautentikasi) di Google Cloud Run:
bash deploy.sh
Catatan: Anda dapat mengubah kunci OpenAI API palsu yang dihasilkan dan wilayah Google Cloud dengan variabel lingkungan:
export OPENAI_API_KEY= " sk-XYZ " export GOOGLE_CLOUD_LOCATION= " europe-west1 " bash deploy.sh
Perangkat lunak ini diuji pada GNU/Linux dan macOS dengan Python 3.11 dan 3.12.3 (3.12.4 saat ini tidak berfungsi). Jika Anda ingin menggunakan perangkat lunak di bawah Windows, Anda harus mengatur variabel lingkungan dengan set
alih-alih export
.
Anda juga harus membuat lingkungan virtual dengan versi Python yang ingin Anda gunakan, dan mengaktifkannya sebelum melanjutkan.
Anda juga memerlukan Google Cloud CLI. Google Cloud CLI menyertakan alat baris perintah gcloud
.
Memulai lingkungan virtual Python dan menginstal persyaratan:
python3 -m venv .venv &&
source .venv/bin/activate &&
pip install -r requirements.txt
Otentikasi:
gcloud auth application-default login
Tetapkan proyek default:
gcloud auth application-default set-quota-project [PROJECT_ID]
Jalankan dengan model default:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
uvicorn vertex:app --reload
Contoh untuk Windows:
set DEBUG = True
set OPENAI_API_KEY = sk - XYZ
uvicorn vertex:app -- reload
Jalankan dengan model Gemini gemini-pro
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " gemini-pro "
uvicorn vertex:app --reload
Jalankan dengan model Codey codechat-bison-32k
:
export DEBUG= " True "
export OPENAI_API_KEY= " sk-XYZ "
export MODEL_NAME= " codechat-bison-32k "
export MAX_OUTPUT_TOKENS= " 16000 "
uvicorn vertex:app --reload
Aplikasi sekarang akan berjalan di komputer lokal Anda. Anda dapat mengaksesnya dengan membuka browser web dan menavigasi ke alamat berikut:
http://localhost:8000/
Format permintaan dan respons HTTP konsisten dengan OpenAI API.
Misalnya, untuk menghasilkan penyelesaian obrolan, Anda dapat mengirim permintaan POST ke titik akhir /v1/chat/completions
dengan instruksi sebagai isi permintaan:
curl --location ' http://[ENDPOINT]/v1/chat/completions '
--header ' Content-Type: application/json '
--header ' Authorization: Bearer [API-KEY] '
--data ' {
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Say this is a test!"
}
]
} '
Tanggapan:
{
"id" : " cmpl-efccdeb3d2a6cfe144fdde11 " ,
"created" : 1691577522 ,
"object" : " chat.completion " ,
"model" : " gpt-3.5-turbo " ,
"usage" : {
"prompt_tokens" : 0 ,
"completion_tokens" : 0 ,
"total_tokens" : 0
},
"choices" : [
{
"message" : {
"role" : " assistant " ,
"content" : " Sure, this is a test. "
},
"finish_reason" : " stop " ,
"index" : 0
}
]
}
Unduh ekspor untuk klien Bruno API: bruno-export.json
Konfigurasi perangkat lunak dapat dilakukan dengan variabel lingkungan.
Variabel berikut dengan nilai default ada:
Variabel | Bawaan | Keterangan |
---|---|---|
DEBUG | PALSU | Tampilkan pesan debug yang membantu selama pengembangan. |
GOOGLE_CLOUD_LOCATION | kami-pusat1 | Wilayah Google Cloud Platform untuk panggilan API. |
GOOGLE_CLOUD_PROJECT_ID | [DEFAULT_AUTH_PROJECT] | Pengidentifikasi untuk proyek Anda. Jika tidak ditentukan, proyek otentikasi digunakan. |
TUAN RUMAH | 0.0.0.0 | Ikat soket ke host ini. |
MAX_OUTPUT_TOKENS | 512 | Batas token menentukan jumlah maksimum keluaran teks dari satu prompt. Dapat diganti oleh pengguna akhir seperti yang disyaratkan oleh spesifikasi OpenAI API. |
MODEL_NAME | obrolan-bison | Salah satu model dasar yang tersedia di Vertex AI. |
OPENAI_API_KEY | sk-[RANDOM_HEX] | Kunci OpenAI API palsu yang dibuat sendiri digunakan untuk autentikasi terhadap aplikasi. |
PELABUHAN | 8000 | Ikat soket ke port ini. |
SUHU | 0,2 | Suhu pengambilan sampel, ini mengontrol tingkat keacakan dalam pemilihan token. Dapat diganti oleh pengguna akhir seperti yang disyaratkan oleh spesifikasi OpenAI API. |
TOP_K | 40 | Bagaimana model memilih token untuk keluaran, token berikutnya dipilih. |
TOP_P | 0,8 | Token dipilih dari yang paling mungkin hingga yang paling kecil hingga jumlahnya. Dapat diganti oleh pengguna akhir seperti yang disyaratkan oleh spesifikasi OpenAI API. |
Jika aplikasi Anda menggunakan pustaka klien yang disediakan oleh OpenAI, Anda hanya perlu mengubah variabel lingkungan OPENAI_API_BASE
agar sesuai dengan URL endpoint Google Cloud Run Anda:
export OPENAI_API_BASE= " https://openai-api-vertex-XYZ.a.run.app/v1 "
python your_openai_app.py
Saat menyebarkan aplikasi Chatbot UI, variabel lingkungan berikut harus ditetapkan:
Variabel | Nilai |
---|---|
OPENAI_API_KEY | Kunci API dihasilkan selama penerapan |
OPENAI_API_HOST | URL Jalankan Google Cloud |
Jalankan skrip berikut untuk membuat gambar container dari kode sumber GitHub dan terapkan container tersebut sebagai situs publik (yang memungkinkan panggilan tidak diautentikasi) di Google Cloud Run:
export OPENAI_API_KEY= " sk-XYZ "
export OPENAI_API_HOST= " https://openai-api-vertex-XYZ.a.run.app "
bash chatbot-ui.sh
Tetapkan pengaturan Kotak Obrolan berikut:
Pengaturan | Nilai |
---|---|
Penyedia AI | API OpenAI |
Kunci API OpenAI | Kunci API dihasilkan selama penerapan |
Tuan Rumah API | URL Jalankan Google Cloud |
Ekstensi VSCode-OpenAI adalah alat canggih dan serbaguna yang dirancang untuk mengintegrasikan fitur OpenAI dengan mulus ke dalam editor kode Anda.
Untuk mengaktifkan pengaturan, Anda memiliki dua opsi:
Pilih openai.com
dan masukkan URL Google Cloud Run dengan /v1
selama penyiapan.
Saat menerapkan aplikasi Discord Bot, variabel lingkungan berikut harus diatur:
Variabel | Nilai |
---|---|
OPENAI_API_KEY | Kunci API dihasilkan selama penerapan |
OPENAI_API_BASE | Google Cloud Jalankan URL dengan /v1 |
Saat menerapkan ChatGPT di aplikasi Slack, variabel lingkungan berikut harus disetel:
Variabel | Nilai |
---|---|
OPENAI_API_KEY | Kunci API dihasilkan selama penerapan |
OPENAI_API_BASE | Google Cloud Jalankan URL dengan /v1 |
Saat men-deploy aplikasi ChatGPT Telegram Bot, variabel lingkungan berikut harus diatur:
Variabel | Nilai |
---|---|
OPENAI_API_KEY | Kunci API dihasilkan selama penerapan |
OPENAI_API_BASE | Google Cloud Jalankan URL dengan /v1 |
Punya patch yang akan menguntungkan proyek ini? Luar biasa! Ikuti langkah-langkah berikut agar diterima.
Semua file dalam repositori ini berada di bawah Lisensi Apache, Versi 2.0 kecuali dinyatakan sebaliknya.