Pemanggilan Fungsi dalam OpenAI API: Apa Sebenarnya yang Dilakukannya dan Cara Menggunakannya dengan Betul

CometAPI
Zoom JohnApr 20, 2026
Pemanggilan Fungsi dalam OpenAI API: Apa Sebenarnya yang Dilakukannya dan Cara Menggunakannya dengan Betul

Anda menghantar mesej pengguna ke GPT API, dan bukannya jawapan dalam bahasa semula jadi, model memulangkan objek JSON berstruktur yang memberitahu anda dengan tepat fungsi mana yang perlu dipanggil dan dengan argumen apa. Itulah panggilan fungsi — dan ia mengubah jenis aplikasi yang boleh anda bina dengan LLM.

Panggilan Fungsi

Kebanyakan pembangun mendengar "panggilan fungsi" dan menganggap model melaksanakan kod bagi pihak mereka. Tidak.

Apabila menggunakan panggilan fungsi, LLM itu sendiri tidak melaksanakan fungsi tersebut. Sebaliknya, ia mengenal pasti fungsi yang sesuai, mengumpulkan semua parameter yang diperlukan, dan memberikan maklumat itu dalam format JSON berstruktur.

Aplikasi anda masih bertanggungjawab untuk menjalankan logik sebenar. Model hanya memberitahu anda apa yang perlu dijalankan dan dengan input yang mana.

Perbezaan itu lebih penting daripada yang kedengaran, dan ia membentuk segala-galanya daripada cara anda mereka bentuk integrasi hingga cara anda memikirkan keselamatan.

Apa Sebenarnya Panggilan Fungsi — dan Kesilapan Lazim Orang Ramai

Panggilan fungsi (juga dikenali sebagai panggilan alat) menyediakan cara yang berkuasa dan fleksibel untuk model OpenAI berantara dengan sistem luaran dan mengakses data di luar data latihan mereka.

Penamaan adalah punca kekeliruan pertama. Orang fikir model sedang melaksanakan sesuatu. Ia tidak.

Terdapat banyak nama dan penjelasan untuk panggilan fungsi, namun semuanya merumus kepada satu kenyataan: "panggilan fungsi ialah sejenis keupayaan output berstruktur bagi model bahasa besar." LLM tidak memanggil sebarang fungsi sendiri; ia mencadangkan fungsi mana yang anda patut panggil daripada fungsi yang telah ditakrifkan terlebih dahulu yang anda sediakan kepada LLM dalam prompt.

Kekeliruan kedua ialah sekitar permukaan API lama.

Parameter functions dan function_call telah dinyahgunaan dengan keluaran versi API 2023-12-01-preview. Pengganti untuk functions ialah parameter tools.

Jika anda mengikuti tutorial yang menggunakan parameter functions lama, anda sudah pun bekerja dengan sintaks yang dinyahgunaan. Gunakan tools dan tool_choice sebagai ganti.

Fungsi ialah sejenis alat khusus, ditakrifkan oleh skema JSON. Takrif fungsi membolehkan model menghantar data kepada aplikasi anda, di mana kod anda boleh mengakses data atau mengambil tindakan yang dicadangkan oleh model.

Skema itulah yang memberikan kelebihan kebolehpercayaan kepada panggilan fungsi berbanding prompt biasa — anda tidak berharap model memformat output dengan betul, anda menguatkuasakan struktur pada peringkat API.

Cara Panggilan Fungsi Berfungsi dalam OpenAI API — Langkah demi Langkah

Panggilan alat ialah perbualan berbilang langkah antara aplikasi anda dan model melalui OpenAI API. Aliran panggilan alat mempunyai lima langkah peringkat tinggi: buat permintaan kepada model dengan alat yang boleh dipanggil...

Beginilah rupa setiap langkah tersebut dalam amalan.

Langkah 1: Takrifkan skema fungsi anda. Anda menghuraikan setiap fungsi yang tersedia sebagai objek JSON di dalam parameter tools. Skema termasuk nama fungsi, penerangan dalam bahasa semula jadi yang digunakan oleh model untuk memutuskan bila perlu memanggilnya, dan blok parameters yang mengikuti konvensyen Skema JSON.

