import json
import os
import sys
import anthropic

key = os.environ.get('ANTHROPIC_API_KEY')
if not key:
    raise SystemExit('Configura primero una API key limitada a un workspace de la organización Console vinculada.')

# Requiere el entorno limpio del tutorial y un SDK oficial actualizado.
# Los reintentos están desactivados para esta única petición de diagnóstico.
client = anthropic.Anthropic(
    api_key=key,
    base_url='https://api.anthropic.com',
    timeout=30.0,
    max_retries=0,
)

try:
    raw = client.messages.with_raw_response.create(
        model='claude-haiku-5-5',
        max_tokens=128,
        thinking={'type': 'disabled'},
        output_config={'effort': 'low'},
        messages=[{'role': 'user', 'content': 'Responde solo: conexión API correcta'}],
    )
    message = raw.parse()  # Analiza la respuesta ya recibida; no envía una segunda petición.
    for name in ('request-id', 'anthropic-organization-id', 'anthropic-workspace-id'):
        print(name+':', raw.headers.get(name, '(no devuelto)'))
    print('model:', message.model)
    print('stop_reason:', message.stop_reason)
    print('text:', '\n'.join(block.text for block in message.content if block.type == 'text'))
    print('usage:', json.dumps(message.usage.model_dump(), ensure_ascii=False))
except anthropic.APIStatusError as exc:
    print(f'HTTP {exc.status_code}; request-id={exc.request_id}', file=sys.stderr)
    raise SystemExit(1)
except anthropic.APIConnectionError:
    print('La conexión no se completó o agotó el tiempo de espera; revisa los registros y la red antes de decidir si reintentas.', file=sys.stderr)
    raise SystemExit(1)
finally:
    client.close()
