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 ve bu da yanlış SQL'e ve hatalı analize yol açar.
RMI ADK Aracısı, bu sınırlamayı beceriler aracılığıyla giderir. "Dün Storrow Drive'da trafik ne kadar yoğundu?" diye soran bir kullanıcıyı düşünün. Yanıt vermek için temsilcinin, RMI'nin tıkanıklığı seyahat süresi indeksi (TTI) olarak ifade ettiğini, historical_travel_time tablosunda canlı duration_in_seconds ile serbest akış static_duration_in_seconds arasındaki oranı bilmesi gerekir. Beceriye sahip olmayan bir aracı, bunun yerine bir average_speed sütunu oluşturabilir (RMI yalnızca kategorik hızı raporlar, asla km/saat cinsinden hızı raporlamaz) veya yanlış formülü uygulayarak kendinden emin ancak yanlış bir yanıt üretebilir.
Aracı bu alan bilgisine ihtiyaç duyarken 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: Sınır 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
Agent Skills, alan bilgisini, aracını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 aracı, bu dönüşle ilgili tüm talimatları yükler. Bu sayede istemler kısa tutulur ve bağlam alanı, asıl 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 riskini almadan 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.
Beceri anatomisi
SKILL.md dosyası iki bölümden oluşur: yönlendirme için bir YAML üstbilgisi 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övdesinde tam TTI formülü (duration_in_seconds / static_duration_in_seconds), her metrik için doğrulanmış bir BigQuery SQL şablonu ve kullanıcı niyetini doğru metriğe eşleyen tetikleyici ifadeler bulunur. Yapılandırılmış ve doğrulanmış talimatlar sağlamak, modelin temelini korur ve şema ya da formül ayrıntılarını tahmin etmesini önler.
ADK ile becerileri kaydetme
Becerileri SkillToolset şeklinde 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ı önceden gösterilmek yerine, yalnızca ilgili alan becerisi etkin olduğunda yüklenecek şekilde kapsamlandırılır.
YAML başlığında belirli araçları doğrudan bir beceriye 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, aracı
rmi-traffic-metrics-groundingbecerisinin "tıkanıklık" konusunu kapsadığını görür ve bu sorguyla ilgili tüm talimatları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ılavuzlarıyla 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 beceri gövdelerine doğrulanmış örnekler ve referans iş akışları ekleyin.
- Belirlenimcilik için paketleme 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 Beceriyle ADK Ajanları Oluşturma Geliştirici Kılavuzu'nu okuyun.
Katkıda bulunanlar
Nathaniel Thomas | Software Engineering Intern, Google Maps Platform