Function calling AI

Oleh Ai Flowi · Diterbitkan

Function calling AI membolehkan model bahasa meminta fungsi atau alat bernama dengan argumen berstruktur. Aplikasi mengesahkan permintaan itu, melaksanakan operasi yang dibenarkan dan mengembalikan hasilnya. Permintaan model ialah cadangan; ia bukan bukti bahawa fungsi telah dijalankan atau hasilnya betul.

Contohnya, model mungkin meminta carian dasar baca sahaja menggunakan pengecam dokumen. Aplikasi hos menyemak pengecam dan kebenaran akses sebelum memperoleh apa-apa. Pembahagian ini memisahkan tafsiran bahasa daripada kod yang boleh mengakses sistem.

Peringkat panggilan alat

  1. Terangkan operasi yang tersedia. Berikan alat nama, tujuan yang khusus dan kontrak argumen. Jelaskan perkara yang tidak boleh dilakukannya.
  2. Pilih alat atau jangan buat panggilan. Model menentukan sama ada operasi yang tersedia sesuai dengan permintaan pengguna. Tugas yang tidak dikenali perlu mempunyai laluan tanpa panggilan.
  3. Sahkan permintaan. Aplikasi menyemak nama alat, bentuk argumen, nilai yang dibenarkan dan kebenaran pemanggil.
  4. Laksanakan dalam sempadan. Kod yang dipercayai memanggil perkhidmatan yang dibenarkan dan merekodkan sama ada ia selesai, gagal atau mengembalikan hasil yang tidak pasti.
  5. Kembalikan pemerhatian. Hasil menjadi bukti bagi keputusan atau jawapan seterusnya. Ia perlu mengekalkan ralat yang bermakna, bukannya mereka-reka data.

Penyedia mungkin menggabungkan peringkat ini dengan cara yang berbeza. Sempadan penting tetap sama: argumen yang dihasilkan model ialah input yang tidak dipercayai sehingga disemak. Objek yang sah boleh menamakan sumber yang tidak dibenarkan untuk dibaca oleh pemanggil, maka pengesahan sintaks dan pemberian kebenaran mesti kekal berasingan.

Kontrak alat baca sahaja yang ringkas

Pertimbangkan operasi konsep yang dinamakan lookup_policy_excerpt. Tujuannya ialah mengembalikan petikan daripada himpunan dasar yang diluluskan. Satu-satunya argumen, document_id, mengenal pasti satu sumber dalam himpunan tersebut. Operasi ini tidak boleh menyunting dokumen, melayari destinasi sewenang-wenangnya atau membuat keputusan dasar.

{
  "name": "lookup_policy_excerpt",
  "purpose": "Read one authorised policy excerpt",
  "arguments": {
    "document_id": "identifier from the approved source list"
  },
  "on_unknown_document": "return a not-found result without guessing"
}

Ini ialah kontrak penerangan, bukan skema fungsi khusus penyedia, senarai input komponen natif atau import aliran kerja. Dalam pelaksanaan sebenar, tetapkan jenis argumen yang tepat dan tolak medan yang tidak dijangka. Pilih pengecam sumber dalam kod aplikasi yang dipercayai, bukannya membenarkan model mentakrifkan semula senarai yang dibenarkan.

Jika permintaan sebaliknya meminta pindaan dasar, alat ini tidak sesuai. Ejen perlu menjelaskan bahawa penyuntingan di luar keupayaan alatnya. Mengungkapkan semula permintaan sebagai carian tidak boleh menjadi penulisan tersembunyi atau membayangkan pindaan telah dilaksanakan.

Perkara yang perlu disemak dalam pengesahan argumen

Semakan berasingan sebelum pelaksanaan
SemakanContoh kegagalanReka bentuk respons
Operasi yang dikenaliNama yang diminta tiada dalam senarai alat yang dibenarkan.Tolak panggilan; jangan bina operasi sewenang-wenangnya.
Struktur argumenPengecam ialah objek, bukannya teks.Nyatakan sebab pengesahan gagal tanpa menghubungi sumber.
Sumber yang dibenarkanPengecam tergolong dalam himpunan akaun lain.Tolak akses walaupun objek itu sah dari segi lain.
Kesesuaian tugasCarian tidak dapat menjawab soalan yang ditanya.Laporkan keupayaan yang tiada atau minta penjelasan.
Hasil pelaksanaanPerkhidmatan sumber mengembalikan kegagalan.Bezakan kegagalan daripada hasil berjaya yang kosong.

Penerangan alat membantu pemilihan; kebenaran mesti dikuatkuasakan pada tempat akses berlaku. Jangan bergantung pada prompt yang menyuruh model menggunakan pengecam yang diluluskan sahaja. Teks yang diperoleh juga boleh mengandungi arahan yang ditujukan kepada ejen. Anggap perkataan itu sebagai kandungan sumber, bukan kebenaran untuk memanggil alat lain.

