1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
from __future__ import annotations
from anthropic import Anthropic
from anthropic.types import ToolParam, MessageParam
client = Anthropic()
user_message: MessageParam = {
"role": "user",
"content": "What is the weather in SF?",
}
tools: list[ToolParam] = [
{
"name": "get_weather",
"description": "Get the weather for a specific location",
"input_schema": {
"type": "object",
"properties": {"location": {"type": "string"}},
},
}
]
message = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[user_message],
tools=tools,
)
print(f"Initial response: {message.model_dump_json(indent=2)}")
assert message.stop_reason == "tool_use"
tool = next(c for c in message.content if c.type == "tool_use")
response = client.messages.create(
model="claude-sonnet-4-5-20250929",
max_tokens=1024,
messages=[
user_message,
{"role": message.role, "content": message.content},
{
"role": "user",
"content": [
{
"type": "tool_result",
"tool_use_id": tool.id,
"content": [{"type": "text", "text": "The weather is 73f"}],
}
],
},
],
tools=tools,
)
print(f"\nFinal response: {response.model_dump_json(indent=2)}")
|