Unit 9 / 11

Ejen AI dan Penggunaan Alat

Keuntungan:

  • Mentakrifkan ejen sebagai 'model + alatan + gelung' dan memutuskan bila ia diperlukan
  • Menulis definisi alat dengan nama, penerangan dan skema_input
  • Memantau aliran dan pengendalian ralat gelung tool_use dan tool_result

Sehingga kini, model sentiasa melakukan satu kerja: menerima input teks, menghasilkan respons teks. Tetapi kerja sebenar selalunya memerlukan lebih daripada teks; melakukan pengiraan, menanyakan pangkalan data, memanggil API, mengetahui kadar pertukaran semasa. Model itu tidak boleh melakukan perkara ini sendiri — tetapi dia boleh memutuskan bila perkara itu perlu dilakukan dan meminta seseorang melakukannya. Inilah yang diberikan oleh penggunaan alat kepada model, dan ini adalah asas ejen AI. Dalam unit ini, kita akan mempelajari apa itu ejen, cara alat ditakrifkan dan cara gelung tool_use berfungsi.

Apa itu Agen? Model + Alat + Gelung

Ejen AI terdiri daripada tiga bahagian: model (otak yang membuat keputusan), alat (fungsi yang boleh dipanggil model: cuaca, pertanyaan pangkalan data, menghantar e-mel), dan gelung (gelung; model memanggil alat, mendapat keputusan, memutuskan semula perkara yang perlu dilakukan, dan sebagainya).

Perbezaan kritikal: Panggilan corak tunggal bukan ejen. Ejen ialah proses di mana model meneruskan langkah demi langkah, pada setiap langkah memilih langkah seterusnya berdasarkan hasil alat. "Berfikir seperti manusia, gunakan tangan anda, lihat hasilnya, fikir semula."

Fakta penting: Model itu sendiri tidak mengendalikan kenderaan. Model hanya mengatakan "Saya mahu memanggil alat ini dengan input ini". Aplikasi anda (dipanggil abah-abah) menjalankan alat dan mengembalikan hasilnya kepada model. Ini penting untuk keselamatan: model tidak menyentuh sistem anda secara langsung; Setiap tindakan adalah di bawah kawalan anda.

Petua: Jangan cuba selesaikan setiap masalah dengan ejen. ejen; meningkatkan risiko kelewatan, kos dan kesilapan. Tanya dahulu: "Adakah ini akan diselesaikan dengan satu panggilan atau aliran kerja tetap?" Jika jawapannya ya, tidak perlu ada ejen. Ejen adalah untuk tugas terbuka di mana langkah-langkahnya tidak dapat diketahui terlebih dahulu.

Definisi Alat: nama, penerangan, skema_input

Untuk memperkenalkan alat ke dalam model, anda memberikan tiga perkara:

  • nama: Identiti kenderaan, cth. dapatkan_cuaca.
  • perihalan: Perkara yang dilakukan oleh alat dan masa untuk memanggilnya. Ini adalah kawasan paling penting yang membolehkan model memilih alat yang betul pada masa yang sesuai. Tulis bukan sahaja "apa yang dilakukan" tetapi juga "panggil bila."
  • input_schema (input schema): Skema JSON yang mentakrifkan parameter yang diharapkan oleh alat, dalam jenis yang mana.

# Takrifan kenderaan (konseptual — skema JSON){ "name": "get_order_status", "description": "Mengambil semula status penghantaran semasa pesanan. Panggil apabila pengguna bertanya di mana nombor pesanan itu atau bila ia akan tiba.", "input_schema": { "type": "object", "propertider": { "order_no": "", "Order_no": {"order_no": {" cth. SP-1024"} }, "diperlukan": ["order_no"] }}

Peraturan untuk perihalan alat yang baik: nama yang jelas dan ringkas, perihalan dengan "bila hendak digunakan", perihalan untuk setiap parameter, meletakkan parameter yang benar-benar wajib. Pastikan bilangan kenderaan fokus; Berpuluh-puluh model kenderaan serupa mengejutkan.

kawasan

Apa yang ia lakukan?

contoh yang baik

contoh buruk

nama

ID kenderaan

order_status_getir

bawak

penerangan

Apa yang dilakukan + masa untuk memanggil

"Mengembalikan status kargo; hubungi apabila pengguna bertanya di mana pesanan itu"

"mengambil data"

input_schema

Jenis dan keperluan parameter

{order_no: string, annotated}

tiada gambar rajah / tiada penerangan

tool_use → tool_result Gelung

Kitaran berfungsi seperti ini, langkah demi langkah:

  1. Anda menghantar soalan pengguna + penerangan alat kepada model.
  2. Model sama ada bertindak balas secara langsung atau menjana blok penggunaan_alat: "call order_durumu_getir with order_no=SP-1024."
  3. Aplikasi anda sebenarnya menjalankan alat (mempertanyakan pangkalan data).
  4. Anda menghantar semula hasilnya kepada model sebagai tool_result.
  5. Dengan keputusan ini, model sama ada menghasilkan jawapan akhir atau memanggil alat lain. Kitaran berterusan sehingga model berkata "Saya sudah selesai."

# Mesej gelung ejen (konseptual) = [soalan_pengguna]sementara Benar: respons = model.uret(mesej, alatan=definisi_alat) jika respons.tur == "penggunaan_alat": hasil = harness.run(nama_alat_tindak balas, respons.entri) # APPLICATION menjalankan mesej += [respons, tool_result(hasil_hasil) gelung berakhir

SDK moden menawarkan pelari alat yang menjalankan gelung ini untuk anda; anda hanya menulis fungsi alat. Tetapi itulah yang berlaku di sebalik tabir.

