Module 4: LLM Tool Calling¶
Merhaba! Modüller 1, 2 ve 3'te LLM'ler, fine-tuning ve RAG'ı öğrendik. Şimdi, LLM'leri dosya okumak veya komut çalıştırmak gibi gerçek eylemler yapması için yapalım. Bu "tool calling"—LLM'lere dünya ile etkileşim kurma süper gücü vermek. Daha detaylı keşfedelim!
I. LLM Tool Nedir?¶
Tool'lar, bir LLM'nin kendi kafasının dışına çıkma yöntemidir—web'de arama yapmak, matematik yapmak, kod çalıştırmak—ve bir cevapla geri dönmek.
Bir tool, kodda yazdığın bir fonksiyon. Normal bir Python fonksiyonu, isim, girişler ve çıkışlar var. LLM onu doğrudan çalıştırmaz—kullanıcının ne dediğine göre, LLM hangi tool'u çağırması gerektiğini karar verir ve doğru girişleri sağlar.
Örneğin, read_file(filename) gibi bir tool tanımlarsın. LLM tool'un açıklamasını görür ve kullanıcı "main.py dosyasını oku" derse, LLM onu filename="main.py" ile çağırır.
ASCII Art:
Tool Tanımı: def read_file(filename): ...
Kullanıcı: "main.py'yi oku"
LLM: "'main.py' ile read_file çağır"
Tool Çalışır: Dosya içeriğini döndürür
LLM: "Dosya diyor ki: ..."
II. Tool Calling Neden Önemli ve Faydalı?¶
A. LLM Sınırlamaları¶
LLM'ler sabit veriler üzerinde eğitilir, yani bilgileri sınırlı. Canlı bilgi alamaz veya dünya ile etkileşim kuramaz.
B. Yetenekleri Genişletme¶
Tool'lar bunu düzeltir! LLM'lere gerçek zamanlı bilgi erişimi veya eylemler yapma izni verirler.
Örnek 1: Web Arama LLM'ler interneti arayamaz. Ama bir sorgu alan ve web arama motorlarında (Google gibi) çalıştıran bir tool yazabilirsin. Böylece LLM internete erişebilir.
Örnek 2: Kod Erişimi LLM'ler yerel dosyalarını okuyamaz. Ama bir dosya adı alan ve içeriği döndüren tool ile, LLM kodunu "görebilir".
Tool'lar LLM'leri aktif yardımcılar yapar, pasif chatbot'lar değil.
III. Kullanım Alanları ve Tool Örnekleri¶
Tool'lar ihtiyaçlara göre birçok şey yapabilir. LLM'ler için birçok tool kullanılabilir, örneğin:
(Aşağıdaki her fonksiyonun üstündeki @tool decorator'ına dikkat et. Çoğu agent framework'ünde — bir sonraki modülde kullanacağımız smolagents gibi — bir fonksiyonu LLM'nin çağırabileceği bir tool'a dönüştürmek için tek gereken bu decorator. Ekstra bir kayıt adımına gerek yok.)
-
E-posta Gönderme:
import smtplib @tool def send_email(to, subject, body): # SMTP kurulumu server = smtplib.SMTP('smtp.example.com') server.sendmail('from@example.com', to, f'Subject: {subject}\n\n{body}') server.quit() -
Terminal Erişimi:
import subprocess @tool def run_command(command): result = subprocess.run(command, shell=True, capture_output=True, text=True) return result.stdout -
Zaman Alma:
import datetime @tool def get_current_time(): return datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') -
Veritabanı Sorguları:
import sqlite3 @tool def query_db(sql): conn = sqlite3.connect('database.db') cursor = conn.cursor() cursor.execute(sql) results = cursor.fetchall() conn.close() return results -
Vector DB Sorguları:
@tool def query_vector_db(query): # RAG gibi embedding = encode(query) results = vector_db.search(embedding, top_k=5) return results
Projelerin için read_file, run_shell ve query_vector_db gibi tool'lar kod görevleri için anahtar.
IV. Projeler İçin Tool'lar Neden Önemli?¶
Tool'lar LLM'leri akıllı asistanlara dönüştürür ki: - Karmaşık görevleri adım adım halleder. - Dosyalara erişir, kod çalıştırır, web arar. - Projeleri etkileşimli ve güçlü yapar.
Tool olmadan LLM'ler sadece chatbot'lar. Tool ile agent'lar!
Mermaid Diyagramı: Tool Calling Akışı¶
graph TD
A[Kullanıcı Soru Sorar] --> B[LLM Düşünür: Tool Gerekli Mi?]
B -->|Evet| C[LLM Argümanlarla Tool Çağırır]
C --> D[Host Tool Fonksiyonunu Çalıştırır]
D --> E[Tool Sonucu Döndürür]
E --> F[LLM Sonucu Cevap İçin Kullanır]
B -->|Hayır| F
Eğitim İlerlemesi¶
graph LR
A[Module 1: LLMs] --> B[Module 2: Training]
B --> C[Module 3: RAG]
C --> D[Module 4: Tools]
D --> E[Module 5: Memory]
E --> F[Module 6: Agents]
F --> G[Module 7: Multi-Agent]
style A fill:#90EE90
style B fill:#90EE90
style C fill:#90EE90
style D fill:#FFFF00
Özet¶
Tool'lar LLM'lerin gerçek dünyada eylem yapmasını sağlar. Ne olduklarını, neden faydalı olduklarını ve örnekleri öğrendin. Sonra agent'lar her şeyi birleştirir!
Hızlı Kontrol: LLM'ler neden tool'lara ihtiyaç duyar?
Öğrenmeye devam et! 🚀
Önceki Modül: Modül 3: Retrieval-Augmented Generation (RAG) Sonraki Modül: Modül 5: Memory