Lebih terperinci description anda — dari segi situasi di mana ia boleh dan patut memanggil fungsi — lebih baik. Namun, perhatikan bahawa penerangan fungsi adalah sebahagian daripada prompt dan oleh itu menggunakan token juga.

Langkah 2: Hantar permintaan. Anda memanggil Chat Completions API dengan mesej pengguna dan senarai tools anda. Model melihat kedua-duanya.

Langkah 3: Model memutuskan sama ada untuk memanggil fungsi.

Panggilan fungsi merujuk kepada sejenis respons khas yang boleh anda peroleh daripada model jika ia meneliti prompt dan menentukan bahawa, untuk mengikut arahan, ia perlu memanggil salah satu alat yang tersedia. Jika model menerima prompt seperti "apakah cuaca di Paris?" ia boleh membalas dengan panggilan alat untuk alat get_weather, dengan Paris sebagai argumen lokasi.

Langkah 4: Kod anda melaksanakan fungsi. Anda menghuraikan respons model, mengekstrak nama fungsi dan argumen, dan menjalankan kod sebenar dalam runtime anda. API memulangkan JSON berstruktur — anda memutuskan apa yang perlu dilakukan dengannya.

Langkah 5: Hantar hasil kembali.

Anda kemudian menghantar semua takrif alat, prompt asal, panggilan alat model, dan output panggilan alat kembali kepada model untuk akhirnya menerima respons teks

— sesuatu seperti "Cuaca di Paris hari ini ialah 25°C."

Carta Alir Panggilan Fungsi

Satu butiran yang kebanyakan tutorial abaikan:

apabila anda menetapkan strict: true dalam takrif fungsi anda, Structured Outputs menjamin bahawa argumen yang dijana oleh model untuk panggilan fungsi sepadan sepenuhnya dengan Skema JSON yang anda sediakan.

Menetapkan strict kepada true akan memastikan panggilan fungsi mematuhi skema fungsi dengan boleh dipercayai, bukannya usaha terbaik. OpenAI mengesyorkan sentiasa mendayakan mod ketat.

Sentiasa. Tiada sebab yang baik untuk tidak melakukannya.

Terdapat juga panggilan fungsi selari yang perlu diketahui.

Bergantung pada pertanyaan pengguna, model akan melaksanakan panggilan fungsi selari jika menggunakan model terkini yang dikeluarkan pada atau selepas 6 November 2023.

Ini bermakna satu permintaan seperti "apakah cuaca di London dan Tokyo?" boleh mencetuskan dua panggilan alat serentak dan bukannya merantaikannya secara berjujukan.

Kes Penggunaan Dunia Nyata bagi Panggilan Fungsi

Contoh cuaca ada di mana-mana kerana ia bersih. Kes penggunaan produksi sebenar lebih berserabut dan lebih menarik.

Saluran sokongan pelanggan dengan data langsung

Panggilan fungsi berguna untuk sejumlah besar kes penggunaan — contohnya, pembantu AI yang perlu mendapatkan data pelanggan terkini daripada sistem dalaman apabila pengguna bertanya "apakah pesanan terkini saya?" sebelum ia boleh menjana respons.

Model mengenal pasti niat, mengekstrak ID pelanggan daripada konteks, dan memanggil API dalaman CRM anda. Tiada regex rapuh. Tiada templat prompt yang mudah rosak hanya kerana koma yang hilang.

Pengekstrakan data berstruktur pada skala

Saluran pengekstrakan data yang mengambil teks mentah, menukarkannya kepada data berstruktur dan menyimpannya dalam pangkalan data adalah satu lagi kes yang kukuh. Anda mendapat skema yang konsisten merentas ribuan dokumen tanpa penyetelan logik penghuraian secara manual bagi setiap jenis dokumen.

Terjemahan bahasa semula jadi kepada API

