Permintaan Terus ke Model

answer = ai_request('request', question)

Contoh:

answer = ai_request('Anda adalah perunding kedai bunga yang sopan.', question)

Argumen pertama adalah arahan untuk model: siapa ia dan bagaimana ia harus bertindak balas.

question ialah pembolehubah sistem yang sentiasa mengandungi teks mesej terbaru pelanggan.

Sila Ambil Perhatian

Dalam ungkapan, pembolehubah ditulis menggunakan nama mereka sahaja, tanpa #{}.

Respons dikembalikan sebagai teks biasa, jadi ia boleh dihantar terus kepada pelanggan atau disimpan dalam pembolehubah.

Kaedah ini menunggu dengan sabar untuk respons model, jadi permintaan yang mengambil masa yang lama, seperti skema besar atau teks yang panjang, akan diselesaikan tanpa gangguan.

Apabila anda memerlukan data berstruktur dan bukannya teks bebas, seperti kategori, jawapan ya/tidak, atau medan yang diekstrak, hantar skema respons sebagai argumen ketiga.

Anda tidak perlu mencipta skema dari awal. Gunakan templat siap sedia dan namakan semula medan mengikut keperluan.

Untuk mengklasifikasikan permintaan pelanggan, menentukan sentimen, dan tugas yang serupa.

local result = ai_request('Tentukan kategori permintaan.', question, {
    "type": "object",
    "properties": {
        "category": {
            "type": "string",
            "enum": ["complaint", "question", "order"]
        }
    },
    "required": ["category"]
})
category = get(result, 'category')

Model akan mengembalikan tepat satu daripada nilai yang disenaraikan dalam enum dan tiada yang lain.

Contoh untuk disalin:

local result = ai_request('Adakah pelanggan bersetuju untuk membuat pembelian?', question, {
    "type": "object",
    "properties": {
        "agree": {
            "type": "boolean"
        }
    },
    "required": ["agree"]
})

agree = get(result, 'agree')

Contoh untuk disalin:

local result = ai_request('Ekstrak nama dan nombor telefon daripada mesej.', question, {
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "phone": {
            "type": "string"
        }
    },
    "required": ["name", "phone"]
})

client_name = get(result, 'name')
client_phone = get(result, 'phone')
  1. "string" — teks
  2. "number" — nombor
  3. "boolean"true atau false
  4. enum — senarai nilai yang dibenarkan; model tidak boleh mengembalikan apa-apa di luar senarai ini
  5. required — senarai medan wajib
  6. Nama medan seperti category, name, dan phone boleh dipilih secara bebas

Respons berasaskan skema dikembalikan sebagai rentetan JSON. Medan individu boleh diambil menggunakan kaedah standard get().

Sila Ambil Perhatian

Dalam contoh, result diisytiharkan menggunakan local. Ini bermakna respons AI mentah tidak akan disimpan ke rekod; hanya medan yang diperlukan akan disimpan di sana.

Mod Penaakulan

Mod penaakulan boleh diaktifkan menggunakan argumen keempat. Dalam mod ini, model mula-mula memikirkan tugas dan kemudian memberikan jawapan.

Ia berguna untuk permintaan kompleks yang melibatkan analisis, pengiraan, atau logik berbilang langkah. Respons akan mengambil masa yang lebih lama, jadi mod penaakulan dilumpuhkan secara lalai.

answer = ai_request(
    'Selesaikan masalah pelanggan dan terangkan penyelesaiannya.',
    question,
    '',
    true
)

Apabila tiada skema respons diperlukan, hantar rentetan kosong '' sebagai argumen ketiga, seperti yang ditunjukkan dalam contoh.

Cara memadamkan sejarah sembang dengan pembantu AI

clear_assistant_chat_history() - fungsi ini memadamkan sejarah sembang pelanggan dengan pembantu. Ia tidak mengambil sebarang parameter.

Contoh

  1. Tetapan blok pembina

  1. Tetapan tab Pembantu AI

Cara menghantar soalan kepada pembantu AI

