Integrasi API OpenAI: Completions dalam PHP

How can we help?
< All Topics
Print

Integrasi API OpenAI: Completions dalam PHP

Belakangan ini, ChatGPT telah menjadi perbincangan hangat di kalangan pengembang dan pecinta teknologi. Kehadirannya yang mampu meniru percakapan manusia dengan cukup menakjubkan telah memikat banyak orang.

Di tengah kehebohan dan kepopuleran yang dihasilkan oleh teknologi kecerdasan buatan seperti ChatGPT ini, saatnya bagi Anda untuk merasakan dampaknya dalam proyek aplikasi Anda sendiri.

Dalam konteks ini, kita membahas integrasi API OpenAI dengan jenis Completions models pada proyek website dengan bahasa pemrograman PHP di dalam VM Cloud Raya, sehingga memungkinkan Anda dalam membuat Help Center menggunakan teknologi dari GPT OpenAI. (generative pre-trained transformer).

Mendaftarkan Akun pada OpenAI

Langkah pertama yang harus kita lakukan tentunya adalah dengan mendaftarkan akun terlebih dahulu di OpenAI.

Akses https://platform.openai.com dan tentukan metode dalam membuat akun Anda.

Setelah menyelesaikan beberapa verifikasi harusnya akun kita sudah aktif dan berikut tampilan dari panel utama OpenAI.

Membuat API Key dari OpenAI

Sekarang kita sudah mulai bisa membuat API Key yang disediakan oleh OpenAI.

Klik pada thumbnail akun kita di pojok kanan atas kemudian pilih View API keys

Akan ditampilkan daftar API keys yang kita sudah pernah buat sebelumnya. API Key ini yang nantinya dipergunakan sebagai autentikasi di dalam proyek PHP kita.

Apabila belum memiliki, Anda bisa klik pada + Create new secret key

Masukkan nama dari key yang Anda ingin buat dan setelahnya API key akan dihasilkan. Harap simpan baik-baik key ini karena tidak akan ditampilkan lagi setelahnya.

Verifikasi Saldo dan Kredit OpenAI

Dalam penggunaan API, setiap permintaan akan mengurangi saldo kredit yang tersedia di akun OpenAI. Saat mendaftar di OpenAI, kita akan mendapatkan kredit penggunaan gratis dengan batas waktu tertentu sebelum kadaluwarsa.

Sebelum melanjutkan, penting untuk memastikan bahwa saldo kredit aktif masih tersedia di akun Anda.

Untuk melakukan pengecekan, akses pada halaman Usage.

Pada akun saya, saya menggunakan Free trial credits yang diberikan oleh OpenAI dengan masa kadaluwarsa yaitu 1 Juli 2023.


Sedikit tambahan informasi, layanan API dan langganan ChatGPT Plus dikenai biaya secara terpisah.

Jika saldo OpenAI sudah kadaluwarsa atau telah habis, disarankan untuk melihat model harga yang ditawarkan oleh OpenAI pada halaman berikut untuk informasi lebih lanjut.

Sedangkan langganan ChatGPT Plus mencakup penggunaan di https://chat.openai.com/ saja dan memiliki biaya $20/bulan.

Jenis Tugas dan Model Bahasa Berbasis GPT

Menurut dokumentasi referensi API dari OpenAI, beberapa jenis tugas yang dapat dilakukan adalah melalui model Completions dan model Chats.

Secara sederhana, Completions memungkinkan model menghasilkan output berdasarkan prompt yang kita berikan.

Sementara itu, Chat memungkinkan kita untuk berinteraksi secara langsung dengan model. Dengan memberikan daftar pesan berupa pertanyaan atau pernyataan, model akan merespons setiap pesan secara berurutan, seolah-olah kita sedang berkomunikasi dengan orang lain. Metode ini berguna jika kita ingin menjalani percakapan yang lebih alami dan dinamis dengan model.

Tiap tugas ini memiliki API Endpoint yang berbeda.

Dalam tutorial ini, kita akan membahas terlebih dahulu mengenai Completions.

Mengenal Prompt Engineering

