AI Skills & Tools Nedir

AI agents paketlenmiş yetenekleri nasıl kullanır — function calls'tan MCP servers'a kadar. LLMs ile çalışan geliştiriciler için pratik bir rehber.

7 dakika okumaGüncellendi: Nisan 2026

🔧 Skill Nedir?

AI ajanları bağlamında, bir skill (aynı zamanda olarak adlandırılır tool or function) paketlenmiş, tekrar kullanılabilir bir yetenektir; LLM bunu bağlam penceresinin dışındaki dünyayla etkileşim için çağırabilir. Skills, dil anlayışı ile gerçek dünya eylemi arasındaki boşluğu kapatır.

Her skill dört bileşene sahiptir:

  • Name — LLM'in skill'e referans vermek için kullandığı benzersiz bir tanımlayıcı (örn., web_search)
  • Description — skill'in ne yaptığını ve ne zaman kullanılacağını açıklayan doğal dil metni; LLM bunu hangi zaman skill'in çağrılacağına karar vermek için okur
  • Girdi şeması — Argümanların yapılandırılmış tanımı (JSON Schema); model göreve göre bunları doldurur
  • Implementation — Gerçek çalışan kod: bir API çağrısı, veritabanı sorgusu, shell komutu veya başka herhangi bir operasyon

Örnek: A get_weather skill açıklaması "Bir şehir için güncel hava durumunu getirir" olan, kabul eder { "city": "string" } girdi olarak ve bir hava durumu API'sini çağırır. LLM API anahtarını veya HTTP çağrısını asla görmez — sadece sonucu metin olarak alır.

⚙️ Araç Çağırma Nasıl Çalışır

Bir ajanın skills erişimi olduğunda, LLM onları doğrudan çağırmaz — bunun yerine requests yapılandırılmış bir çıktı üreterek bir çağrı yapar. Runtime (uygulama kodunuz) gerçek çağrıyı yürütür ve sonucu döndürür. Tam döngü şöyle:

  1. Araç kaydı — Kodunuz modele kullanılabilir skills listesini, açıklamaları ve şemaları gönderir
  2. Model muhakemesi — LLM görevi ve kullanılabilir araçları okur, hangi aracı hangi argümanlarla çağıracağına karar verir
  3. Araç çağrı isteği — Model yapılandırılmış bir "tool call" mesajı çıktılar (örn., { "tool": "web_search", "args": { "query": "current Gemini models" } })
  4. Execution — Runtime kodunuz gerçek fonksiyonu, API'yi veya servisi çağırır
  5. Sonuç enjeksiyonu — Sonuç konuşma bağlamına tekrar eklenir
  6. Sürekli muhakeme — Model sonucu okur ve ya başka bir araç çağırır, takip soru sorar ya da nihai cevabı üretir

Bu döngü bir tur içinde birçok kez tekrarlanabilir. Karmaşık bir ajan görevi, nihai bir cevap üretilmeden önce ardışık olarak 10–20 araca çağrı yapabilir.

📊 Skills vs Plugins vs MCP Sunucuları

Terminoloji hızla evrildi. Kavramların tarihsel ilişkisi şöyle:

EraNameNasıl çalışıyorduStatus
2023ChatGPT PluginsOpenAPI spec ile kullanıcı tarafından kurulabilen uzantılar; ChatGPT onları HTTP ile çağırdıKaldırıldı (GPTs + tools ile değiştirildi)
2023OpenAI Function CallingAPI düzeyinde JSON Schema tanımları; model yapılandırılmış fonksiyon çağrısı üretir, kodunuz bunu yürütürAktif — yeniden adlandırıldı "tool use"
2023–Tool Use / SkillsFonksiyon çağırmaya eşdeğer; Anthropic "tool use" terimini icat etti, diğerleri "skills" veya "functions" diyorAktif — mevcut standart
2024–MCP SunucularıStandardize edilmiş protokol (Anthropic, Dec 2024) tool sunucularını paketlemek ve dağıtmak için; herhangi bir MCP client herhangi bir MCP server ile bağlanabilirAktif — büyüyen ekosistem

Ana fark: Geleneksel tool use uygulama kodunuz içinde tanımlanır. MCP sunucuları standart bir protokol üzerinden araçlar sunan bağımsız süreçlerdir — bunlar farklı AI istemcileri (Claude Desktop, Cursor, VS Code, özel ajanlar) arasında tekrar kullanılabilir. Daha fazla bilgi: MCP Nedir.

🗂️ Araç Kategorileri ve Risk Seviyeleri

Tüm araçlar aynı riski taşımaz. Risk seviyesine göre gruplandırma, ajanınızın için tanımlama yapmaya yardımcı olureylem alanıve insan-döngüde onay noktalarının nereye eklenmesi gerektiği:

CategoryExamplesRiskRecommendation
Read-onlyweb_search, read_file, get_weather, list_dirLowOtonom olarak izin verin; tüm çağruları kaydedin
Yazma (yerel)write_file, create_dir, edit_codeMediumSandboxlanmış bir çalışma dizinine sınırlayın
Ağ / Haricisend_email, post_to_slack, call_apiOrta–YüksekGeri alınamaz gönderimler için HITL onayı
OS / Shellrun_command, execute_script, install_packageHighKapsayıcı ortama sınırlandırın; HITL gerekli
Destructivedelete_file, drop_table, revoke_accessCriticalHer zaman açık insan onayı gerektirir

🏗️ İyi Bir Skill'in Anatomisi

Bir skill için en önemli tasarım kararı onun description. LLM hangi aracı çağıracağına karar vermek için açıklamaları okur — kötü yazılmış bir açıklama yanlış araç seçimine, eksik çağrılara veya belirsiz argümanlara yol açar.

Açıklamayı etkili kılan nedir

  • Ne zaman kullanılacağını açıkça belirtin — "Kullanıcı gerçek zamanlı veri veya güncel olaylar hakkında soru sorduğunda bu aracı kullanın" ifadesi, "Web'de arama yapar" ifadesinden daha iyidir
  • Yapmadığını belirtin — "30 günden eski tarihsel verileri döndürmez"
  • Çıktı formatını tanımlayın — "Başlık, url ve snippet alanlarına sahip JSON dizisi döndürür"
  • 200 kelimenin altında tutun — ~200 token'dan uzun açıklamalar, birçok araç kayıtlı olduğunda modelin dikkatini zorlayabilir

Şema tasarım ilkeleri

  • Gerekli vs isteğe bağlı — Alanları gerçekten gerekli değilse required olarak işaretlemeyin; varsayılanlı isteğe bağlı alanlar model hatalarını azaltır
  • Kısıtlı değerler için enum kullanın — "format": {"enum": ["json", "markdown", "text"]} halüsinasyona uğramış değerleri önler
  • Idempotent araçları tercih edin — Güvenle yeniden denenebilen araçlar (okumalar, aramalar), tek seferlik eylemlerden (gönderimler, silmeler) daha güvenlidir
  • Yapılandırılmış veri döndürün — JSON cevapları modelin yapılandırmamış metin blob'larına göre muhakeme yapmasını kolaylaştırır

💡 Gerçek Dünya Örnekleri

Skill adıNe yaparAna argümanlarRisk
web_searchBir arama motorunu sorgulayın ve en iyi sonuçları döndürünquery: string, num_results?: numberLow
read_fileÇalışma dizininden bir dosya okuyunpath: string, offset?: number, limit?: numberLow
write_fileBir dosya oluşturun veya üzerine yazınpath: string, content: stringMedium
run_testsProje test süitini çalıştırın ve sonuçları döndürünfilter?: stringMedium
browser_screenshotBir URL'ye gidin ve ekran görüntüsü döndürünurl: stringMedium
send_emailBir veya birden fazla alıcıya e-posta gönderinto: string[], subject: string, body: stringYüksek — her zaman HITL
run_shellİstediğiniz bir shell komutunu yürütüncommand: string, cwd?: stringYüksek — sandbox gerekli

✅ En İyi Uygulamalar

Minimum izinler

Her ajana, onun belirli görevi için ihtiyaç duyduğu araçları verin. Sadece SSS cevaplayan bir ajanın write_file or send_email. Eylem alanı ne kadar küçükse, ajan manipüle edilirse patlama yarıçapı o kadar küçük olur. Bakınız:Aşırı Ajans.

Tüm araç çağrılarını denetleyin

Her araç çağrısını argümanları ve sonucu ile birlikte kaydedin. Bu hata ayıklama, maliyet tahsisi ve anormal davranışların tespiti için (örn., bir ajanın ~/.ssh/ sadece proje dizinine erişmesi gerekirken) önemli olur. LangSmith gibi AgentOps platformları bunu kolaylaştırır.

Geri alınamaz eylemler için insan-döngüsü

Geri alınması zor veya imkansız olan herhangi bir eylem — mesaj gönderme, veri silme, satın alma — yürütmeden önce açık insan onayı gerektirmelidir. HITL kontrollerini sadece prompt'a değil, ajan runtime'ınıza yerleştirin. Promtlar geçersiz kılınabilir; kod kılınamaz.

Tool poisoning'e dikkat edin

Eğer ajanların dinamik olarak MCP sunucuları kurmasına veya keşfetmesine izin verirseniz, kötü niyetli bir sunucu gizli talimatlar içeren bir açıklama ile bir araç kaydedebilir. Araçları ajanınuzun kaydına eklemeden önce her zaman açıklamaları inceleyin. Bakınız:Tool Poisoning.

Açık hata dönüşleri yazın

Bir araç başarısız olduğunda, modelin kurtarması veya yükseltmesi için yeterli bağlamı içeren yapılandırılmış bir hata döndürün — ham istisna yığını değil. Örnek: { "error": "rate_limited", "retry_after": 5 }. İyi tanımlanmış bir hata, ajanın yeniden denemesine, yedek bir aracı kullanmasına veya kullanıcıyı zarifçe bilgilendirmesine olanak verir.