ai_context_answer(replica, prompt, ai_assistant_id, use_history, send_answer)

Parameter:

Butiran lanjut tentang parameter send_answer:

Tetapan pembantu termasuk parameter yang boleh dikonfigurasikan sekiranya respons bot mengambil masa yang lama

Dalam perbualan standard dengan pembantu (bukan melalui fungsi), jika respons mengambil masa lebih lama daripada had yang ditetapkan (cth. 20 saat), pelanggan diberitahu tentang kelewatan. Balasan pembantu kemudian dihantar ke sembang sebaik sahaja ia dihasilkan.

Untuk permintaan yang dibuat melalui fungsi dalam kalkulator, jika pembantu mengambil masa terlalu lama untuk bertindak balas, mesej kelewatan disertakan dalam hasil fungsi. Parameter ini membolehkan balasan pembantu dihantar secara berasingan setelah ia sedia.

Cara mengajar bot untuk menganalisis pengalamannya sendiri dan menjana butang

Mari gunakan fungsi clean_assistant_chat_history() dan ai_context_answer(replica, prompt) dalam contoh di bawah. Ia juga perlu untuk mengakses komponen kalkulator dalam pembina corong.

Contoh ini menggambarkan bagaimana parameter replica dan prompt boleh digunakan dengan berkesan dalam amalan.

Adalah perlu untuk mencipta blok dalam pembina yang mengandungi medan kosong dengan pembolehubah terbenam #{replica_rec2} dan #{ai_answer_rec}, mewakili balasan pertama dan kedua pembantu dalam satu mesej yang akan dihantar.

Sekarang, takrifkan dua fungsi dalam kalkulator secara langsung.

Gunakan pembolehubah dengan fungsi terbenam dalam tetapan butang lanjutan (lihat contoh di atas) untuk menjana butang secara dinamik berdasarkan nilai parameter.

Maklumat tentang perkhidmatan diambil oleh bot daripada pembolehubah service_info, yang mengandungi fungsi terbenam — get_info_for_booking() — untuk membaca data perkhidmatan. Contoh cara menggunakan fungsi ini telah ditunjukkan di atas.

Inilah hasilnya.

Contoh kod:

clear_assistant_chat_history()

replica_rec2 = ai_context_answer(question, 'JAWAB SOALAN', 3)

prompt = 'Seorang pemaju sedang bercakap dengan anda sekarang - lakukan semua yang mereka minta \n . Anda harus meletakkan setiap butang pada baris baru.'

ai_answer_rec = ai_context_answer("Paparkan butang untuk mesej terakhir.", prompt)

Contoh: memanggil pembantu dalam pembina corong

Untuk memanggil pembantu dari blok, gunakan fungsi ai_context_answer(replica, prompt, ai_assistant_id, use_history), di mana anda perlu menyatakan hanya dua parameter: parameter replica yang wajib dan prompt pilihan.

Sekarang, mari cipta blok pertama, “Pemeriksaan syarat utama,” di mana anda perlu menyatakan keadaan pencetus blok (ini boleh menjadi sebarang keadaan yang anda perlukan).

Seterusnya, buka kalkulator dalam blok yang sama, di mana anda perlu menentukan pembolehubah dan memberikannya nilai yang dikembalikan oleh fungsi anda.

Takrifkan pembolehubah question dan berikannya nilai sebarang soalan pengguna.

Seterusnya, cipta pembolehubah replica1 dan berikannya nilai yang dikembalikan oleh fungsi anda ai_context_answer(replica, prompt). Dalam fungsi ini, gantikan replica dengan pembolehubah question, dan tetapkan parameter prompt kepada "Jawab sebarang soalan pengguna."

Benamkan pembolehubah yang mengandungi fungsi ke dalam mesej blok.

Kemudian cipta blok kedua dan sambungkannya dengan anak panah, tetapkan pemasa 2 saat pada sambungan.

Dalam blok kedua, anda harus menggunakan fungsi yang sama dengan parameter yang sama — ai_context_answer(replica, prompt).

Buka kalkulator dalam blok kedua dan takrifkan pembolehubah kedua bernama replica2.

