acep_claude: Interaccion con modelos Claude usando Structured Outputs

View source: R/acep_claude.R

acep_claudeR Documentation

Interaccion con modelos Claude usando Structured Outputs

Description

Funcion para interactuar con la API de Anthropic Claude utilizando Tool Calling para garantizar respuestas en formato JSON que cumplen estrictamente con un esquema predefinido. A diferencia de OpenAI, Anthropic utiliza "forced tool use" para lograr structured outputs, definiendo el esquema deseado como input_schema de una herramienta y forzando al modelo a usarla. Compatible con todos los modelos Claude.

Usage

acep_claude(
  texto,
  instrucciones,
  modelo = "claude-sonnet-4-20250514",
  api_key = Sys.getenv("ANTHROPIC_API_KEY"),
  schema = NULL,
  parse_json = TRUE,
  temperature = 0,
  max_tokens = 2000,
  top_p = 0.2,
  top_k = NULL
)

Arguments

texto

Texto a analizar con Claude. Puede ser una noticia, tweet, documento, etc.

instrucciones

Instrucciones en lenguaje natural que indican al modelo que hacer con el texto. Ejemplo: "Extrae todas las entidades nombradas", "Clasifica el sentimiento".

modelo

Modelo de Claude a utilizar. Modelos disponibles (ordenados por potencia): - Claude 4.5: '"claude-sonnet-4-5-20250929"' (mas reciente y potente), '"claude-haiku-4-5-20251001"' (rapido) - Claude 4.1: '"claude-opus-4-1-20250805"' (razonamiento excepcional) - Claude 4: '"claude-opus-4-20250514"', '"claude-sonnet-4-20250514"' - Claude 3.7: '"claude-3-7-sonnet-20250219"' - Claude 3.5: '"claude-3-5-haiku-20241022"' (rapido y economico) - Claude 3: '"claude-3-opus-20240229"', '"claude-3-haiku-20240307"' Por defecto: '"claude-sonnet-4-20250514"'. Ver: https://docs.anthropic.com/en/docs/about-claude/models

api_key

Clave de API de Anthropic. Si no se proporciona, busca la variable de entorno 'ANTHROPIC_API_KEY'. Para obtener una clave: https://console.anthropic.com/

schema

Esquema JSON que define la estructura de la respuesta. Puede usar 'acep_gpt_schema()' para obtener esquemas predefinidos o crear uno personalizado. Si es 'NULL', usa un esquema simple con campo "respuesta".

parse_json

Logico. Si 'TRUE' (por defecto), parsea automaticamente el JSON a un objeto R (lista o data frame). Si 'FALSE', devuelve el JSON como string.

temperature

Parametro de temperatura (0-1). Valores bajos (0-0.3) generan respuestas mas deterministas y consistentes. Valores altos (0.7-1) mas creativas. Por defecto: 0 (maxima determinismo). NOTA: Anthropic no permite usar 'temperature' y 'top_p' simultaneamente.

max_tokens

Numero maximo de tokens en la respuesta. Por defecto: 2000.

top_p

Parametro top-p para nucleus sampling (0-1). Controla la diversidad de la respuesta. Por defecto: 0.2. NOTA: Solo se usa si 'temperature' es 0 (valor por defecto).

top_k

Parametro top-k (solo disponible en Claude). Limita la seleccion a los K tokens mas probables. Por defecto: NULL (deshabilitado).

Details

**Diferencias importantes entre modelos Claude:**

- **Claude Sonnet 4.5** ('claude-sonnet-4-5'): NO permite 'temperature' y 'top_p' simultaneamente. La funcion solo envia uno de los dos si fue modificado del default.

- **Otros modelos Claude** ('claude-sonnet-4-20250514', 'claude-3-5-haiku-20241022', 'claude-3-opus-20240229', etc.): SI permiten ambos parametros simultaneamente.

La funcion detecta automaticamente el modelo y aplica la logica correcta.

Value

Si 'parse_json=TRUE', devuelve una lista o data frame con la respuesta estructurada segun el esquema. Si 'parse_json=FALSE', devuelve un string JSON.

Examples

## Not run: 
# Extraer entidades de un texto
texto <- "El SUTEBA convoco a un paro en Buenos Aires el 15 de marzo."
instrucciones <- "Extrae todas las entidades nombradas del texto."
schema <- acep_gpt_schema("extraccion_entidades")
resultado <- acep_claude(texto, instrucciones, schema = schema)
print(resultado)

# Analisis de sentimiento
texto <- "La protesta fue pacifica y bien organizada."
schema <- acep_gpt_schema("sentimiento")
resultado <- acep_claude(texto, "Analiza el sentimiento del texto", schema = schema)
print(resultado$sentimiento_general)

# Clasificar noticia
texto <- "Trabajadores reclamaron mejoras salariales."
schema <- acep_gpt_schema("clasificacion")
resultado <- acep_claude(texto, "Clasifica esta noticia", schema = schema)
print(resultado$categoria)

## End(Not run)

ACEP documentation built on May 14, 2026, 5:08 p.m.