Funcion para interactuar con modelos de IA a traves de la API de TogetherAI. TogetherAI proporciona acceso a modelos open-source de alta calidad como Llama, Qwen, Mistral, DeepSeek y muchos otros. Soporta JSON mode para respuestas estructuradas. La API es compatible con el formato de OpenAI, lo que facilita la integracion.
Usage
acep_together(
texto,
instrucciones,
modelo = "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",
api_key = Sys.getenv("TOGETHER_API_KEY"),
schema = NULL,
parse_json = TRUE,
temperature = 0,
max_tokens = 2000,
top_p = 0.2,
top_k = 50,
repetition_penalty = 1,
stop = NULL,
prompt_system = "json"
)Arguments
- texto
Texto a analizar. 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 a utilizar. Ejemplos populares: - Moonshot: `"moonshotai/Kimi-K2-Instruct-0905"` (128K context) - Meta Llama: `"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo"`, `"meta-llama/Llama-3.3-70B-Instruct-Turbo"` - Qwen: `"Qwen/Qwen2.5-72B-Instruct-Turbo"`, `"Qwen/QwQ-32B-Preview"` - Mistral: `"mistralai/Mixtral-8x22B-Instruct-v0.1"`, `"mistralai/Mistral-7B-Instruct-v0.3"` - DeepSeek: `"deepseek-ai/DeepSeek-V3"`, `"deepseek-ai/DeepSeek-R1"` - Google: `"google/gemma-2-27b-it"`, `"google/gemma-2-9b-it"` Por defecto: `"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo"`. Ver lista completa: https://docs.together.ai/docs/chat-models
- api_key
Clave de API de TogetherAI. Si no se proporciona, busca la variable de entorno `TOGETHER_API_KEY`. Para obtener una clave: https://api.together.xyz/settings/api-keys
- 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". NOTA: TogetherAI soporta JSON mode con
response_format: {type: "json_object"}para modelos compatibles. Consulta la lista de modelos soportados en: https://docs.together.ai/docs/json-mode- 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-2). Valores bajos (0-0.3) generan respuestas mas deterministas. Valores altos (0.7-1) mas creativas. Por defecto: 0.
- max_tokens
Numero maximo de tokens en la respuesta. Por defecto: 2000.
- top_p
Parametro top-p para nucleus sampling (0-1). Por defecto: 0.2.
- top_k
Parametro top-k para muestreo. Limita las opciones a los k tokens mas probables. Por defecto: 50. Usar 0 o -1 para desactivar.
- repetition_penalty
Penalizacion por repeticion de tokens (0.1-2.0). Valores > 1 penalizan repeticiones. Por defecto: 1.
- stop
Secuencias de parada opcionales. Vector de strings que detienen la generacion. Por defecto: NULL.
- prompt_system
Prompt del sistema que define el comportamiento del modelo. Opciones: - `"json"` (por defecto): Usa un prompt estructurado que instruye al modelo a responder SOLO en formato JSON siguiendo el esquema proporcionado. Agrega
response_format: {type: "json_object"}- `"texto"`: Usa un prompt simple para respuestas en texto plano sin estructura. Elimina automaticamente el contenido de pensamiento (<think>...</think>) de modelos como Qwen3-Thinking - String personalizado: Cualquier texto que definas como prompt del sistema
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.
Details
**Sobre TogetherAI:**
TogetherAI es una plataforma especializada en modelos open-source que ofrece: - Precios competitivos y modelos gratuitos - Alta velocidad de inferencia optimizada - Acceso a modelos de ultima generacion (Llama, Qwen, DeepSeek, etc.) - API compatible con formato OpenAI
**JSON Mode:**
La funcion utiliza JSON mode de TogetherAI para obtener respuestas estructuradas.
Cuando `prompt_system = "json"`, la funcion:
1. Incluye el esquema JSON en el prompt del sistema (REQUERIDO por TogetherAI)
2. Agrega response_format: {type: "json_object"} al body de la peticion
3. Instruye explicitamente al modelo a responder SOLO en JSON
Esta combinacion de esquema textual + response_format asegura respuestas JSON validas
y consistentes en cada llamada.
**Modelos compatibles con JSON mode:**
Los modelos mas recientes que soportan JSON mode incluyen: - Qwen3, Qwen2.5 (Instruct, Coder, VL, Thinking) - DeepSeek-R1, DeepSeek-V3 - Meta Llama 3.1, 3.3, 4 - Mistral 7B Instruct - Google Gemma
Ver lista completa: https://docs.together.ai/docs/json-mode
**Validaciones:**
La funcion incluye validacion de limite de tokens. Si la respuesta es truncada por `max_tokens`, devuelve un mensaje claro indicando que se necesitan mas tokens.
Examples
if (FALSE) { # \dontrun{
# Configurar API key
Sys.setenv(TOGETHER_API_KEY = "tu-api-key")
# Usar Llama 3.1 70B (rapido y potente)
texto <- "El SUTEBA convoco a un paro en Buenos Aires el 15 de marzo."
resultado <- acep_together(texto, "Extrae las entidades nombradas",
modelo = "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",
schema = acep_gpt_schema("extraccion_entidades"))
# Usar Qwen para analisis de sentimiento
resultado_qwen <- acep_together(texto, "Clasifica el sentimiento",
modelo = "Qwen/Qwen2.5-72B-Instruct-Turbo",
schema = acep_gpt_schema("sentimiento"))
# Usar DeepSeek-V3
resultado_ds <- acep_together(texto, "Analiza el texto",
modelo = "deepseek-ai/DeepSeek-V3",
schema = acep_gpt_schema("clasificacion"))
# Usar Moonshot Kimi con 128K context
resultado_kimi <- acep_together(texto, "Resume el texto",
modelo = "moonshotai/Kimi-K2-Instruct-0905",
schema = acep_gpt_schema("resumen"))
# Usar modo texto plano (sin estructura JSON)
resultado_texto <- acep_together(texto, "Resume este texto en una frase",
modelo = "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",
prompt_system = "texto",
parse_json = FALSE)
print(resultado_texto) # Devuelve string de texto plano
# Usar prompt del sistema personalizado
resultado_custom <- acep_together(
texto,
"Analiza el sentimiento",
modelo = "Qwen/Qwen2.5-72B-Instruct-Turbo",
prompt_system = paste(
"Eres un experto en analisis de sentimientos politicos.",
"Se objetivo y neutral."
),
parse_json = FALSE
)
} # }