Dalam Completions, terdapat sebuah parameter yang sangat penting, yaitu prompt, sebagaimana telah dijelaskan sebelumnya. Apakah maksud dari prompt?

Prompt adalah teks atau instruksi yang Anda berikan kepada bot sebagai masukan awal. Ini memberikan panduan atau arahan kepada bot tentang apa yang diharapkan dari responsnya.

Ketika kita menggunakan kecerdasan buatan (AI), Anda akan mendapatkan hasil yang lebih diinginkan jika Anda mengatur prompt (instruksi) dengan sejelas dan sebaik mungkin.

Sebagai contoh, kita dapat melihat berbagai macam skenario yang telah disediakan oleh OpenAI di halaman Example ini.

Kita coba ambil contoh dari skenario penggunaan Grammar Correction ini.

Jadi, kita menyatakan prompt terlebih dahulu di awal, di mana kita ingin agar model dapat memperbaiki input yang kita berikan sehingga menjadi bahasa Inggris dengan standar yang baik. Dengan demikian, hasilnya akan lebih sesuai tergantung pada prompt yang kita berikan.

Sebenarnya, masih ada banyak sekali skenario penggunaan lain yang dapat kita lakukan selain dari yang tercantum dalam halaman example ini, selama prompt yang kita nyatakan tersebut terperinci.

Integrasi API Request dengan PHP

Jika masih melihat pada dialog example di atas, komunikasi dengan API OpenAI masih terbatas pada lingkungan Python, Node JS, cURL, dan JSON. Namun kita bisa memanfaatkan sintaks cURL tersebut agar dapat mengirim permintaan HTTP menggunakan cURL dalam PHP.

Kita memerlukan fungsi-fungsi cURL seperti curl_init(), curl_setopt(), curl_exec(), dan lainnya. Dengan menggunakan fungsi-fungsi ini, kita dapat mengatur opsi-opsi permintaan seperti URL, header, tipe konten, metode, dan data permintaan yang diperlukan.

Hasil konversi dan modifikasinya akan menjadi kurang lebih seperti ini:

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$openaiApiKey = "YOUR_API_KEY";

$data = array(
  "model" => "text-davinci-003",
  "prompt" => "Correct this to standard English:\n\nShe no went to the market.",
  "temperature" => 0,
  "max_tokens" => 60,
  "top_p" => 1,
  "frequency_penalty" => 0.0,
  "presence_penalty" => 0.0
);

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.openai.com/v1/completions",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($data),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer " . $openaiApiKey,
    "Content-Type: application/json"
  ),
));

$response = curl_exec($curl);
curl_close($curl);

$result = json_decode($response, true);
$content = $result['choices'][0]['text'];

echo $content;

?>

Untuk Completions, Kita gunakan Endpoint https://api.openai.com/v1/completions.

Sintaks error_reporting(E_ALL) dan ini_set('display_errors', 1) digunakan untuk mengatur pelaporan dan tampilan kesalahan dalam PHP. Dengan menggunakan kedua sintaks ini, semua jenis kesalahan PHP akan ditampilkan dan pesan kesalahan akan muncul di browser. Sintaks ini sangat berguna dalam memantau adanya kesalahan, seperti ketika terjadi masalah dengan API key atau saat credit usage kita sudah habis atau telah melewati batas waktu yang ditentukan.

Tampilan hasil dari sintaks API request tersebut di browser akan terlihat seperti berikut.

She did not go to the market.

Dari konteks tampilan yang sederhana ini, kita sudah dapat memulai mengintegrasikannya dengan antarmuka pengguna yang lebih menarik, lengkap, dan sesuai dengan tujuan aplikasi PHP kita.

▶️ Parameter Kunci


Namun sebelum itu, pastikan Anda sudah memahami beberapa parameter kunci yang berguna untuk mengontrol hasil dari percakapan yang dihasilkan oleh model.

⏭️ YOUR_OPENAI_API_KEY

Parameter ini adalah kunci API yang diperlukan untuk melakukan autentikasi dan otorisasi saat mengakses layanan API OpenAI.

⏭️ model