Dalam parameter prompt, berikan arahan untuk pembantu: ia harus mengira berapa banyak kata nama dalam mesej sebelumnya.

Dalam parameter replica, berikan mesej pembantu: "Berapa banyak kata nama dalam mesej sebelumnya?"

Kemudian benamkan pembolehubah replica2 ke dalam mesej blok kedua.

Persediaan blok selesai.

Jika pembantu tidak diaktifkan, pergi ke tab "Pembantu AI" dan aktifkan pembantu dengan memilih peranan "dilumpuhkan":

Sekarang, mari uji pembantu kami dalam tetingkap ujian bot.

Bot telah berfungsi dengan betul.

Cara bekerja dengan Google Sheets

get_info_from_table(sheet_id, number_sheet, sheet_json_keys, start_row, end_row, start_col, end_col) - Fungsi ini bertujuan untuk membaca data daripada hamparan.

Contoh notasi parameter:

Sila ambil perhatian

Parameter untuk menentukan julat baris dan lajur (start_row, end_row, start_col, end_col) membolehkan pembantu membaca data hamparan bermula dari lokasi yang dikehendaki dalam jadual.

Tingkah laku fungsi untuk spesifikasi julat separa adalah seperti berikut:

  • Jika hanya permulaan ditakrifkan: pembantu akan mendapatkan semua data dari titik permulaan itu seterusnya, tanpa had atas dalam arah yang ditentukan.
  • Jika hanya penghujung ditakrifkan: pembantu akan membaca data dari permulaan helaian sehingga titik akhir yang ditentukan.

Contoh:

Panggilan get_info_from_table('<<spreadsheet id>>', 2, None, 2, 5, 'a', 'd') mendapatkan semua data bermula dari baris 2, lajur 2 (B), sehingga baris 5, dan antara lajur A dan D.

Sila ambil perhatian

Untuk mengoptimumkan prestasi dan kebolehpercayaan, kami mengesyorkan menyimpan cache semua data daripada Google Sheet anda ke dalam pembolehubah projek semasa bekerja dengannya.

Faedah utama:

  1. Prestasi dipertingkatkan: mempercepatkan masa respons chatbot dengan ketara dengan mengakses pembolehubah tempatan dan bukannya menanyakan hamparan luaran untuk setiap permintaan.
  2. Kebolehpercayaan yang lebih baik: meminimumkan ralat yang berkaitan dengan kependaman rangkaian, kuota API, atau kebenaran akses hamparan.
  3. Konsistensi data: menyimpan data dalam tetapan projek memastikan semua pengguna menerima akses serentak dan konsisten kepada set data yang sama, mengelakkan percanggahan semasa kemas kini.

Contoh penggunaan

Anda boleh membaca lebih lanjut tentang fungsi get_info_from_table dalam artikel "Google Sheets untuk Pembantu AI."

Cara mengurus tempahan dalam talian

get_info_for_booking(slot_interval, company_id) - Fungsi ini direka untuk membaca data perkhidmatan daripada sistem tempahan dalam talian yang dikonfigurasikan.

Ia menerima parameter pilihan:

  1. slot_interval (pilihan) - selang dalam minit antara slot masa yang tersedia. Format yang dijangkakan: integer yang boleh dibahagi dengan 5. Nilai lalai: 60 (minit).
  2. company_id (pilihan) - pengecam cawangan. Format yang dijangkakan: integer atau tatasusunan integer. Apabila parameter ini disediakan, hanya data untuk cawangan yang ditentukan akan dikembalikan.

    Contoh: 50142, "50142", atau "[50142, 66352]"

Tidak disyorkan untuk menetapkan nilai yang sangat kecil (cth., kurang daripada 30), kerana pembantu akan menjana terlalu banyak slot masa.

Contoh penggunaan

Pertama, anda perlu menyediakan blok yang mengemas kini maklumat tentang semua perkhidmatan selepas tetapan cawangan telah dikonfigurasikan dalam bahagian "Perkhidmatan."