Penyelesaian dikuasakan LLM untuk mengekstrak dan menanda data, aplikasi yang boleh membantu menukar bahasa semula jadi kepada panggilan API atau pertanyaan pangkalan data yang sah, dan enjin capaian pengetahuan perbualan yang berinteraksi dengan pangkalan pengetahuan — semuanya mendapat manfaat daripada jaminan format output panggilan fungsi. Apabila anda memerlukan output untuk memacu sistem hiliran, anda tidak boleh bertolak ansur dengan kebolehubahan.

Aliran kerja agenik dengan pelbagai alat

Bagi pembangun, panggilan fungsi membolehkan akses data masa nyata untuk mengatasi tarikh potong latihan dengan mendapatkan harga saham langsung, cuaca, atau entri pangkalan data terkini. Ia juga membolehkan pelaksanaan tindakan — mengubah LLM daripada pemerhati pasif kepada peserta aktif yang mengubah keadaan, seperti menghantar e-mel, mengemas kini CRM, atau melakukan deployment kod.

Perbezaan utama daripada chatbot biasa: model bukan sekadar menjana teks, ia mengorkestrasi operasi sebenar merentas sistem anda.

Amalan Terbaik Panggilan Fungsi — Kesilapan Biasa Pembangun

Inilah bahagian yang paling banyak tutorial langkau sepenuhnya, sebab itulah pasukan akhirnya menyahpepijat kegagalan produksi pelik pada pukul 2 pagi.

Menulis penerangan yang terlalu kabur. Model menggunakan penerangan fungsi anda untuk memutuskan bila perlu memanggilnya. Jika penerangan anda generik — seperti "memproses permintaan pengguna" — model tiada isyarat yang boleh dipercayai bila harus mencetuskannya. Jelaskan keadaan pencetus dan bentuk input yang dijangka. Anggap penerangan sebagai kontrak, bukan label.

Mendedahkan terlalu banyak fungsi sekaligus

Penerangan fungsi boleh memakan sejumlah besar token dalam prompt input.

Memuatkan takrif bagi 50+ alat ke dalam prompt sistem mewujudkan dua masalah: kos dan kependaman, kerana takrif alat memakan token input; dan kemerosotan ketepatan, kerana apabila bilangan pilihan alat meningkat, keupayaan model untuk memilih yang betul menurun.

Mulakan dengan set fungsi yang paling kecil yang benar-benar diperlukan oleh kes penggunaan anda.

Menganggap model tidak akan menghalusinasi parameter. Ia akan.

Model mungkin menghalusinasi parameter

— terutamanya untuk medan pilihan yang tidak dibatasi dengan jelas oleh enum. Inilah sebab tepat mengapa strict: true penting: ia menghapuskan keupayaan model untuk mereka-reka medan di luar skema anda.

Tidak menangani gelung berbilang pusingan. Pembangun sering membina laluan ideal — pengguna bertanya, model memanggil fungsi, selesai.

Model mungkin menjana panggilan fungsi yang tidak sepadan dengan skema yang anda takrifkan atau cuba memanggil fungsi yang anda tidak sertakan. Jika model menjana panggilan fungsi yang tidak dijangka, cuba sertakan ayat dalam mesej sistem yang menyatakan "Hanya gunakan fungsi yang telah disediakan kepada anda."

Bersedialah untuk kes pinggir.

Melangkau langkah pengesahan sebelum operasi tulis.

Berhati-hati dengan kesan dunia nyata panggilan fungsi yang anda rancang untuk laksanakan, terutamanya yang mencetuskan tindakan seperti melaksanakan kod, mengemas kini pangkalan data atau menghantar pemberitahuan. Untuk fungsi yang mengambil tindakan, melaksanakan langkah di mana pengguna mengesahkan tindakan sebelum pelaksanaan amat disyorkan.

Jika panggilan fungsi boleh memadam data, menghantar wang, atau mengubah keadaan luaran, manusia perlu meluluskannya terlebih dahulu.

Pertimbangan Keselamatan dan Kebolehpercayaan

Panggilan fungsi meluaskan apa yang LLM boleh lakukan. Ia juga meluaskan apa yang penyerang boleh paksa ia lakukan.

