## ----eval=FALSE---------------------------------------------------------------
# prompt <- "Hi there!" |>
#   prompt_wrap(
#     modify_fn = function(base_prompt) {
#       paste(base_prompt, "How are you?", sep = "\n\n")
#     }
#   )

## ----eval=FALSE---------------------------------------------------------------
# prompt <- "Hi there!" |>
#   prompt_wrap(\(x) paste(x, "How are you?", sep = "\n\n"))

## ----eval=FALSE---------------------------------------------------------------
# my_prompt_wrap <- function(prompt) {
#   modify_fn <- function(base_prompt) {
#     paste(base_prompt, "How are you?", sep = "\n\n")
#   }
# 
#   prompt_wrap(prompt, modify_fn)
# }
# prompt <- "Hi there!" |>
#   my_prompt_wrap()

## ----eval=FALSE---------------------------------------------------------------
# answer_as_boolean <- function(
#     prompt,
#     true_definition = NULL,
#     false_definition = NULL,
#     add_instruction_to_prompt = TRUE
# ) {
#   instruction <- "You must answer with only TRUE or FALSE (use no other characters)."
#   if (!is.null(true_definition))
#     instruction <- paste(instruction, glue::glue("TRUE means: {true_definition}."))
#   if (!is.null(false_definition))
#     instruction <- paste(instruction, glue::glue("FALSE means: {false_definition}."))
# 
#   modify_fn <- function(original_prompt_text) {
#     if (!add_instruction_to_prompt) {
#       return(original_prompt_text)
#     }
# 
#     glue::glue("{original_prompt_text}\n\n{instruction}")
#   }
# 
#   extraction_fn <- function(x) {
#     normalized <- tolower(trimws(x))
#     if (normalized %in% c("true", "false")) {
#       return(as.logical(normalized))
#     }
#     return(llm_feedback(instruction))
#   }
# 
#   prompt_wrap(prompt, modify_fn, extraction_fn)
# }

