Tool sonuçlarını göndermek
Sending tool results
Bu modül için tahmini süre: 9 dakika
Genel bakış
Claude bir tool çağrısı talep ettikten sonra, fonksiyonu çalıştırıp sonuçları geri göndermeniz gerekir. Bu, talep edilen bilgiyi Claude’a sağlayarak tool use workflow’unu tamamlar. Bu derste tool sonuçlarının nasıl iletildiğini, tool_result block’unun yapısını ve birden fazla paralel tool çağrısının nasıl yönetildiğini göreceksiniz.
Tool function’ı çalıştırmak
Claude bir tool use block ile yanıt verdiğinde, input parametrelerini çıkarıp fonksiyonunuzu çağırırsınız. Tool parametrelerine şöyle erişirsiniz:
response.content[1].input
Bu size Claude’un fonksiyonunuza geçirmek istediği argümanların bir dictionary’sini verir. Fonksiyonunuz dictionary yerine keyword argument’lar beklediğinden Python’un unpacking syntax’ını kullanırsınız:
get_current_datetime(**response.content[1].input)

Tool result block
Tool function’ı çalıştırdıktan sonra sonuçları bir tool result block kullanarak Claude’a geri göndermeniz gerekir. Bu block bir user message içine yerleşir ve tool’u çalıştırdığınızda ne olduğunu Claude’a söyler.

Tool result block’un birkaç önemli property’si vardır:
- tool_use_id — Bu ToolResult’un karşılık geldiği ToolUse block’unun id’siyle eşleşmeli
- content — Tool’unuzu çalıştırmaktan elde edilen çıktı, string olarak serialize edilmiş
- is_error — Bir hata oluştuysa True
Birden çok tool çağrısını yönetmek
Claude tek bir yanıtta birden çok tool çağrısı talep edebilir. Örneğin kullanıcı “What’s 10 + 10 and what’s 30 + 30?” diye sorarsa Claude iki ayrı ToolUse block ile yanıt verebilir.

Her tool çağrısı benzersiz bir ID alır ve sonuçları geri gönderirken bu ID’leri eşleştirmelisiniz. Bu, sonuçlar farklı sırada gelse bile Claude’un hangi sonucun hangi isteğe karşılık geldiğini bilmesini sağlar.

Follow-up isteğini inşa etmek
Claude’a göndereceğiniz follow-up isteği, tam conversation history’i ve yeni tool result’u içermelidir. Yapı şudur:
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": response.content[1].id,
"content": "15:04:22",
"is_error": False
}]
})
Tam message history artık şunları içerir:
- Orijinal user message
- Tool use block içeren assistant message
- Tool result block içeren user message
Final isteği yapmak
Follow-up isteğini gönderirken, Claude’dan başka bir tool çağrısı beklemiyor olsanız bile tool schema’sını dahil etmelisiniz. Claude, conversation history’deki tool referanslarını anlamak için schema’ya ihtiyaç duyar.
client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema]
)

Claude bunun ardından tool sonuçlarını kullanıcı için doğal bir yanıta dönüştüren final bir message ile yanıt verecektir. Tool use workflow’u artık tamamlandı — custom fonksiyonunuz aracılığıyla Claude’a real-time bilgiye erişim sağlamayı başardınız.
Temel çıkarımlar
- Tool çıktısını Claude’a geri vermek için
tool_resulttipinde block bir user message içine konur tool_use_idile orijinal ToolUse block’unun id’si birebir eşleşmelidir**response.content[1].inputkalıbı dictionary’i keyword argument’lara açar- Paralel tool çağrılarında her sonuç doğru
tool_use_idile eşleştirilerek aynı user message içinde gönderilebilir - Follow-up çağrısında
toolsschema listesi yine geçirilmelidir; Claude history’deki referansları çözümler is_error: Trueile hata bildirilince Claude düzeltilmiş bir tool çağrısını deneyebilir