Claude Agent SDK ile İlk Agent
Anthropic'in Agent SDK'sı ile Hello-World agent'ı: tool tanımı, sistem prompt'u, controller loop ve insan onayı.
Şükrü Yusuf KAYA
13 dakikalık okuma
İleriHello-World Agent
Görev: "Bir konu ver, agent web search yapsın, sonuçları özetlesin, dosyaya yazsın."
Bu agent'ın 3 tool'u olacak:
- — sahte; çalışırken WebSearch tool'u kullan.
web_search(query) - — başka bir Claude çağrısı.
summarize(text) - — local fs.
save_file(path, content)
python
import os, jsonfrom anthropic import Anthropicclient = Anthropic() TOOLS = [ {"name":"web_search","description":"Web'de arama yapar.", "input_schema":{"type":"object","properties":{"query":{"type":"string"}},"required":["query"]}}, {"name":"summarize","description":"Verilen metni 5 madde ile özetler.", "input_schema":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}}, {"name":"save_file","description":"İçeriği dosyaya yazar.", "input_schema":{"type":"object","properties":{"path":{"type":"string"},"content":{"type":"string"}},"required":["path","content"]}},] def run_tool(name, args): if name == "web_search": return [{"title":"Demo","snippet":"Sonuç...","url":"https://example.com"}] if name == "summarize": return "- madde 1\n- madde 2\n- madde 3\n- madde 4\n- madde 5" if name == "save_file": # GERÇEKTE: izin halkasından geçirip yaz print(f"[would-write] {args['path']} <- {len(args['content'])} chars") return {"ok": True} raise ValueError(name) def agent(goal: str, max_steps: int = 6): messages = [{"role":"user","content": goal}] for step in range(max_steps): resp = client.messages.create( model="claude-sonnet-4-6", max_tokens=2048, system="Sen bir araştırma agent'ısın. Plan yap, sırayla araçları kullan ve sonuçta dosya yaz.", tools=TOOLS, messages=messages, ) if resp.stop_reason != "tool_use": return resp.content[0].text results = [] for block in resp.content: if block.type == "tool_use": results.append({ "type":"tool_result", "tool_use_id": block.id, "content": json.dumps(run_tool(block.name, block.input), ensure_ascii=False), }) messages.append({"role":"assistant","content": resp.content}) messages.append({"role":"user","content": results}) return "MAX STEPS" print(agent("Türkiye'deki en yeni AI yatırımları üzerine kısa bir rapor üret ve report.md'ye yaz."))Tek dosyalık ilk agent — controller loop, max_steps ile sigorta atılmış.
Boşluk doldur · text
Agent SDK kullanırken her zaman _____ steps ile sonsuz döngüden korunmalıyız. Hassas tool'lar _____ halkasından geçer. Yetenek için Skills, MCP veya özel _____ eklenir.Sık Sorulan Sorular
Resmi olarak Python ve TypeScript var; topluluk SDK'ları farklı dilleri kapsıyor olabilir. Kendi dilin yoksa HTTP API + custom controller yaz.
Yorumlar & Soru-Cevap
(0)Yorum yazmak için giriş yap.
Yorumlar yükleniyor...