Genel Bakış
Büyük dil modelleri geniş bir genel bilgiye sahiptir ancak alanınızın belirli metriklerini, veritabanı şemalarını veya hesaplama formüllerini bilmez. Bu bağlam olmadan model tahmin yapar. Bu da yanlış SQL ve hatalı analizlere yol açar.
RMI ADK Agent, bu sınırlamayı beceriler aracılığıyla ele alır. "Dün Storrow Drive'da trafik ne kadar yoğundu?" diye soran bir kullanıcıyı ele alalım. Müşteri temsilcisinin yanıt verebilmesi için RMI'nın trafik sıkışıklığını seyahat süresi indeksi (TTI) olarak ifade ettiğini bilmesi gerekir. Bu, historical_travel_time tablosundaki canlı duration_in_seconds ile serbest akış static_duration_in_seconds arasındaki orandır. Becerileri olmayan bir aracı, bunun yerine bir average_speed sütunu (RMI raporları yalnızca kategorik hızı bildirir, asla km/saat cinsinden hızı bildirmez) icat edebilir veya yanlış formül uygulayarak kendinden emin ancak yanlış bir yanıt üretebilir.
Aracının bu alan bilgisine ihtiyacı olsa da her metrik tanımını, tablo şemasını ve SQL uyarısını tek bir sistem istemine yerleştirmek verimsizdir.
Büyük sistem istemlerinin sınırlamaları
Tüm alan adı kurallarını ve şemalarını tek bir sistem istemine yerleştirmek çeşitli sorunlara neden olur:
- Daha yüksek maliyetler ve daha yavaş yanıtlar: Her dönüşte büyük bir istem göndermek, bu kurallara ihtiyaç duymayan sorular için bile jetonların boşa harcanmasına ve gecikmenin artmasına neden olur.
- Talimatları daha kötü takip etme: Uç durumlarla birlikte istem uzadıkça modelin belirli kuralları yoksayma veya unutma olasılığı artar.
- Daha zor bakım: Her şeyi tek bir istemde birleştirmek, diğer kuralları bozmadan tek tek kuralları güncellemenizi veya test etmenizi zorlaştırır.
Beceri
Ajan becerileri, alan bilgisini, ajanın yalnızca gerektiğinde yüklediği modüler klasörler halinde düzenler. Her beceri, Markdown talimatları ve YAML başlığı içeren bir SKILL.md dosyası içeren bir dizindir.
Ajan, her şeyi önceden yüklemek yerine yalnızca her becerinin kısa
description açıklamasını temel isteminde tutar. Kullanıcı bir beceriyle ilgili soru sorduğunda ajan, bu dönüşle ilgili tüm talimatları yükler. Bu sayede istemler kısa tutulur ve bağlam alanı, gerçek sohbet geçmişi için ayrılır.
Beceriler, endişelerin net bir şekilde ayrılmasını da sağlar: İlgisiz alanlarda istenmeyen yan etkiler riski olmadan tek tek özellikleri izole bir şekilde yazabilir, test edebilir ve güncelleyebilirsiniz. Üretim aracısı genellikle tek bir büyük istem yerine birden fazla odaklanmış beceri kullanır.
Bir becerinin anatomisi
SKILL.md dosyası iki bölümden oluşur: yönlendirme için bir YAML başlığı ve talimatlar için bir Markdown gövdesi.
1. YAML üstbilgisi
---
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, becerinin yüklenip yüklenmeyeceğine karar vermek için description kullanır. Model, beceriyi yüklemeye karar vermeden önce yalnızca bu açıklamayı gördüğünden, kapsanan konuları, tipik kullanıcı ifadelerini ve ne zaman tetikleneceğini net bir şekilde listelediğinden emin olun.
2. Markdown gövdesi
Gövde, yüklendikten sonra modelin izlediği alana özgü yönergeleri sağlar.
RMI metrikleri beceri gövdesi, tam TTI formülünü (duration_in_seconds / static_duration_in_seconds), her metrik için doğrulanmış bir BigQuery SQL şablonunu ve kullanıcı niyetini doğru metriğe eşleyen tetikleyici ifadeleri içerir. Yapılandırılmış ve doğrulanmış talimatlar sağlamak, modelin temel bilgilerini korumasını sağlar ve şema veya formül ayrıntılarını tahmin etmesini önler.
ADK ile becerileri kaydetme
Becerileri SkillToolset içine gruplandırın ve ajanın araç listesine ekleyin:
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])
Burada TRAFFIC_METRICS_SKILL_DIR, trafik metrikleri temellendirme becerisini içeren dizini gösterir.
Araçları becerilerle birlikte kullanma
Beceriler metin tabanlı talimatlar olduğundan, karmaşık mantığı yorumlamak ve yürütmek için yalnızca modele güvenmek tutarsızlıklara yol açabilir. Bir beceriye yürütülebilir araçlar eklemek determinizm sağlar: Kod, katı hesaplamaları, doğrulamaları ve API etkileşimlerini yönetirken beceri, modeli bunları ne zaman ve nasıl kullanacağı konusunda yönlendirir.
Araçların paketlenmesi, küresel bağlamın şişmesini de önler. Her uzmanlık aracını önceden göstermek yerine, araçlar yalnızca ilgili alan becerileri etkin olduğunda yüklenecek şekilde kapsamlandırılır.
Belirli araçları YAML başlığındaki bir beceriye doğrudan ekleyebilirsiniz:
metadata:
adk_additional_tools:
- calculate_custom_metric
Bu sayede model, hem araç şemasını hem de kullanım talimatlarını tam zamanında birlikte alır ve temel araç seti yalın tutulur.
Örnek: Bir tıkanıklık sorgusunu temellendirme
- Kullanıcı, "Akşam trafiğinde Storrow Drive'da trafik ne kadar yoğun?" diye soruyor.
- Temel sistem istemi yalnızca her becerinin adını ve açıklamasını tanıtır. Bu nedenle, ajan
rmi-traffic-metrics-groundingbecerisinin "konjesyon" konusunu kapsadığını görür ve bu sorguyla ilgili talimatların tamamını almak içinload_skillbecerisini çağırır. - Beceri yüklendiğinde, ajan TTI tanımını ve sağladığı doğrulanmış SQL şablonunu uygular. Formül tahmin etmek yerine
historical_travel_timeile oranı hesaplar.
Bir becerinin gövdesi yalnızca bir sorgu gerektiğinde getirildiğinden, aracının hiç kullanmadığı beceriler bağlama girmez ve temel sistem istemi küçük tutulur.
Temel çıkarımlar
- Alan kılavuzluğuna göre temellendirme: Genel model varsayımlarına güvenmek yerine açık talimatlar, kısıtlamalar ve işletme mantığı sağlayın.
- Modüler beceriler kullanın: Jeton tasarrufu yapmak, gecikmeyi azaltmak ve doğruluğu artırmak için bilgileri tek bir büyük sistem istemi yerine odaklanılmış becerilere ayırın.
- Net açıklamalar yazın: Ajanın beceriyi güvenilir bir şekilde yüklemesi için her becerinin açıklamasına belirli tetikleyici ifadeler ve anahtar kelimeler ekleyin.
- Somut örnekler ekleyin: Çıkışların tutarlı ve doğru olması için doğrulanmış örnekler ekleyin ve beceri gruplarına iş akışlarını referans olarak gösterin.
- Belirlenimcilik için paket araçlar: Temel araç setini yalın tutarken sıkı doğrulama ve yürütmeyi yönetmek için yürütülebilir araçları becerilere ekleyin.
Sonraki adımlar
- İleri seviye beceri kalıplarını keşfedin: ADK becerileri hakkında bilgi edinmek için Beceri Sahibi ADK Ajanları Oluşturmayla İlgili Geliştirici Kılavuzu'nu okuyun.
Katkıda bulunanlar
Nathaniel Thomas | Software Engineering Intern, Google Maps Platform