Multi-Step Agent Tasarımı: Loop, Termination, Guardrails
Agent loop'u nasıl yazarsın? Adım sayısı, budget, error handling, infinite loop önleme. Production patterns.
Şükrü Yusuf KAYA
12 min read
AdvancedMulti-Step Agent: Production Pattern
python
# Üretim için minimum agent skeletonimport os, json, timefrom anthropic import Anthropicfrom dotenv import load_dotenvload_dotenv() client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY")) # Tools (gerçek implementasyonu)def search(query: str) -> str: return f"[Mock search] Top 3 results for '{query}'..." def calculator(expr: str) -> float: return eval(expr) # PRODUCTION'DA: ast.literal_eval veya sympy TOOLS = [ {"name": "search", "description": "Web araması", "input_schema": { "type": "object", "properties": {"query": {"type": "string"}}, "required": ["query"] }}, {"name": "calculator", "description": "Matematik hesabı", "input_schema": { "type": "object", "properties": {"expr": {"type": "string"}}, "required": ["expr"] }},] def run_tool(name: str, args: dict) -> str: if name == "search": return search(**args) if name == "calculator": return str(calculator(**args)) return f"Unknown tool: {name}" def agent(goal: str, max_steps: int = 10, max_tokens_total: int = 50000): messages = [{"role": "user", "content": goal}] total_tokens = 0 start = time.time() for step in range(max_steps): # Termination check if total_tokens > max_tokens_total: return "🚨 Token bütçesi aşıldı" if time.time() - start > 60: return "🚨 Timeout" r = client.messages.create( model="claude-sonnet-4-6", max_tokens=2000, tools=TOOLS, messages=messages, ) total_tokens += r.usage.input_tokens + r.usage.output_tokens if r.stop_reason == "end_turn": return r.content[0].text # Tool çağrısı varsa messages.append({"role": "assistant", "content": r.content}) tool_results = [] for block in r.content: if block.type == "tool_use": print(f"[step {step+1}] {block.name}({block.input})") result = run_tool(block.name, block.input) tool_results.append({ "type": "tool_result", "tool_use_id": block.id, "content": result }) messages.append({"role": "user", "content": tool_results}) return "🚨 Max steps aşıldı" print(agent("100 USD kaç TL ediyor? Sonra bu rakamı 2 ile çarp.")) Production agent skeleton — termination guards dahil.
5 Guardrail#
Maksimum N adım. Aşılırsa abort.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...
Related Content
1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Bu Eğitim Hakkında ve Verimli Çalışma Yöntemi
Start Learning1. Temeller — Yapay Zekâ ve LLM'lere Giriş
Yapay Zekâ → Üretken AI → LLM: Bağlamsal Harita
Start Learning1. Temeller — Yapay Zekâ ve LLM'lere Giriş