Ancaman utama di sini ialah suntikan prompt.

Matlamat akhir suntikan prompt berbeza-beza tetapi boleh termasuk mengeksfiltrasi data peribadi melalui panggilan alat hiliran, mengambil tindakan yang tidak sejajar, atau sebaliknya menukar tingkah laku model dengan cara yang tidak diingini.

Apabila panggilan fungsi anda boleh menghantar e-mel, membuat pertanyaan pangkalan data, atau mencetuskan webhook, serangan suntikan bukan sekadar chatbot keluar dari skrip — ia adalah potensi pelanggaran.

Apabila sistem AI bergerak melangkaui chat dan mula memanggil alat serta mengambil tindakan, suntikan prompt menjadi masalah yang jauh lebih serius. Arahan berniat jahat yang tersembunyi dalam laman web, dokumen, atau alat luaran boleh cuba menimpa tingkah laku sistem, mendedahkan maklumat sensitif, atau mencetuskan tindakan yang model tidak sepatutnya ambil.

Strategi mitigasi mempunyai beberapa lapisan konkrit.

Reka bentuk aliran kerja supaya data tidak dipercayai tidak pernah memacu tingkah laku agen secara langsung. Ekstrak hanya medan berstruktur tertentu — seperti enum atau JSON yang disahkan — daripada input luaran untuk mengehadkan risiko suntikan daripada mengalir antara nod.

Di atas itu,

sentiasa sahkan panggilan fungsi yang dijana oleh model. Ini termasuk menyemak parameter, fungsi yang dipanggil, dan memastikan panggilan itu sejajar dengan tindakan yang dimaksudkan.

Satu kebenaran yang tidak selesa:

"Suntikan prompt, sama seperti penipuan dan kejuruteraan sosial di web, tidak mungkin pernah benar-benar ‘diselesaikan.’"

Itu ialah penilaian OpenAI sendiri. Implikasi praktikalnya ialah anda tidak seharusnya mereka bentuk sistem panggilan fungsi agenik dengan andaian bahawa model akan sentiasa berkelakuan seperti yang diingini. Pertahanan berlapis — pengesahan, keizinan berskala, manusia dalam gelung untuk operasi merosakkan — ialah pendirian yang paling munasabah.

Panggilan Fungsi vs. Kejuruteraan Prompt — Bila Perlu Guna Yang Mana

Perbandingan ini sering muncul. Jawapan ringkas: mereka menyelesaikan masalah yang berbeza, dan mengelirukan kedua-duanya membawa kepada prompt yang terlalu direka bentuk apabila panggilan fungsi sudah memadai, atau skema fungsi yang rapuh apabila prompt sistem yang tersusun rapi akan lebih ringkas.

Panggilan Fungsi vs Kejuruteraan Prompt

Kejuruteraan prompt melibatkan mereka bentuk input teks untuk membimbing penaakulan dalaman LLM — contohnya, memintanya "berfikir langkah demi langkah."

Ia membentuk cara model menaakul. Panggilan fungsi, sebaliknya, membentuk apa yang model hasilkan sebagai output dan menghala terus ke dalam sistem anda.

Panggilan alat ialah keupayaan yang membolehkan LLM berinteraksi dengan sistem luaran. Walaupun anda menggunakan kejuruteraan prompt untuk membantu model memutuskan alat mana yang hendak digunakan, panggilan alat ialah mekanisme yang sebenarnya melaksanakan tindakan. Anda mungkin memerlukan kedua-duanya, tetapi mereka berkhidmat untuk tujuan yang berbeza.

Kelebihan teknikal utama panggilan fungsi berbanding output berstruktur berasaskan prompt:

panggilan alat ialah konsep yang terbina terus ke dalam model. Tiada keperluan membazirkan token dan tenaga untuk cuba menerangkan kepada model bahawa ia harus memulangkan format tertentu.

Apabila anda mereka bentuk prompt yang menyatakan "pulang jawapan anda sebagai JSON dengan medan X, Y, dan Z," anda membelanjakan token untuk arahan yang mungkin diikuti oleh model secara tidak konsisten. Dengan panggilan fungsi, penguatkuasaan skema berlaku pada peringkat API.