Pengurusan Ralat

Alat mungkin gagal: pesanan tidak ditemui, masa API tamat, input tidak sah. Jika anda tidak dapat menjalankan alat, kembalikan ralat kepada model sebagai deskriptif tool_result ("ralat: Nombor pesanan SP-9999 tidak dijumpai") dan bendera ralat. Model boleh melihat perkara ini dan menerangkannya dengan lembut kepada pengguna, atau mencuba cara lain. Jangan telan ralat dan kembalikan hasil kosong; Model mesti tahu apa yang salah.

Penerangan Kenderaan Lemah/Kuat

Lemah (kata nama tak tentu, tiada "bila"):

nama: "data", perihalan: "mengambil data"# Model tidak tahu bila dan cara membuat panggilan; Ia sama ada tidak memanggil sama sekali atau membuat panggilan yang salah.

Kuat (nama bersih + bila + perihalan parameter):

name: "musteri_bakiyesi_getir"description: "Mengembalikan baki akaun semasa pelanggan. Panggil apabila pengguna meminta debit, kredit atau baki. TIDAK membuat pembayaran."input_schema: {custeri_id: string ("ID Pelanggan")}# Model memanggil pada masa yang betul, dengan parameter yang betul, mengetahui hadnya.

Tiga Kes Mini

Kes 1 — Ejen yang tidak diperlukan. Satu pasukan membina perniagaan "teks ringkasan" dengan ejen berbilang alatan; Setiap rekap mengambil 4 panggilan model dan 9 saat. Kerja itu sebenarnya adalah kerja satu panggilan. Apabila kami mengalih keluar ejen dan mengurangkannya kepada satu panggilan, masa berkurangan kepada 1.5 saat dan kos menurun kepada satu suku. Pengajaran: gunakan ejen apabila benar-benar perlu.

Kes 2 — Penjelasan lemah, panggilan salah. Dalam ejen sokongan, alat kabur yang dipanggil fetch dipanggil secara rawak oleh model dalam kedua-dua soalan baki dan soalan penghantaran. Apabila kenderaan dibahagikan kepada balance_getir dan cargo_durumu_getir dan penjelasan "panggil bila" telah ditambahkan, pemilihan kenderaan yang salah berkurangan daripada 18 kepada 1 dalam 50 contoh.

Kes 3 — Ralat ditelan. Seorang ejen memulangkan keputusan kosong apabila pesanan itu tidak ditemui; Model itu mentafsirkan ini sebagai "pesanan telah dihantar" dan mengelirukan pelanggan. Apabila mesej ralat ditulis secara eksplisit pada tool_result ("pesanan tidak ditemui"), model dengan betul mengatakan "Saya tidak dapat mencari nombor ini, bolehkah anda menyemaknya?" dia mula berkata.

Kesilapan biasa

  • Mengubah segala-galanya kepada ejen: Walaupun satu panggilan sudah mencukupi, ejen menambah kos dan kelewatan.
  • Penerangan kenderaan yang tidak jelas: Model tidak tahu bila hendak menghubungi; salah pilih.
  • Berfikir bahawa model mengendalikan kenderaan: Abah-abah menjalankan kenderaan; model hanya mahu.
  • Menelan ralat: Model mesti tahu apa yang salah; Berikan ralat sebagai tool_result terbuka.
  • Terlalu banyak kenderaan serupa: Model menjadi keliru; Pastikan set alat fokus dan minimum.
Perhatian: Hanya kerana model mengatakan "panggil kenderaan itu" tidak bermakna tindakan itu harus diambil. Pada alat yang merosakkan (padam, daftar keluar, e-mel) aplikasi anda tidak seharusnya melaksanakan panggilan secara membabi buta — ini adalah teras topik keselamatan dalam unit seterusnya.

Secara ringkasnya

  • Ejen = model (keputusan) + alat (fungsi) + gelung (alat panggilan, dapatkan hasil, tentukan semula).
  • Panggilan corak tunggal bukan ejen; ejen adalah proses langkah demi langkah.
  • Model tidak menjalankan kenderaan; Aplikasi anda berjalan (memanfaatkan) dan mengembalikan hasilnya sebagai tool_result.
  • Alat ini dikenal pasti dengan nama, perihalan (khususnya "panggil apabila") dan input_schema.
  • Gelung diteruskan sebagai tool_use → harness berjalan → tool_result → model diteruskan sehingga model menyatakan "selesai"; ralat dilaporkan secara eksplisit kepada model.

Tugasan permohonan

Reka 3 alat dari perniagaan anda sendiri yang boleh diberikan kepada ejen. (1) Tulis nama, perihalan dengan "panggil bila", dan input_schema untuk setiap; Biarkan sekurang-kurangnya satu alat bacaan tidak merosakkan dan satu pengiraan. (2) Pilih soalan pengguna yang realistik dan tulis secara manual langkah demi langkah (dalam gelung) alat mana yang akan dipanggil oleh model dengan input mana dan apa yang akan dilakukan selepas tool_result tiba. (3) Sediakan senario di mana salah satu alat gagal dan tunjukkan bagaimana mesej ralat akan kembali kepada model.

senarai semak

  • [ ] Saya boleh mentakrifkan ejen sebagai "model + alatan + gelung" dan memutuskan bila ia diperlukan.
  • [ ] Saya tahu bahawa abah menjalankan kenderaan, model itu hanya mahukannya.
  • Saya boleh menulis perihalan kenderaan yang kukuh dengan nama [ ], perihalan ("panggil bila") dan input_schema.
  • Saya boleh mengikuti [ ] tool_use → tool_result kitaran langkah demi langkah.
  • [ ] Saya melaporkan ralat alat kepada model sebagai open tool_result.