#!/usr/bin/env python3
"""Tu primera llamada a la API de un LLM.

Requisitos:
    uv pip install anthropic
    export ANTHROPIC_API_KEY="sk-ant-..."    (o en un archivo .env que NO subas a git)

Uso: python3 primera_llamada.py "¿Qué es una red neuronal? Responde en una frase."
"""

import os
import sys

import anthropic

MODELO = os.environ.get("LLM_MODEL", "claude-opus-5-5")


def main():
    pregunta = " ".join(sys.argv[1:]) or "¿Qué es una red neuronal? Responde en una frase."
    cliente = anthropic.Anthropic()  # lee ANTHROPIC_API_KEY del entorno
    try:
        respuesta = cliente.messages.create(
            model=MODELO,
            max_tokens=1024,
            messages=[{"role": "user", "content": pregunta}],
        )
    except anthropic.AuthenticationError:
        sys.exit("Error 401: la clave de API no es válida. Revisa ANTHROPIC_API_KEY.")
    except anthropic.RateLimitError:
        sys.exit("Error 429: has superado el límite de uso. Espera un poco y vuelve a intentarlo.")
    except anthropic.APIConnectionError:
        sys.exit("No hay conexión con la API. Comprueba tu red.")
    except anthropic.APIStatusError as e:
        sys.exit(f"Error {e.status_code} de la API: {e.message}")

    if respuesta.stop_reason == "refusal":
        sys.exit("El modelo ha declinado responder. Prueba a reformular la pregunta.")
    for bloque in respuesta.content:
        if bloque.type == "text":
            print(bloque.text)
    print(f"\n({respuesta.usage.input_tokens} tokens de entrada, {respuesta.usage.output_tokens} de salida)")


if __name__ == "__main__":
    main()
