Konsep Food Ordering AI Agent

Dokumen ini memberikan ringkasan umum tentang konsep utama dalam Food Ordering AI Agent API.

Konfigurasi agen

Perilaku Agen AI Pemesanan Makanan dipengaruhi oleh konfigurasi beberapa resource API: Brand, Store, dan Menu. Resource ini menentukan identitas restoran, lokasi fisiknya, dan produk yang ditawarkannya, sehingga memberikan konteks yang diperlukan bagi agen AI untuk menangani pesanan.

Merek

Brand adalah resource tingkat teratas, yang merepresentasikan merek restoran yang sesuai dengan satu atau beberapa lokasi merek restoran tersebut. Objek ini berisi konfigurasi yang dibagikan di semua lokasi restoran tersebut. Brand dapat mencakup konfigurasi banyak fitur persona agen, seperti perilaku sapaan dan karakteristik suara. Banyak fitur tersebut dapat diganti oleh nilai yang dikonfigurasi di resource Store atau bahkan dalam konfigurasi per sesi (lihat Siklus proses sesi)

Menyimpan

Resource Store merepresentasikan satu lokasi restoran fisik milik Brand. File ini menentukan konfigurasi khusus untuk lokasi tersebut, seperti zona waktu, status (misalnya, ACTIVE, DISABLED), jam buka, dan bagian hari (misalnya, periode seperti "Sarapan" atau "Makan Siang" saat item menu tertentu tersedia).

Resource Menu menentukan semua produk yang ditawarkan oleh restoran, termasuk semua pilihan dan penyesuaian yang memungkinkan untuk setiap produk yang dapat dijual. Menu harus dikaitkan dengan Store. Menu dirancang agar fleksibel dan dapat mengakomodasi berbagai struktur menu, mulai dari daftar kecil item mandiri hingga pohon kompleks makanan kombinasi dengan pengubah bertingkat.

Komponen utama Menu meliputi:

  • Item: Produk tingkat atas yang dapat dijual seperti hidangan utama a la carte, minuman, lauk, atau makanan kombinasi.
  • ModifierGroups: Kumpulan pilihan yang berlaku untuk Item atau Modifier lainnya, seperti "Pilih Sisi" atau "Tambahkan Topping".
  • Pengubah: Opsi individual dalam ModifierGroup, seperti "Kentang Goreng", "Keju Ekstra", atau "Cola". Pengubah dapat menyesuaikan harga item dan dapat berisi ModifierGroup bertingkat untuk penyesuaian lebih lanjut.
  • MenuCategories: Unit organisasi seperti "Makanan Pembuka" atau "Minuman".

Resource Menu diidentifikasi berdasarkan nama dalam format berikut: projects/{project}/locations/{location}/menus/{menu}.

Untuk mengetahui detail selengkapnya tentang menyusun data menu, lihat Mengintegrasikan data menu.

Sesi pemesanan makanan

Sesi pemesanan makanan adalah inti dari Food Ordering AI Agent, yang memungkinkan interaksi percakapan antara pelanggan dan agen AI. Setiap sesi mewakili satu percakapan pemesanan makanan dan dikelola menggunakan metode streaming dua arah real-time (FoodOrderingService.BidiProcessOrder) atau metode permintaan-respons unary berbasis giliran (FoodOrderingService.ProcessOrder).

Metode RPC BidiProcessOrder

Ini adalah RPC streaming dua arah: aplikasi klien melakukan streaming input ke agen, dan agen secara bersamaan melakukan streaming respons kembali ke klien. Hal ini memungkinkan interaksi multimodal (suara dan teks) real-time dengan latensi rendah.

  • Aliran Klien ke Agen: Klien mengirimkan aliran pesan BidiProcessOrderRequest yang berisi input audio (ucapan pelanggan), input teks, atau input peristiwa (seperti update keranjang sisi klien yang dilakukan oleh pelanggan menggunakan antarmuka ketuk, atau peristiwa keluar dari jalur yang terdeteksi hardware dari hardware restoran drive-thru).
  • Aliran Agen ke Klien: Agen menampilkan aliran pesan BidiProcessOrderResponse yang berisi output audio (ucapan agen yang disintesis), output teks, transkrip ucapan yang dikenali, pembaruan status pesanan pelanggan, atau sinyal lain seperti gangguan yang terdeteksi.

Metode ProcessOrder RPC dan REST

ProcessOrder adalah metode permintaan-respons unary yang dirancang untuk integrasi pemesanan makanan berbasis teks, turn-by-turn (seperti widget chat, formulir web, dan klien REST). API ini dapat diakses melalui gRPC dan REST (POST /v1/{config.session=projects/*/locations/*/sessions/*}:processOrder).

Tidak seperti BidiProcessOrder, ProcessOrder beroperasi pada pergantian permintaan-respons yang terpisah dan hanya berupa teks:

  • Persyaratan Mode: config.mode harus ditetapkan secara eksplisit ke TEXT (atau 2 dalam JSON).
  • Turn Lifecycle: turn_type harus disetel ke INITIALIZE pada giliran awal untuk menyuntikkan variabel sesi (seperti menu dan metadata toko), dan SUBSEQUENT pada giliran berikutnya.

Siklus proses sesi

Setiap Sesi di Agen AI Pemesanan Makanan harus dimulai dengan konfigurasi yang disediakan klien yang ditentukan menggunakan pesan Config. Config menentukan:

  • store: Nama lengkap resource Store tempat pesanan ditempatkan (misalnya, projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE). Sesi menggunakan konfigurasi yang ditentukan dalam resource Store yang dirujuk dan resource Brand induk toko tersebut. Jika terjadi konflik konfigurasi di Brand dan Store, konfigurasi Store akan lebih diutamakan.
  • session: ID sesi unik dalam format projects/PROJECT/locations/LOCATION/sessions/SESSION. session_id adalah ID yang dibuat klien yang secara unik mengidentifikasi satu interaksi atau percakapan pelanggan.
  • mode: Mode sesi (HYBRID atau TEXT). Untuk BidiProcessOrder, mode bersifat opsional dan defaultnya adalah HYBRID (suara dan teks). Untuk ProcessOrder (unary / REST), mode harus ditetapkan secara eksplisit ke TEXT.