API panggilan fungsi, kini disokong secara natif dalam banyak platform LLM, menyediakan antara muka berpacukan skema formal yang membolehkan pengesahan data yang ketat dan integrasi dengan aliran kerja berprogram.

Itulah sebab dunia nyata untuk memilihnya berbanding kejuruteraan prompt bagi sebarang data yang perlu mengalir ke sistem hiliran: kebolehpercayaan bukan pilihan sebaik anda berada dalam produksi.

DimensiKejuruteraan PromptPanggilan Fungsi
Tujuan utamaMembentuk penaakulan dan nada modelMenghasilkan output berstruktur untuk integrasi sistem
Format outputTeks bebas (atau JSON berbentuk teks)Skema JSON dikuatkuasakan
Kebolehpercayaan skemaUsaha terbaik; mudah hanyutDijamin dengan strict: true
Kos tokenLebih rendah untuk output ringkasLebih tinggi (takrif fungsi menambah token)
Bila hendak digunakanTugasan penaakulan, penjanaan teks, kawalan gayaPengekstrakan data berstruktur, orkestrasi API, tindakan agenik
Pendedahan suntikan promptLebih rendah (tiada pelaksanaan alat luaran)Lebih tinggi (panggilan fungsi boleh mencetuskan tindakan dunia nyata)

Heuristik praktikal: jika output perlu memacu sistem hiliran — penulisan pangkalan data, panggilan API, cabang keputusan dalam kod anda — gunakan panggilan fungsi. Jika output untuk dibaca manusia, kejuruteraan prompt biasanya mencukupi dan lebih murah.

Perkara Utama untuk Diingati

TopikPerlu Diingati
Apa ituModel memulangkan JSON berstruktur yang menerangkan fungsi mana yang hendak dipanggil — ia tidak melaksanakan fungsi
Permukaan API semasaGunakan tools dan tool_choice; parameter functions dan function_call adalah dinyahgunaan
Mod ketatSentiasa tetapkan strict: true dalam takrif fungsi untuk menguatkuasakan pematuhan skema
Panggilan selariDisokong pada model yang dikeluarkan selepas November 2023; satu permintaan boleh mencetuskan berbilang panggilan alat serentak
Kos tokenSkema fungsi memakan token input; minimumkan bilangan fungsi yang didedahkan
KeselamatanSahkan semua output panggilan fungsi; jangan sekali-kali benarkan kandungan luaran yang tidak dipercayai memacu panggilan alat secara langsung
vs. Kejuruteraan PromptPanggilan fungsi menguatkuasakan struktur output pada peringkat API; kejuruteraan prompt membentuk penaakulan dalaman
Langkah pengesahanMana-mana fungsi dengan kesan dunia nyata (tulis, hantar, padam) harus memerlukan pengesahan pengguna sebelum pelaksanaan

Jika anda mahu bereksperimen dengan panggilan fungsi merentas model berbeza — GPT-5.4, claude opus 4.7, gemini 3.1 pro — tanpa menyelenggara kelayakan API berasingan untuk setiap satu, CometAPI memberi anda akses kepada kesemuanya melalui satu endpoint dan kunci tunggal, yang menjadikan pengujian merentas model jauh lebih kurang geseran.

CometAPI menyelesaikan beban infrastruktur:

Sintaks panggilan fungsi bersepadu merentas 15+ model

Satu kunci API — tiada akaun berasingan untuk OpenAI/Anthropic/Google

Terjemahan skema automatik — tulis sekali, uji di mana-mana

Penjejakan kos terbina dalam — banding penggunaan token setiap model secara masa nyata

Mulakan ujian dengan kredit percumaDapatkan Akses

Bersedia untuk mengurangkan kos pembangunan AI sebanyak 20%?

Mulakan secara percuma dalam beberapa minit. Kredit percubaan percuma disertakan. Tiada kad kredit diperlukan.

Baca Lagi