--- title: "Primeros pasos con ellmercodex" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Primeros pasos con ellmercodex} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = FALSE) ``` > *English version:* `vignette("ellmercodex", package = "ellmercodex")`. `ellmercodex` te permite usar tu plan de ChatGPT desde R como un proveedor de [`ellmer`](https://ellmer.tidyverse.org/). Inicias sesión una vez con tu cuenta de ChatGPT y `chat_codex()` te da un objeto `Chat` de `ellmer` común y corriente: sin clave de API y sin el CLI de Codex. Usa el flujo documentado por OpenAI ["Sign in with ChatGPT"](https://developers.openai.com/siwc/token-sharing-open-source) para apps de código abierto que se ejecutan localmente, y la API pública de Responses. El uso del plan de ChatGPT es una vista previa de OpenAI, y `ellmercodex` no está afiliado a OpenAI ni cuenta con su respaldo. Los ejemplos de este artículo necesitan una sesión iniciada, así que no se ejecutan al construirlo. Las salidas que se muestran provienen de una sesión real. ## Comprueba tu instalación ```{r, eval = TRUE} library(ellmercodex) codex_available() ``` `codex_available()` comprueba que estén instaladas las dependencias y la versión de `ellmer` soportada. No lee tus credenciales ni se conecta a la red, así que `TRUE` no garantiza que una solicitud vaya a funcionar. ## Inicia sesión ```{r} codex_login() ``` `codex_login()` abre tu navegador, donde eliges una cuenta y un espacio de trabajo de ChatGPT y autorizas el uso del plan. La credencial se guarda de forma privada y se renueva sola, así que solo necesitas hacerlo una vez por equipo. `vignette("authentication-es")` explica dónde se guarda y cómo cerrar sesión o cambiar de cuenta. ## Tu primer chat ```{r} chat <- chat_codex(model = "gpt-6-luna", effort = "low") chat$chat("Hola desde R") #> ¡Hola! ¿En qué puedo ayudarte con R? ``` Cada llamada a `$chat()` se suma al historial de la conversación, así que las preguntas siguientes tienen el contexto anterior. Usa `$stream()` para ver la respuesta a medida que se genera: ```{r} chat$stream("Dame tres ideas para nombrar un paquete de R.") ``` Si no indicas `model`, `chat_codex()` elige un modelo utilizable del catálogo de tu cuenta. `vignette("models-es")` explica cómo listar los modelos, elegir uno y fijar el esfuerzo de razonamiento. ## Es un Chat de ellmer `chat_codex()` devuelve un `Chat` de `ellmer` normal, así que la documentación de `ellmer` se aplica. Esto funciona igual que con cualquier otro proveedor: * **Datos estructurados** con `$chat_structured()`: consulta el artículo de `ellmer` sobre [datos estructurados](https://ellmer.tidyverse.org/articles/structured-data.html) (en inglés). * **Llamadas a herramientas** con `$register_tool()`: consulta [tool/function calling](https://ellmer.tidyverse.org/articles/tool-calling.html) (en inglés). * **Streaming y asincronía** con `$stream()`, `$chat_async()` y `$stream_async()`, incluida la cancelación con `ellmer::stream_controller()`: consulta [streaming and async APIs](https://ellmer.tidyverse.org/articles/streaming-async.html) (en inglés). * **Imágenes y PDF** con `ellmer::content_image_file()`, `ellmer::content_pdf_file()` y funciones similares. * **Clonado e historial** con `$clone()`, `$get_turns()` y `$set_turns()`: consulta [programming with ellmer](https://ellmer.tidyverse.org/articles/programming.html) (en inglés). `vignette("text-analysis-es")` combina datos estructurados y herramientas en una tarea real de análisis de texto. Algunas cosas son distintas por cómo funciona el uso del plan de ChatGPT: `parallel_chat()` y `batch_chat()` no están soportadas, y se rechazan argumentos como `temperature` y `max_tokens`. `vignette("errors-and-limits-es")` los enumera y muestra cómo manejar los errores. ## Más información * `vignette("authentication-es")`: inicio de sesión, credenciales guardadas y cierre de sesión. * `vignette("models-es")`: modelos y esfuerzo de razonamiento. * `vignette("text-analysis-es")`: datos estructurados y herramientas sobre texto real. * `vignette("errors-and-limits-es")`: clases de condición, límites del plan y lo que no está soportado. ## Cómo citar Para citar `ellmercodex` en publicaciones, use: Herrera, S. (2026). *ellmercodex: 'ChatGPT' Plan Provider for 'ellmer'*. R package version 0.2.0, ```bibtex @Manual{ellmercodex, title = {{ellmercodex}: 'ChatGPT' Plan Provider for 'ellmer'}, author = {Simon Herrera}, year = {2026}, note = {R package version 0.2.0}, doi = {10.32614/CRAN.package.ellmercodex}, url = {https://CRAN.R-project.org/package=ellmercodex}, } ```