Parameter ini menentukan model yang digunakan dalam generasi chat.

Untuk Completions, model terbaik saat ini yang bisa digunakan adalah “text-davinci-003“. Gunakan referensi berikut untuk melihat daftar model lainnya berdasarkan jenis endpoint-nya.

⏭️ prompt

Kita tuliskan instruksi yang diinginkan mengenai penggunaan model ini di sini. Untuk mendapatkan hasil yang optimal, pastikan untuk mengatur prompt dengan jelas dan terperinci.

⏭️ temperature

Dengan mengatur temperature, kita dapat mempengaruhi tingkat keacakan dan variasi dalam respons yang dihasilkan oleh model. Temperatur tinggi dapat menghasilkan respons yang lebih bervariasi dan kreatif, sementara temperatur rendah cenderung menghasilkan respons yang lebih terprediksi dan konservatif. Nilai yang umum digunakan berkisar antara 0,1 hingga 1,0.

Skenario: Pemesanan Tiket Pesawat ke Bali

Pertanyaan: “Halo, saya ingin memesan tiket pesawat ke Bali.”

Temperatur Rendah (0.2):

  • Chatbot: “Tentu, saya bisa membantu Anda dengan itu. Mohon berikan detail keberangkatan dan tanggal yang diinginkan.”
  • Respons ini menampilkan respons yang lebih konservatif dan langsung ke intinya.

Temperatur Tinggi (0.8):

  • Chatbot: “Halo! Selamat datang di layanan pemesanan tiket pesawat. Bali adalah surga tropis yang menakjubkan untuk dijelajahi. Berikan saya informasi keberangkatan dan tanggal yang diinginkan, dan saya akan mengeluarkan keajaiban penerbangan untuk Anda!”
  • Memberikan respons yang lebih kreatif dan menghadirkan nuansa liburan yang menarik.
⏭️ max_tokens

max_tokens adalah parameter yang menentukan jumlah maksimum token dalam respons model. Semakin tinggi nilainya, respons akan menjadi lebih panjang. Namun, perlu diingat bahwa setiap token mengonsumsi credit usage, sehingga semakin tinggi max_tokens, semakin cepat credit digunakan. Penting untuk memperhatikan nilai max_tokens agar sesuai dengan kebutuhan dan batas credit yang tersedia.

⏭️ top_p

top_p (Top Probability) adalah parameter yang mengendalikan sejauh mana token-token dengan probabilitas tertinggi dipertimbangkan dalam generasi teks. Akan mempengaruhi variasi dan kejutan dalam respons yang dihasilkan oleh model. Semakin rendah nilai top_p, respons lebih konservatif dan gampang diprediksi, sementara semakin tinggi nilai top_p, respons lebih bervariasi.

Skenario: Rekomendasi destinasi terbaik di Bali.

Pertanyaan: “Apa destinasi terbaik di Bali?”

top_p Rendah (0.2):

  • Chatbot: “Destinasi terbaik di Bali adalah Pantai Kuta, Pantai Sanur, dan Ubud. Mereka menawarkan keindahan alam yang menakjubkan dan pengalaman budaya yang kaya.”
  • Respons model cenderung lebih konservatif dan memilih opsi yang diprediksi sebagai destinasi terbaik.

top_p Tinggi (0.8):

  • Chatbot: “Destinasi terbaik di Bali bisa menjadi pilihan yang sulit! Pantai Kuta menawarkan keindahan pantai yang memesona, sementara Ubud menyuguhkan kehidupan seni yang berpadu dengan alam yang hijau. Jika Anda mencari petualangan, Anda dapat menjelajahi Nusa Penida dengan pemandangan tebing yang menakjubkan. Atau, Anda bisa mengunjungi Lovina dan menikmati keindahan matahari terbenam yang menenangkan. Pilih destinasi yang sesuai dengan minat dan preferensi Anda!”
  • Respons model lebih bervariasi dan memberikan pilihan yang lebih kreatif dalam rekomendasinya.
⏭️ frequency_penalty

frequency_penalty (penalti frekuensi) digunakan untuk mengatur sejauh mana model cenderung mengulangi kata-kata yang sering muncul dalam percakapan.

