Memberdayakan Kemampuan AI dengan Apache APISIX dan OpenAI API
February 7, 2023
Kecerdasan Buatan (AI) telah merevolusi cara kita berinteraksi dengan teknologi dan telah menjadi bagian integral dari aplikasi modern. OpenAI API memberikan pengembang kemampuan AI yang kuat, memungkinkan mereka membangun aplikasi AI canggih dengan mudah.
Namun, seiring dengan pertumbuhan penggunaan AI, kebutuhan akan integrasi API yang dapat diskalakan, berkinerja tinggi, dan aman juga meningkat. Di sinilah Apache APISIX hadir. Apache APISIX adalah API gateway open-source berkinerja tinggi yang menyediakan fitur canggih untuk mengelola dan menskalakan integrasi API.
Dalam posting blog ini, kita akan menjelajahi manfaat mengintegrasikan Apache APISIX dengan OpenAI API dan bagaimana Anda dapat menggunakan Apache APISIX untuk membuat integrasi AI yang lebih skalabel, berkinerja tinggi, dan aman. Dari caching proxy hingga fitur keamanan, kami akan membahas semua yang perlu Anda ketahui untuk memulai dengan integrasi Apache APISIX dan OpenAI API. Baik Anda seorang pengembang AI atau profesional DevOps, posting blog ini adalah panduan lengkap Anda untuk membuat integrasi AI yang kuat dan hemat biaya.
Tujuan pembelajaran
Anda akan mempelajari hal-hal berikut sepanjang artikel:
- Apa itu OpenAI API dan Apache APISIX?
- Manfaat menggunakan Apache APISIX dengan OpenAI API.
- Beberapa kasus penggunaan plugin Apache APISIX untuk meningkatkan OpenAI API.
- Cara membuat Route baru di APISIX untuk OpenAI API.
- Cara menambahkan endpoint OpenAI API sebagai Upstream untuk route.
- Cara mengonfigurasi autentikasi, pembatasan kecepatan, dan caching untuk route sesuai kebutuhan.
- Cara menguji route untuk memastikan permintaan diteruskan dengan benar ke OpenAI API.
Apa itu OpenAI API?
OpenAI adalah platform mutakhir untuk membuat dan menerapkan model kecerdasan buatan canggih. Model-model ini dapat digunakan untuk berbagai tugas, seperti pemrosesan bahasa alami, pengenalan gambar, dan analisis sentimen. Salah satu manfaat utama OpenAI adalah menyediakan API yang dapat digunakan pengembang untuk mengakses model-model ini dan memasukkannya ke dalam aplikasi mereka.
OpenAI API adalah platform berbasis cloud yang menyediakan akses ke model AI OpenAI, termasuk ChatGPT. API ini memungkinkan pengembang untuk mengintegrasikan kemampuan AI ke dalam aplikasi mereka.
ChatGPT hanyalah salah satu model AI yang tersedia melalui OpenAI API, dan sangat cocok untuk kasus penggunaan yang memerlukan kemampuan pemrosesan bahasa alami dan pembuatan teks. Misalnya, ChatGPT dapat digunakan untuk menghasilkan respons teks dalam chatbot, memberikan saran penyelesaian teks, penyelesaian kode, atau menjawab pertanyaan dalam antarmuka percakapan.
Apa itu Apache APISIX?
Apache APISIX adalah solusi manajemen lalu lintas API cloud-native open-source yang menawarkan fitur API Gateway untuk membuat API RESTful yang dapat diskalakan, aman, dan sangat tersedia.
Dengan menggunakan API Gateway bersama OpenAI API, Anda dapat dengan mudah membuat dan menerapkan API yang dapat diskalakan, aman, dan berkinerja tinggi yang mengakses model OpenAI. Ini akan memungkinkan Anda untuk memasukkan kekuatan OpenAI ke dalam aplikasi Anda dan memberikan pengalaman yang luar biasa bagi pengguna Anda.
Apa manfaat menggunakan Apache APISIX dengan OpenAI API?
Ada beberapa manfaat menggunakan Apache APISIX dengan OpenAI API:
-
Skalabilitas: Apache APISIX menyediakan cara mudah untuk mengelola dan menskalakan OpenAI API, memungkinkan Anda menangani peningkatan lalu lintas dan permintaan penggunaan.
-
Kinerja: Apache APISIX dapat membantu meningkatkan kinerja permintaan OpenAI API dengan melakukan caching respons dan mengurangi latensi. Keamanan: Apache APISIX menyediakan fitur keamanan seperti enkripsi dan autentikasi, memudahkan untuk mengamankan akses ke OpenAI API.
-
Fleksibilitas: Apache APISIX menyediakan cara fleksibel untuk mengelola dan mengontrol akses ke OpenAI API, memungkinkan Anda menyesuaikan dan mengonfigurasi integrasi Anda sesuai kebutuhan.
-
Pemantauan dan Analitik: Apache APISIX menyediakan pemantauan dan analitik terperinci, memungkinkan Anda melacak dan mengoptimalkan kinerja integrasi OpenAI API Anda.
Plugin Apache APISIX untuk meningkatkan OpenAI API
Ada beberapa plugin Apache APISIX yang dapat digunakan untuk meningkatkan integrasi dengan OpenAI API. Beberapa plugin yang dapat Anda gunakan dengan OpenAI API termasuk:
- rate-limiting: Untuk membatasi jumlah permintaan API dan mencegah penggunaan berlebihan OpenAI API.
- authentication: Untuk mengamankan akses ke OpenAI API dengan menerapkan mekanisme autentikasi dan otorisasi.
- traffic-control: Untuk mengontrol aliran lalu lintas API dan memastikan kinerja dan stabilitas yang konsisten dari OpenAI API.
- observability: Untuk memantau dan mencatat permintaan dan respons API, memberikan visibilitas ke dalam penggunaan dan kinerja OpenAI API.
- caching: Untuk melakukan caching respons API dan mengurangi jumlah permintaan API, meningkatkan kinerja dan mengurangi biaya penggunaan OpenAI API.
- transformation: Untuk memodifikasi permintaan dan respons API, mengubah data dari satu format ke format lain, seperti JSON ke XML.
Demo Mengelola OpenAI API dengan Apache APISIX
Dengan cukup pengetahuan teoretis, sekarang kita bisa melompat ke sesi praktis. Dalam contoh ini, Apache APISIX digunakan untuk membuat API gateway sederhana yang mengakses OpenAI API dan mengelola lalu lintas dengan membuat route, upstream, dan mengaktifkan beberapa plugin. Kita akan berinteraksi dengan OpenAI API Completion endpoint untuk membuat generator deskripsi produk yang menghasilkan deskripsi produk secara efisien dan akurat.
Misalnya, permintaan khas ke API Gateway akan terlihat seperti di bawah ini:
curl http://127.0.0.1:9080/openai/product/desc -X POST -d '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }'
Dan, kita akan mendapatkan output:
{ "object":"text_completion", "model":"text-davinci-003", "choices":[ { "text":"\n\nThe Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine. It features a 13-inch Retina display with True Tone technology, a powerful 8th-generation Intel Core i5 processor, 8GB of RAM, and a 256GB SSD for storage. It also has a Touch Bar and Touch ID for added security and convenience. With up to 10 hours of battery life, you can stay productive all day long. The Apple 13 Pro is the perfect laptop for those who need a powerful and reliable machine.", "index":0, "finish_reason":"stop" } ], "usage":{ "prompt_tokens":9, "completion_tokens":109, "total_tokens":118 } }
Prasyarat
- Harus familiar dengan konsep dasar model completion OpenAI API.
- Buat OpenAI API Key: Untuk mengakses OpenAI API, Anda perlu membuat API Key. Anda dapat melakukannya dengan masuk ke situs web OpenAI dan menavigasi ke halaman manajemen API Key.
- Docker terinstal di mesin Anda untuk menjalankan APISIX.
- Pengetahuan dasar tentang beberapa konsep inti APISIX seperti Route, Upstream dan Plugin.
Menyiapkan proyek
Hal pertama yang Anda lakukan adalah mengkloning repositori proyek apisix-docker dari GitHub:
git clone https://github.com/apache/apisix-docker.git
Buka folder proyek di editor kode favorit Anda. Tutorial ini menggunakan VS Code.
Menginstal dan menjalankan Apache APISIX
Untuk menjalankan Apache APISIX, Anda dapat mengikuti langkah-langkah berikut:
Buka jendela terminal baru dan jalankan perintah docker compose up dari folder root proyek:
docker compose up -d
Perintah di atas akan menjalankan Apache APISIX dan etcd bersama-sama dengan Docker.
Kami menginstal APISIX menggunakan Docker dalam demo ini. Namun, ada opsi lain untuk menginstalnya di panduan instalasi.
Membuat Upstream untuk OpenAI API
Setelah penyiapan selesai, kita akan membuat objek Upstream di APISIX menggunakan Admin API. "Upstream" dalam APISIX merujuk ke server backend yang bertanggung jawab untuk melayani data permintaan aktual.
Dalam kasus kami, kami mendefinisikan server API upstream di api.openai.com dengan satu node dan skema https yang digunakan saat berkomunikasi secara aman dengan Upstream:
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" -H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d ' { "name": "OpenAI API upstream", "desc": "Add the OpenAI API domain as the upstream", "type": "roundrobin", "scheme": "https", "nodes": { "api.openai.com:443": 1 } }'
Membuat konfigurasi plugin baru
Sekarang kita membuat konfigurasi plugin baru dengan plugin proxy-rewrite diaktifkan.
Plugin proxy digunakan untuk mendefinisikan ulang permintaan ke endpoint completion OpenAI API. Konfigurasi plugin mencakup opsi untuk mengatur URL untuk endpoint API, meneruskan kunci API OpenAI sebagai header, dan dengan header Content-Type diatur ke application/json.
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } } } }'
Menyiapkan Route untuk endpoint completion OpenAI
Pada langkah selanjutnya, kita menyiapkan Route baru di APISIX untuk menangani permintaan POST dengan jalur URI API Gateway kustom baru /openai/product/desc dan kami memberikan referensi ke upstream dan konfigurasi plugin yang dibuat pada langkah sebelumnya dengan ID unik mereka.
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "name":"OpenAI API completion route", "desc":"Create a new route in APISIX for the OpenAI API completion endpoint", "methods":[ "POST" ], "uri":"/openai/product/desc", "upstream_id":"1", "plugin_config_id":1 }'
Selain itu, route disiapkan dengan retry, timeout, dan keepalive timeout untuk memastikan komunikasi yang kuat dan tangguh dengan OpenAI API.
Menguji dengan Permintaan Curl
Untuk menguji API, Anda dapat membuat permintaan POST ke endpoint /openai/product/desc menggunakan alat seperti cURL atau Postman. API Gateway akan meneruskan permintaan ke endpoint completion OpenAI API dan mengembalikan hasilnya dengan sukses.
curl http://127.0.0.1:9080/openai/product/desc -X POST -d '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }'
Bagus! Kami mendapatkan respons dari endpoint completion yang sebenarnya:
HTTP/1.1 200 OK Content-Type: application/json ... { "object":"text_completion", ... "choices":[ { "text":"\n\nThe Apple 13 Pro is the perfect laptop...", "index":0, "logprobs":null, "finish_reason":"stop" } ], ... }
Membuat consumer baru dan menambahkan autentikasi
Sampai sekarang, endpoint API Gateway kami /openai/product/desc bersifat publik dan dapat diakses oleh pengguna yang tidak sah (Meskipun komunikasi antara APISIX dan OpenAI API diamankan dengan API Key di header). Pada bagian ini, kami akan mengaktifkan fitur autentikasi untuk mencegah permintaan yang tidak sah ke API kami.
Untuk melakukannya, kami perlu membuat consumer baru untuk endpoint kami dan menambahkan plugin basic-auth untuk konfigurasi plugin yang ada sehingga hanya pengguna yang diizinkan yang dapat mengaksesnya.
Perintah di bawah ini akan membuat consumer1 baru dengan kredensial seperti username1 dan password1:
curl http://127.0.0.1:9180/apisix/admin/consumers -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "username": "consumer1", "plugins": { "basic-auth": { "username": "username1", "password": "password1" } } }'
Sekarang kami memperbarui konfigurasi plugin yang ada dan menambahkan plugin basic-auth untuk memungkinkan route APISIX memeriksa header permintaan dengan kredensial API consumer setiap kali API dipanggil:
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } }, "basic-auth":{} } }'
Sekarang hanya jika kami memberikan kredensial pengguna yang benar dalam permintaan dan mengakses endpoint yang sama, kami dapat mendapatkan respons yang diharapkan dari OpenAI API:
curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc -X POST -d \ '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }'
Menerapkan kebijakan pembatasan kecepatan untuk API serverless
Pada bagian ini, kami akan melindungi endpoint deskripsi produk kami dari penyalahgunaan dengan menerapkan kebijakan throttling. Di Apache APISIX Gateway, kami dapat menerapkan pembatasan kecepatan untuk membatasi jumlah panggilan masuk.
Menerapkan dan menguji kebijakan rate-limit
Dengan konfigurasi route yang ada, kami dapat menerapkan kebijakan rate-limit dengan plugin limit-count untuk melindungi API kami dari penggunaan yang tidak normal. Kami akan membatasi jumlah panggilan API menjadi 2 per 60 detik per API consumer.
Untuk mengaktifkan plugin limit-count untuk route yang ada, kami perlu menambahkan plugin ke daftar plugin dalam konfigurasi Json kami:
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } }, "basic-auth":{}, "limit-count":{ "count":2, "time_window":60, "rejected_code":403, "rejected_msg":"Requests are too frequent, please try again later.", "key_type":"var", "key":"remote_addr" } } }'
Apache APISIX akan menangani dua permintaan pertama seperti biasa. Namun, permintaan ketiga dalam periode yang sama akan mengembalikan kode 403 HTTP Forbidden dengan pesan kesalahan kustom kami:
curl -i -u username1:password1 http://127.0.0.1:9080/openai/product/desc -X POST -d \ '{ "model":"text-davinci-003", "prompt":"Write a brief product description for Apple 13 pro", "temperature":0, "max_tokens":256 }' # Setelah panggilan pertama HTTP/1.1 200 OK Content-Type: application/json Content-Length: 752 Connection: keep-alive X-RateLimit-Limit: 2 X-RateLimit-Remaining: 1 # Setelah panggilan kedua HTTP/1.1 403 Forbidden {"error_msg":"Requests are too frequent, please try again later."}
Mengonfigurasi caching untuk respons OpenAI API
Proxy caching Apache APISIX adalah fitur Apache APISIX yang memungkinkan Anda melakukan caching respons API dan melayani respons yang di-cache ke permintaan berikutnya. Ini dapat membantu mengurangi jumlah permintaan API yang berarti pengurangan biaya penggunaan OpenAI API, meningkatkan kinerja integrasi API Anda, dan mengurangi beban pada server API.
Apache APISIX menyediakan kontrol yang sangat rinci terhadap perilaku caching, memungkinkan Anda menentukan waktu kedaluwarsa cache, kondisi untuk pembatalan cache, dan kebijakan caching lainnya.
Dalam konfigurasi di bawah ini, kami akan mendefinisikan plugin proxy-cache bersama dengan plugin lain yang ingin kami cache hanya respons deskripsi produk yang berhasil dari metode POST endpoint completion OpenAI API.
curl http://127.0.0.1:9180/apisix/admin/plugin_configs/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "plugins":{ "proxy-rewrite":{ "uri":"/v1/completions", "host":"api.openai.com", "headers":{ "Authorization":"OpenAI API Key", "Content-Type":"application/json" } }, "basic-auth":{}, "proxy-cache":{ "cache_key":[ "$uri", "-cache-id" ], "cache_method":[ "POST" ], "cache_http_status":[ 200 ], "hide_cache_headers":true } } }'
Kami akan mengirim beberapa permintaan ke jalur /openai/product/desc dan kami harus menerima respons HTTP 200 OK setiap kali. Namun, Apisix-Cache-Status dalam respons menunjukkan MISS yang berarti respons belum di-cache saat permintaan pertama kali mencapai route. Sekarang, jika Anda membuat permintaan lain, Anda akan melihat bahwa Anda mendapatkan respons yang di-cache dengan indikator caching sebagai HIT.
Respons terlihat seperti di bawah ini:
HTTP/1.1 200 OK … Apisix-Cache-Status: MISS
Ketika Anda melakukan panggilan berikutnya ke layanan, route merespons permintaan dengan respons yang di-cache karena sudah di-cache dalam permintaan sebelumnya:
HTTP/1.1 200 OK … Apisix-Cache-Status: HIT
Ringkasan
Integrasi Apache APISIX dan OpenAI API melibatkan kombinasi fitur Apache APISIX, sebuah API gateway microservices open-source berkinerja tinggi, dengan kemampuan kecerdasan buatan canggih dari OpenAI API untuk meningkatkan fungsionalitas dan kinerja aplikasi. Dengan integrasi ini, pengembang dapat memanfaatkan skalabilitas dan kinerja Apache APISIX untuk mengelola microservices sambil memanfaatkan kemampuan AI mutakhir dari OpenAI untuk memberikan fitur canggih dan canggih kepada pengguna mereka.
Pada tahap selanjutnya, Anda dapat menerapkan kode runtime APISIX dan OpenAI ke server aplikasi atau cloud publik apa pun untuk membuatnya tersedia di produksi.
Sepanjang posting ini, kami hanya mendemonstrasikan beberapa contoh plugin Apache APISIX yang dapat digunakan dengan OpenAI API. Anda dapat memilih plugin yang paling sesuai dengan kebutuhan Anda dan menyesuaikan integrasi Apache APISIX dan OpenAI API Anda untuk memenuhi persyaratan spesifik aplikasi Anda.
Sumber daya terkait
Konten yang direkomendasikan
Komunitas
🙋 Bergabunglah dengan Komunitas Apache APISIX 🐦 Ikuti kami di Twitter 📝 Temukan kami di Slack