Function calling dalam AI Flowi Workflow

Flow as Tool diterangkan dalam katalog sebagai Bina Tool daripada fungsi yang menjalankan Flow yang dimuatkan. Ia menyenaraikan flow_name, tool_name, tool_description dan return_direct. Outputnya, api_build_tool, mempunyai jenis Tool yang sepadan dengan jenis yang diterima oleh input tools bagi Agent.

contoh konfigurasi, bukan ujian yang direkodkan

Flow as Tool
flow_name: select your existing read-only lookup flow
tool_name: lookup_policy_excerpt
tool_description: Read an approved policy excerpt; cannot edit policies.
return_direct: false

Agent
tools: connect Flow as Tool.api_build_tool
system_prompt: Use lookup only for supported read-only questions.
               Explain when no available tool fits the request.

Aliran yang dipilih mesti sudah wujud dan mempunyai kontrak carian yang telah disahkan. Katalog statik tidak mengeksport skema argumen dinamiknya atau menetapkan kesan return_direct dalam konfigurasi ini. Periksa butiran itu, bukannya menampal kontrak penerangan ke dalam medan yang tidak didokumentasikan.

Rujukan Agent menerangkan antara muka model dan respons yang digunakan dengan sambungan Tool ini.

Untuk perlindungan semasa pelaksanaan, lihat kawalan keselamatan ejen.

Konfigurasi panggilan fungsi ini didokumentasikan dalam katalog; belum diuji dalam persekitaran produksi oleh Ai Flowi. Gunakan akaun model dan kunci API anda sendiri serta bayar penyedia itu secara berasingan.

Bagaimana panggilan fungsi berbeza daripada output berstruktur?

Panggilan fungsi meminta sesuatu operasi. Output berstruktur menyusun jawapan model ke dalam medan. Model boleh menghasilkan jawapan yang tersusun dengan baik tanpa meminta sebarang alat, dan panggilan alat boleh mengembalikan data yang masih perlu ditafsirkan.

Baca output berstruktur LLM untuk pengesahan medan jawapan, bukannya permintaan operasi.

Argumen yang tiada dan argumen yang tidak dijangka

Bagi carian yang dicadangkan, pengecam dokumen yang tiada perlu mencetuskan permintaan penjelasan tanpa pelaksanaan. Pengecam di luar senarai yang diluluskan perlu menyebabkan penolakan. Medan tambahan seperti replacement_text ialah pelanggaran kontrak walaupun document_id sah: mengabaikannya secara senyap boleh menyembunyikan hakikat bahawa model memilih alat bacaan untuk permintaan penyuntingan. Kekalkan operasi yang khusus, bukannya menambah medan pilihan bagi tugas yang tidak berkaitan.

Periksa argumen selepas aplikasi hos menyahkodnya. Rentetan yang mengandungi JSON berbeza daripada objek argumen, dan senarai pengecam berbeza daripada pengecam tunggal yang diterima oleh kontrak ini. Sahkan perwakilan itu sekali pada sempadan pelaksanaan. Jika penyesuai menulis semula permintaan model, simpan argumen yang diterima dalam jejak supaya penyemak dapat mengetahui perkara yang benar-benar sampai kepada carian.

Periksa pemerhatian dan laluan kegagalan

Simpan rekod yang boleh diperiksa bagi operasi yang diminta, argumen yang diterima dan hasil yang dikembalikan, dengan nilai sensitif dibuang. Pernyataan model “Saya telah menyemak dasar” tidak mencukupi apabila tiada hasil carian. Hasil tidak ditemui perlu kekal tidak ditemui; ia tidak boleh digantikan dengan petikan dasar yang kelihatan munasabah.

Sebelum membenarkan perubahan luaran, uji argumen tidak sah, akses yang ditolak, perkhidmatan yang tidak tersedia dan penyelesaian yang tidak pasti. Tiada hasil semasa pelaksanaan didakwa bagi carian yang dicadangkan di atas. Ejen ReAct menerangkan cara pemerhatian memaklumkan gelung yang terhad, manakala kemahiran ejen AI membezakan arahan yang boleh digunakan semula daripada alat yang boleh dilaksanakan. Hab kes penggunaan memautkan contoh yang telah dibuktikan bersama batasan masing-masing.

Penggunaan aliran kerja

Pelan: Go dari USD8/bulan dengan bil tahunan (USD10 bulanan), Plus dari USD16 (USD20 bulanan), Pro 100 dari USD80 (USD100 bulanan), Pro 200 dari USD160 (USD200 bulanan) dan Pro 500 dari USD400 (USD500 bulanan), dengan 5,000 hingga 250,000 Flowi Tokens sebulan dan pilihan tambah nilai; 1 token bagi setiap pelaksanaan nod; penggunaan API dan model pihak ketiga tidak termasuk.