"""
Lesson 02 Demo — First API Call & Streaming
Run: python demo/first_call.py
"""
from dotenv import load_dotenv
import anthropic
import time

load_dotenv()
client = anthropic.Anthropic()

PROMPT = "In one sentence, explain what an API is to a 10-year-old."

print("=== Basic API Call ===")
start = time.time()
response = client.messages.create(
    model="claude-3-5-haiku-20241022",
    max_tokens=128,
    messages=[{"role": "user", "content": PROMPT}]
)
elapsed = time.time() - start
print(f"Response ({elapsed:.2f}s): {response.content[0].text}")
print(f"Tokens used: {response.usage.input_tokens} in / {response.usage.output_tokens} out\n")

print("=== Streaming Call ===")
start = time.time()
with client.messages.stream(
    model="claude-3-5-haiku-20241022",
    max_tokens=128,
    messages=[{"role": "user", "content": PROMPT}]
) as stream:
    print("Response: ", end="")
    for text in stream.text_stream:
        print(text, end="", flush=True)
elapsed = time.time() - start
print(f"\nTotal time: {elapsed:.2f}s")