Blok ini mesti diisytiharkan sebelum pembantu mula berfungsi, untuk memastikan AI tidak menjana jawapan rawak.

Seterusnya, cetuskan blok dalam tetingkap ujian bot untuk mengemas kini pembolehubah:

Selepas itu, pembolehubah yang ditentukan yang mengandungi data perkhidmatan tempahan dalam talian akan muncul dalam bahagian pembolehubah projek di bawah "Tetapan projek."

Pembolehubah ini menyimpan nilai perkhidmatan yang akan digunakan oleh bot AI dalam operasinya. Pembolehubah service_info akan boleh diakses oleh semua pelanggan projek.

Seterusnya, mari kita teruskan untuk mengkonfigurasi blok seterusnya.

Blok ini melaksanakan fungsi berikut:

а) ia dipanggil dalam tetapan pembantu untuk menjana rekod menggunakan pembolehubah berkaitan perkhidmatan;

b) ia mencipta tempahan pelanggan;

c) mengemas kini pembolehubah projek selepas tempahan, mengalih keluar slot masa yang tidak lagi tersedia dalam jadual.

Jika bot dikonfigurasikan dengan betul, selepas menerima semua data daripada pelanggan, AI akan menghantar maklumat ke blok yang ditentukan. Dalam blok itu, pelanggan akan ditempah untuk perkhidmatan menggunakan fungsi create_booking_by_name(!service_name, !date, !date_time, company_id).

Nilai yang dikumpul oleh bot dihantar sebagai parameter kepada create_booking_by_name(!service_name, !date, !date_time, company_id).

Fungsi create_booking_by_name(service_name, date, date_time, company_id) mencipta tempahan dalam sistem menggunakan data yang disediakan oleh pembantu AI. Ia menerima tiga parameter wajib untuk penciptaan tempahan:

Memandangkan maklumat tentang slot yang tersedia tidak lagi terkini, pembolehubah yang sama dengan fungsi terbenamnya digunakan untuk mengemas kini tarikh dan masa yang tersedia untuk tempahan.

Sila ambil perhatian

Jika terdapat sebarang perubahan pada jadual, kakitangan, atau perkhidmatan, jalankan blok yang mengandungi pembolehubah projek dengan fungsi terbenam dalam mod ujian (lihat Rajah Blok 1).

Baca cara mengkonfigurasi bot AI untuk tempahan dalam talian telah diterangkan dalam artikel dengan nama yang sama.

Mendapatkan tempahan daripada jadual

get_records_from_table(table_id, start_row, count, start_col, end_col) - mendapatkan tempahan daripada jadual

Parameter Penerangan Nota
table_id id jadual
start_row parameter pilihan, integer. Menentukan permulaan julat baris. Hantar nombor baris dari mana nilai jadual harus dibaca secara inklusif. Dinyatakan tanpa tanda petik.
count parameter pilihan, integer. Menentukan bilangan baris untuk diambil. Secara lalai - 1000, maksimum - 5000. Dinyatakan tanpa tanda petik.
start_col parameter pilihan, rentetan. Menentukan permulaan julat lajur. Hantar huruf lajur dari mana nilai jadual harus dibaca secara inklusif. Dinyatakan dalam tanda petik.
end_col parameter pilihan, rentetan. Menentukan penghujung julat lajur. Hantar huruf lajur sehingga nilai jadual harus dibaca secara inklusif. Dinyatakan dalam tanda petik.

Jika hanya permulaan julat baris atau lajur dinyatakan, semua data dari titik itu seterusnya akan diambil tanpa had atas pada julat. Begitu juga, anda boleh meninggalkan permulaan dan hanya menyatakan penghujung julat.

Contoh (Kalkulator)

Jika anda perlu mendapatkan rekod daripada jadual, buka bahagian "Kalkulator" dalam tetapan blok dan masukkan fungsi dengan parameter yang diperlukan.

Untuk menghantar parameter sebagai pembolehubah projek, awali nama pembolehubah yang mengandungi fungsi dengan project.

Ini adalah contoh jadual.

Bot akan bertindak balas seperti berikut.