AI Engineering Academy · Ders

Agent'ınız İçin Araçlar Tanımlama

@tool dekoratörüyle özel araçlar oluşturun, LLM'nin her aracı ne zaman çağıracağına karar verirken kullanacağı açık açıklamalar yazın ve Pydantic ile girdi doğrulaması ekleyin.

2. ders / 413 adım

Agent'ınız İçin Araçlar Tanımlama, CoddyKit'te ücretsiz bir AI Engineering Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Engineering Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Engineering Academy kursu toplamda 4 dersten oluşur.

Araçlar Aracılara Üstün Yetenekler Kazandırır

Araçları olmayan bir aracı yalnızca zaten bildikleri hakkında akıl yürütebilir; web'de arama yapamaz, veritabanını sorgulayamaz veya e-posta gönderemez. Araçlar, aracının gerçek dünyada eylemler gerçekleştirmesini ve güncel bilgileri almasını sağlayarak yeteneklerini genişleten Python işlevleridir. Araçları açıkça tanımlamak, güvenilir bir aracı oluşturmada en önemli adımlardan biridir.

LangChain'de @tool Dekoratörü

LangChain'in @tool dekoratörü, herhangi bir Python işlevini aracının çağırabileceği bir araca dönüştürür. İşlevin belge dizesi, LLM'nin aracı ne zaman çağıracağına karar verirken kullandığı araç açıklamasına dönüşür. Açık ve belirli bir açıklama, aracının araç seçme doğruluğunu büyük ölçüde artırır.

from langchain_core.tools import tool

@tool
def get_weather(city: str) -> str:
    '''Get the current weather conditions for a given city.
    Use this tool when the user asks about weather in a specific location.
    Input should be just the city name, e.g. 'London' or 'New York'.
    '''
    # Real implementation would call a weather API
    return f'The weather in {city} is 18 degrees Celsius and partly cloudy.'

print(get_weather.name)         # 'get_weather'
print(get_weather.description)  # The docstring above

Tür Açıklamaları ve Şema Oluşturma

LangChain, Python tür açıklamalarından her araç için otomatik olarak bir JSON Şeması oluşturur. Aracı, hangi bağımsız değişkenlerin gerekli olduğunu, bunların türlerini ve tüm kısıtlamaları bilmesi için bu şemayı sistem isteminde alır. Araç işlevlerinize her zaman kesin tür açıklamaları ekleyin.

from langchain_core.tools import tool

@tool
def calculate_compound_interest(
    principal: float,
    annual_rate: float,
    years: int
) -> float:
    '''Calculate compound interest earned over a number of years.
    Args:
        principal: Initial investment amount in dollars.
        annual_rate: Annual interest rate as a decimal (e.g. 0.05 for 5%).
        years: Number of years to compound.
    Returns:
        Final amount after compounding.
    '''
    return principal * (1 + annual_rate) ** years

# Inspect the auto-generated schema
print(calculate_compound_interest.args_schema.schema())

Pydantic ile Girdi Doğrulama

Karmaşık girdilere sahip araçlar için args_schema olarak bir Pydantic modeli tanımlayın. Bu, otomatik doğrulama, tür dönüştürme ve LLM'nin aracı nasıl çağıracağına karar verirken gördüğü açıklayıcı alan düzeyinde belgeler sağlar.

from langchain_core.tools import tool
from pydantic import BaseModel, Field

class SearchInput(BaseModel):
    query: str = Field(description='The search query to look up.')
    num_results: int = Field(default=5, ge=1, le=20, description='Number of results to return (1-20).')

@tool(args_schema=SearchInput)
def web_search(query: str, num_results: int = 5) -> str:
    '''Search the web for current information on any topic.
    Use this for facts that may have changed after the model training cutoff.
    '''
    return f'Searching for "{query}", returning {num_results} results...'

Etkili Araç Açıklamaları Yazma

Araç açıklaması, araç tanımınızın en önemli bölümüdür; LLM, aracı ne zaman ve nasıl çağıracağına karar vermek için bu açıklamayı okur. İyi bir açıklama şu soruları yanıtlar: Bu araç ne yapar? Ne zaman kullanılmalıdır? Girdi nasıl görünmelidir? Çıktı ne olacaktır?

  • Kötü: 'Arama aracı.'
  • İyi: 'Güncel haberleri, olguları veya verileri web'de arayın. Kullanıcı güncel olaylar ya da eğitim verilerinde bulunmayan olgular hakkında soru sorduğunda kullanın. Girdi: kısa ve öz bir arama sorgusu.'

Araçların Dönüş Türleri

Araçlar dizeler, sözlükler veya yapılandırılmış Pydantic nesneleri döndürebilir. Ancak aracının, sonucu konuşmaya eklemek için nihayetinde metin olarak alması gerekir. Bir sözlük döndürürseniz LangChain bunu bir dizeye serileştirir. Karmaşık iç içe veriler için, modelin bunlar üzerinde akıl yürütmesine yardımcı olmak amacıyla ham JSON yerine okunabilir bir özet biçimlendirin.

from langchain_core.tools import tool
import json

@tool
def get_stock_price(ticker: str) -> str:
    '''Look up the current stock price for a given ticker symbol.
    Input should be the stock ticker symbol in uppercase, e.g. AAPL or MSFT.
    '''
    # Stub — real implementation calls a financial API
    data = {'ticker': ticker, 'price': 182.50, 'currency': 'USD', 'change': '+1.2%'}
    return f'{ticker}: ${data["price"]} ({data["change"]})'

Araç Hatalarını Sorunsuzca Ele Alma