Penalti ini mengurangi probabilitas kata-kata umum sehingga model lebih cenderung menghasilkan kata-kata yang lebih unik dalam responsnya.

Skenario: Hobi favorit.

frequency_penalty Rendah (0.2):

  • Manusia: “Apa hobi favoritmu?”
  • Chatbot: “Hobi favorit saya adalah bermain game.”
  • Manusia: “Menarik. Apa hobi favoritmu selain bermain game?”
  • Chatbot: “Hobi favorit saya adalah bermain game.”

frequency_penalty Tinggi (0.8):

  • Manusia: “Apa hobi favoritmu?”
  • Chatbot: “Hobi favorit saya adalah bermain game.”
  • Manusia: “Menarik. Apa hobi favoritmu selain bermain game?”
  • Chatbot: “Hobi favorit saya adalah bermain game. Saya juga suka menghabiskan waktu bersama teman-teman dan keluarga.”
⏭️ presence_penalty

presence_penalty (penalti kehadiran) mengatur sejauh mana model cenderung menghasilkan kata-kata yang sudah ada dalam input teks.

Penalti ini mengurangi probabilitas kata-kata yang sudah ada dalam input sehingga model lebih cenderung menghasilkan kata-kata yang belum ada dalam input, mendorong kebaruan dalam responsnya.

Skenario: Hobi favorit.

presence_penalty Rendah (0.2):

  • Manusia: “Apa hobi favoritmu?”
  • Chatbot: “Hobi favoritku adalah bermain game.”
  • Model mengulangi kata “hobi favorit” yang sudah ada di dalam input teks.

presence_penalty Tinggi (0.8):

  • Manusia: “Apa hobi favoritmu?”
  • Chatbot: “Saya suka melakukan banyak hal. Salah satunya bermain game.”
  • Model menghasilkan kata-kata yang belum ada dalam input.

Catatan: Baik frequency_penalty maupun presence_penalty bertujuan untuk meningkatkan keberagaman teks yang dihasilkan, namun keduanya melakukannya dengan cara yang berbeda. Frequency penalty menghindari pengulangan kata-kata umum, sedangkan presence penalty menghindari menghasilkan kata-kata yang sudah ada dalam input.

Akses dokumentasi berikut untuk mengetahui lebih lanjut mengenai kumpulan parameter-parameter tersebut.

Atau sebenarnya Anda juga bisa langsung mensimulasikan konfigurasi parameter yang diinginkan dengan mengakses halaman playground.

Namun, perlu dicatat bahwa penggunaan playground juga akan mengurangi kuota penggunaan Anda.

Hasil Implementasi

Setelah kita memahami parameter utama dan kerangka permintaan API dari OpenAI, kita dapat mengkreasikannya dalam contoh implementasi pada aplikasi.

Di sini, saya telah membuat sebuah aplikasi PHP sederhana di dalam VM Cloud Raya. Aplikasi akan berfungsi sebagai Trip Advisor, yang memungkinkan pengguna untuk meminta rekomendasi destinasi menarik di suatu lokasi.

Dalam prompt tersebut, saya telah menyatakan beberapa kondisi dan batasan masalah yang ingin diterapkan pada bot ini saat beroperasi.

Kesimpulan

Melalui tutorial ini kami berharap Anda mendapatkan pemahaman yang baik tentang integrasi API OpenAI dengan jenis tugas Completions pada proyek website dengan bahasa pemrograman PHP di dalam VM Cloud Raya.

Integrasi kecerdasan buatan seperti ini dapat membuka berbagai peluang untuk meningkatkan interaksi dan pengalaman pengguna di situs web.

Kunjungi halaman Knowledge Base Cloud Raya untuk tutorial menarik lainnya seputar aktifitas di dalam cloud computing. Atau, jika Anda lebih suka menyimak melalui video, silakan mengunjungi channel Youtube kami.

Table of Contents

Leave a Reply

Your email address will not be published. Required fields are marked *

Post comment

Ready, Set, Cloud

Ready, Set, Cloud