Ringkasan
Model bahasa besar memiliki pengetahuan umum yang luas, tetapi tidak mengetahui metrik, skema database, atau formula penghitungan spesifik domain Anda. Tanpa konteks ini, model akan menebak, yang menyebabkan SQL salah dan analisis cacat.
Agen ADK RMI mengatasi batasan ini melalui keterampilan. Pertimbangkan pengguna yang bertanya "bagaimana kondisi lalu lintas di Storrow Drive kemarin?". Untuk menjawab, agen harus mengetahui bahwa RMI menyatakan kemacetan sebagai Indeks Waktu Tempuh (TTI), rasio duration_in_seconds live terhadap static_duration_in_seconds lancar dalam tabel historical_travel_time. Agen tanpa keterampilan mungkin membuat kolom
average_speed (laporan RMI hanya mencantumkan kecepatan kategoris, bukan km/j) atau menerapkan
formula yang salah, sehingga menghasilkan jawaban yang meyakinkan, tetapi salah.
Meskipun agen memerlukan pengetahuan domain ini, memasukkan setiap definisi metrik, skema tabel, dan peringatan SQL ke dalam satu perintah sistem tidak efisien.
Batasan perintah sistem besar
Menempatkan semua aturan dan skema domain ke dalam satu perintah sistem menyebabkan beberapa masalah:
- Biaya lebih tinggi dan respons lebih lambat: Mengirimkan perintah yang sangat besar di setiap giliran akan membuang-buang token dan meningkatkan latensi, bahkan untuk pertanyaan yang tidak memerlukan aturan tersebut.
- Pemahaman perintah yang lebih buruk: Saat perintah menjadi lebih panjang dengan kasus ekstrem, model cenderung mengabaikan atau melupakan aturan tertentu.
- Pemeliharaan yang lebih sulit: Menggabungkan semuanya ke dalam satu perintah akan menyulitkan untuk memperbarui atau menguji setiap aturan tanpa merusak aturan lainnya.
Keahlian
Keahlian Agen mengatur pengetahuan domain ke dalam folder modular yang hanya dimuat oleh agen saat diperlukan. Setiap keterampilan adalah direktori yang berisi file SKILL.md dengan petunjuk Markdown dan header YAML.
Daripada memuat semuanya di awal, agen hanya menyimpan deskripsi singkat
description setiap keterampilan dalam perintah dasarnya. Saat pengguna mengajukan pertanyaan yang relevan dengan
keterampilan, agen akan memuat petunjuk lengkap untuk giliran tersebut. Cara ini membuat perintah tetap singkat dan menghemat ruang konteks untuk histori percakapan yang sebenarnya.
Keahlian juga memberikan pemisahan masalah yang jelas: Anda dapat menulis, menguji, dan memperbarui kapabilitas individual secara terpisah tanpa risiko efek samping yang tidak diinginkan di seluruh domain yang tidak terkait. Agen produksi biasanya menggunakan beberapa keahlian yang terfokus, bukan satu perintah besar.
Anatomi keahlian
File SKILL.md memiliki dua bagian: header YAML untuk perutean dan isi Markdown untuk petunjuk.
1. Header YAML
---
name: rmi-traffic-metrics-grounding
description: >
Standard traffic performance metrics computable from RMI BigQuery
tables. Covers congestion severity (TTI), delay, travel time
reliability (LOTTR, BTI, PTI, CoV), congestion frequency, speed
breakdowns, and network-wide congestion rates. Use when the user asks
about traffic conditions, congestion, reliability, delay, or network
health.
---
Model menggunakan description untuk memutuskan apakah akan memuat skill. Karena model hanya melihat deskripsi ini sebelum memutuskan untuk memuat skill, pastikan deskripsi tersebut mencantumkan topik yang dibahas, frasa pengguna umum, dan kapan harus memicunya dengan jelas.
2. Isi Markdown
Isi memberikan panduan khusus domain yang diikuti model setelah dimuat.
Isi materi keterampilan metrik RMI mencakup formula TTI yang tepat (duration_in_seconds / static_duration_in_seconds), template SQL BigQuery yang terverifikasi untuk setiap metrik, dan frasa pemicu yang memetakan maksud pengguna ke metrik yang tepat. Memberikan petunjuk terstruktur dan terverifikasi membuat model tetap memiliki dasar dan mencegahnya menebak detail skema atau formula.
Mendaftarkan skill dengan ADK
Kelompokkan keterampilan ke dalam SkillToolset dan tambahkan ke daftar alat agen:
from google.adk import skills
from google.adk.tools import skill_toolset
rmi_skill_toolset = skill_toolset.SkillToolset(
skills=[
# TRAFFIC_METRICS_SKILL_DIR points to the skill's SKILL.md folder.
skills.load_skill_from_dir(TRAFFIC_METRICS_SKILL_DIR),
],
)
# root_agent = llm_agent.Agent(..., tools=[*bq_tools, rmi_skill_toolset])
Di sini, TRAFFIC_METRICS_SKILL_DIR mengarah ke direktori yang berisi
keterampilan perujukan metrik traffic.
Menggabungkan alat dengan keterampilan
Karena keterampilan adalah petunjuk berbasis teks, hanya mengandalkan model untuk menafsirkan dan menjalankan logika yang kompleks dapat menyebabkan inkonsistensi. Melampirkan alat yang dapat dieksekusi ke skill memberikan determinisme: kode menangani kalkulasi, validasi, dan interaksi API yang ketat, sementara skill menginstruksikan model tentang kapan dan cara menggunakannya.
Alat penggabungan juga menghindari pembengkakan konteks global. Daripada menampilkan setiap alat khusus di awal, alat akan dimuat hanya saat keterampilan domain yang sesuai aktif.
Anda dapat melampirkan alat tertentu langsung ke keahlian di header YAML-nya:
metadata:
adk_additional_tools:
- calculate_custom_metric
Hal ini memastikan model menerima skema alat dan petunjuk penggunaannya secara bersamaan tepat pada waktunya, sehingga set alat dasar tetap ramping.
Contoh: Merujuk kueri kemacetan
- Pengguna bertanya "Seberapa padat lalu lintas di Storrow Drive saat jam sibuk sore?"
- Perintah sistem dasar hanya mengiklankan nama dan deskripsi setiap keahlian, sehingga
agen melihat bahwa
rmi-traffic-metrics-groundingmencakup "kemacetan" dan memanggilload_skilluntuk menarik petunjuk lengkapnya untuk kueri ini. - Setelah skill dimuat, agen menerapkan definisi TTI dan template SQL terverifikasi yang diberikannya, menghitung rasio terhadap
historical_travel_time, bukan menebak formula.
Karena isi keahlian hanya diambil saat kueri memerlukannya, keahlian yang tidak pernah digunakan agen tidak pernah masuk ke dalam konteks, sehingga perintah sistem dasar tetap kecil.
Poin-poin penting
- Dasar dengan panduan domain: Berikan petunjuk, batasan, dan logika bisnis yang eksplisit, bukan mengandalkan asumsi model umum.
- Gunakan keterampilan modular: Pisahkan pengetahuan menjadi keterampilan yang terfokus, bukan satu perintah sistem besar untuk menghemat token, mengurangi latensi, dan meningkatkan akurasi.
- Tulis deskripsi yang jelas: Sertakan frasa pemicu dan kata kunci tertentu dalam deskripsi setiap skill agar agen memuatnya dengan andal.
- Sertakan contoh konkret: Tambahkan contoh terverifikasi dan alur kerja referensi ke isi keterampilan untuk menjaga output tetap konsisten dan akurat.
- Menggabungkan alat untuk determinisme: Lampirkan alat yang dapat dieksekusi ke kemampuan untuk menangani validasi dan eksekusi yang ketat sekaligus menjaga agar set alat dasar tetap ramping.
Langkah berikutnya
- Jelajahi pola keahlian tingkat lanjut: Baca Panduan Developer untuk Membangun Agen ADK dengan Keahlian untuk mempelajari keahlian ADK.
Kontributor
Nathaniel Thomas | Software Engineering Intern, Google Maps Platform