Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.2 kB
10
Indexable
Never
library(shiny)
library(tidychatmodels)

# Define la interfaz de usuario
ui <- fluidPage(
  titlePanel("Aplicación Shiny - Traductor"),
  
  # Usa un diseño de ubicación simple de elementos
  fluidRow(
    column(width = 12,
           # Area de texto para ingresar el prompt
           textAreaInput("prompt", "Escribe el texto a traducir:", value = "", rows = 3, placeholder = "Escribe el texto a traducir..."),
           # Botón para procesar el prompt
           actionButton("process", "Traducir"),
           # Área de texto para mostrar la respuesta, ubicada debajo
           textAreaInput("response", "Traducción:", value = "", rows = 10, placeholder = "Aquí se mostrará la traducción")
    )
  )
)

# Define el comportamiento del servidor
server <- function(input, output, session) {
  # Creamos el chat usando la API Key (permiso para conectarnos a Open AI)
  chat <- create_chat("openai", "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")
  
  # Le indicamos al sistema qué función realizará
  chat <- chat %>% 
    add_model("gpt-3.5-turbo") %>% 
    add_params("temperature" = 0, "max_tokens" = 250) %>% 
    add_message(
      role = "system",
      message = "Eres un sistema traductor. Todo lo que escriba el usuario deberá ser traducido del español al inglés y viceversa. Tú eres responsable de identificar el idioma original y el idioma destino. No tienes permitido hacer nada más que traducir."
    )
  
  # Observar el clic en el botón y actualizar la respuesta
  observeEvent(input$process, {
    # Le hacemos una solicitud al sistema
    chat <- chat %>% 
      add_message(
        role = "user",
        message = input$prompt
      )
    
    # Nos conectamos a la API de Open AI (tener cuidado, cada llamada genera costo)
    chat <- chat %>% perform_chat()
    
    # Extraemos los mensajes desde la API de Open AI
    messages <- chat %>% extract_chat(silent = TRUE)
    
    # Actualiza el área de texto
    updateTextAreaInput(session, "response", value = as.character(messages[nrow(messages), "message"]))
  })
}

# Ejecuta la aplicación Shiny
shinyApp(ui = ui, server = server)
Leave a Comment