Skip to contents

This function creates a jsonl file from a tibble.

Usage

create_jsonl_records(
  prompt,
  id = seq_along(prompt),
  model = "gpt-4o-mini",
  temperature = 0,
  max_tokens = NULL,
  seed = NULL,
  prefix = "request-"
)

Arguments

prompt

(list) The messages to be included in the jsonl record.

id

(int) The id of the record.

model

(chr, default = "gpt-4o-mini") The model to be used.

temperature

(dbl) the temperature to use

max_tokens

(dbl) the maximum number of tokens

seed

(dbl) the seed to use

prefix

(chr, default = "request-") The prefix of the custom id.

Value

(chr) The jsonl records.

Examples

  library(dplyr)
#> 
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#> 
#>     filter, lag
#> The following objects are masked from ‘package:base’:
#> 
#>     intersect, setdiff, setequal, union
  library(purrr)
  library(stringr)
  library(gpteasyr)

  db <- tibble(
    commenti = c(
      "deadly boring!",
      "A bit boring, but interesting",
      "How nice, I loved it!"
    )
  )

  role <- "Sei l'assistente di un docente universitario."
  context <- "State analizzando i commenti degli studenti dell'ultimo corso."
  task <- "Il tuo compito è capire se sono soddisfatti del corso."
  instructions <- "Analizza i commenti e decidi se sono soddisfatti o meno."
  output <- "Riporta 'soddisfatto' o 'insoddisfatto'."
  style <- "Non aggiungere nessun commento, restituisci solo ed
    esclusivamente la classificazione."
  examples <- "
  commento_1: 'Mi è piaciuto molto il corso; davvero interessante.'
  classificazione_1: 'soddisfatto'
  commento_2: 'Non mi è piaciuto per niente; una noia mortale'
  classificazione_2: 'insoddisfatto'
  "

  sys_prompt <- compose_sys_prompt(role = role, context = context)
  usr_prompt <- compose_usr_prompt(
    task = task, instructions = instructions, output = output,
    style = style, examples = examples
  )

  prompter <- create_usr_data_prompter(usr_prompt = usr_prompt)

  res <- db |>
    mutate(
      id = row_number(),
      prompt = commenti |>
      map(
        \(x) compose_prompt_api(
          sys_prompt = sys_prompt,
          usr_prompt = prompter(x)
        )
      )
    )

  jsonl_direct <- create_jsonl_records(res[["prompt"]], res[["id"]]) |>
    str_c(collapse = "\n")

  jsonl_on_db <- res |>
    mutate(
      jsonl = create_jsonl_records(prompt, id)
    ) |>
    pull(jsonl) |>
    str_c(collapse = "\n")

  identical(jsonl_on_db, jsonl_direct)
#> [1] TRUE