Araçlar başarısız olabilir. API'ler kullanılamaz duruma gelebilir, ağ zaman aşımı gerçekleşebilir ve kullanıcılar geçersiz girdiler sağlayabilir. İstisnaların aracınızın döngüsünü çökertmesine izin vermek yerine araç mantığını try/except ile sarın ve açıklayıcı bir hata dizesi döndürün. Böylece aracı, hatayı değerlendirip yeniden denemeye veya farklı bir yaklaşım kullanmaya karar verebilir.

from langchain_core.tools import tool
import requests

@tool
def fetch_url(url: str) -> str:
    '''Fetch the text content of a web page given its URL.
    Use for accessing specific documents or web pages the user references.
    '''
    try:
        resp = requests.get(url, timeout=10)
        resp.raise_for_status()
        return resp.text[:2000]  # Return first 2000 chars
    except requests.Timeout:
        return 'Error: Request timed out after 10 seconds.'
    except requests.HTTPError as e:
        return f'Error: HTTP {e.response.status_code}'
    except Exception as e:
        return f'Error fetching URL: {str(e)}'

Asenkron Araçlar

Aracınız çok sayıda araç çağrısı yaptığında veya araçlarınız G/Ç'ye bağlı ağ istekleri gerçekleştirdiğinde, olay döngüsünü engellememek için asenkron araç işlevleri tanımlayın. LangChain'in aracı yürütücüsü asenkron araçları yerel olarak destekler; araç işlevinizde yalnızca async def kullanın.

from langchain_core.tools import tool
import httpx

@tool
async def async_fetch(url: str) -> str:
    '''Asynchronously fetch content from a URL.
    Preferred over fetch_url when making multiple concurrent requests.
    '''
    async with httpx.AsyncClient(timeout=10) as client:
        try:
            resp = await client.get(url)
            resp.raise_for_status()
            return resp.text[:2000]
        except Exception as e:
            return f'Error: {str(e)}'

Araçları Bir Araç Seti İçinde Düzenleme

Birbiriyle ilişkili çok sayıda aracınız olduğunda bunları bir araç setinde gruplayın; araç seti, araçlardan oluşan bir liste döndüren bir sınıftır. LangChain araç setleri ortak bir örüntüyü izler: oluşturucu içinde API anahtarları gibi yapılandırmaları alır ve bir get_tools() yöntemi sunar. Bu, araç yönetimini düzenli hale getirir ve farklı aracılar arasında yeniden kullanılabilir kılar.

from langchain_core.tools import BaseTool
from typing import List

class WeatherToolkit:
    def __init__(self, api_key: str):
        self.api_key = api_key

    def get_tools(self) -> List[BaseTool]:
        return [
            get_weather,          # defined earlier with @tool
            get_weather_forecast,  # another tool
            get_weather_alert      # another tool
        ]

# Usage
toolkit = WeatherToolkit(api_key='your_weather_api_key')
tools = toolkit.get_tools()
print(f'Loaded {len(tools)} weather tools')

Araç Erişimini Kullanıcı Rolüne Göre Sınırlama

Her kullanıcı her araca erişebilmemelidir. Salt okunur bir kullanıcı send_email veya delete_record aracını tetiklememelidir. Kimliği doğrulanmış kullanıcının izinlerine göre ajana aktarılacak araçları seçerek rol tabanlı araç erişimi uygulayın.

def get_tools_for_user(user_role: str) -> list:
    read_tools = [web_search, get_weather, calculate_compound_interest]
    write_tools = [send_email, create_calendar_event, update_record]

    if user_role == 'admin':
        return read_tools + write_tools
    elif user_role == 'member':
        return read_tools
    else:
        return [web_search]  # Guest: only public search

Araç Belgeleri İçin En İyi Uygulamalar

İyi belgelenmiş araçlar, ajan hatalarını büyük ölçüde azaltır. Şu en iyi uygulamaları izleyin: açık ve önce fiil gelen bir ad kullanın (websearch yerine search_web), beklenen girdi biçimini açıkça belirtin, yanlış pozitifleri önlemek için aracın ne zaman KULLANILMAMASI gerektiğini açıklayın ve modelin doğru şekilde ayrıştırabilmesi için çıktının nasıl göründüğünü belirtin.

Hızlı Kontrol

LangChain ajanları için araç tanımlama konusundaki anlayışınızı sınayın.

Ders Özeti

Bu derste şunları öğrendiniz: @tool dekoratörü, docstring'lerini açıklama olarak kullanarak Python işlevlerini ajan tarafından çağrılabilen araçlara dönüştürür, Pydantic şemaları doğrulanmış türde girdiler ekler ve araçlar, açıklayıcı hata dizeleri döndürerek hataları kontrollü biçimde ele almalıdır. Sırada, LangChain ile eksiksiz bir ReAct ajanı oluşturacak ve akıl yürütme adımlarını izleyeceğiz.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Python öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
30
Dersler
120

Sıkça Sorulan Sorular

“Agent'ınız İçin Araçlar Tanımlama” dersi ücretsiz mi?

Evet — “Agent'ınız İçin Araçlar Tanımlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Engineering Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Engineering Academy kursu toplamda 4 dersten oluşur.

“Agent'ınız İçin Araçlar Tanımlama” dersinde ne öğreneceğim?

@tool dekoratörüyle özel araçlar oluşturun, LLM'nin her aracı ne zaman çağıracağına karar verirken kullanacağı açık açıklamalar yazın ve Pydantic ile girdi doğrulaması ekleyin. AI Engineering Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Engineering Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Engineering Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Agent'ınız İçin Araçlar Tanımlama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Engineering Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Engineering Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. ReAct Çerçevesi: Düşün, Eyleme Geç, Gözlemle
  2. Agent'ınız İçin Araçlar Tanımlama
  3. LangChain ile ReAct Agent Oluşturma
  4. Ajan Hatalarını ve Döngülerini Yönetme
← AI Engineering Academy Sayfasına Dön