#!/usr/bin/env python3
"""
Generated test file for Conversation ID LLM Test
Framework: anthropic
Execution mode: sync
Streaming: yes"""

import os
import sentry_sdk

from anthropic import Anthropic


sentry_sdk.init(
    dsn=os.environ.get("SENTRY_DSN"),
    traces_sample_rate=1.0,
    send_default_pii=True,
    stream_gen_ai_spans=True,
)

client = Anthropic()

def main():
    # Turn 1
    sentry_sdk.ai.set_conversation_id("conv-a")
    system_prompt = None
    messages = []
    system_prompt = "You are a helpful assistant."
    messages.append({"role": "user", "content": "What is the capital of France?"})

    kwargs = {
        "model": "claude-haiku-4-5",
        "max_tokens": 1024,
        "messages": messages,
    }
    if system_prompt:
        kwargs["system"] = system_prompt

    with client.messages.stream(**kwargs) as stream:
        collected_content = []
        for event in stream:
            if event.type == "content_block_delta":
                collected_content.append(event.delta.text)
        
        full_response = "".join(collected_content)
        print(f"Turn 1 Response: {full_response}")

    # Turn 2
    sentry_sdk.ai.set_conversation_id("conv-b")
    system_prompt = None
    messages = []
    system_prompt = "You are a math tutor."
    messages.append({"role": "user", "content": "What is 2 + 2?"})

    kwargs = {
        "model": "claude-haiku-4-5",
        "max_tokens": 1024,
        "messages": messages,
    }
    if system_prompt:
        kwargs["system"] = system_prompt

    with client.messages.stream(**kwargs) as stream:
        collected_content = []
        for event in stream:
            if event.type == "content_block_delta":
                collected_content.append(event.delta.text)
        
        full_response = "".join(collected_content)
        print(f"Turn 2 Response: {full_response}")

    # Turn 3
    sentry_sdk.ai.set_conversation_id("conv-a")
    system_prompt = None
    messages = []
    system_prompt = "You are a helpful assistant."
    messages.append({"role": "user", "content": "What is the capital of France?"})
    messages.append({"role": "assistant", "content": "The capital of France is Paris."})
    messages.append({"role": "user", "content": "What about Germany?"})

    kwargs = {
        "model": "claude-haiku-4-5",
        "max_tokens": 1024,
        "messages": messages,
    }
    if system_prompt:
        kwargs["system"] = system_prompt

    with client.messages.stream(**kwargs) as stream:
        collected_content = []
        for event in stream:
            if event.type == "content_block_delta":
                collected_content.append(event.delta.text)
        
        full_response = "".join(collected_content)
        print(f"Turn 3 Response: {full_response}")

    # Turn 4
    sentry_sdk.ai.set_conversation_id("conv-b")
    system_prompt = None
    messages = []
    system_prompt = "You are a math tutor."
    messages.append({"role": "user", "content": "What is 2 + 2?"})
    messages.append({"role": "assistant", "content": "2 + 2 equals 4."})
    messages.append({"role": "user", "content": "What about 3 + 3?"})

    kwargs = {
        "model": "claude-haiku-4-5",
        "max_tokens": 1024,
        "messages": messages,
    }
    if system_prompt:
        kwargs["system"] = system_prompt

    with client.messages.stream(**kwargs) as stream:
        collected_content = []
        for event in stream:
            if event.type == "content_block_delta":
                collected_content.append(event.delta.text)
        
        full_response = "".join(collected_content)
        print(f"Turn 4 Response: {full_response}")

if __name__ == "__main__":
    with sentry_sdk.start_transaction(op="test", name="Conversation ID LLM Test"):
        main()
    sentry_sdk.flush(timeout=5)
