İçeriğe geç

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
İleri
Agent SDK ile ilk hello-world akışı

Hello-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:
  • web_search(query)
    — sahte; çalışırken WebSearch tool'u kullan.
  • summarize(text)
    — başka bir Claude çağrısı.
  • save_file(path, content)
    — local fs.
python
import os, json
from anthropic import Anthropic
client = 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...

İlgili İçerikler