Spaces:
Runtime error
Runtime error
chat <- function(user_message, | |
history = NULL, | |
system_prompt = c("general", "code"), | |
api_key = Sys.getenv("OPENAI_API_KEY")) { | |
cat("API Key: ", api_key) | |
system <- get_system_prompt(system_prompt) | |
prompt <- prepare_prompt(user_message, system, history) | |
base_url <- "https://api.openai.com/v1" | |
body <- list(model = "gpt-3.5-turbo", | |
messages = prompt) | |
req <- | |
resp <- | |
request(base_url) |> | |
req_url_path_append("chat/completions") |> | |
req_auth_bearer_token(token = api_key) |> | |
req_headers("Content-Type" = "application/json") |> | |
req_user_agent("James Wade @jameshwade | OpenAI tutorial") |> | |
req_body_json(body) |> | |
req_retry(max_tries = 4) |> | |
req_throttle(rate = 15) |> | |
req_perform() | |
openai_chat_response <- resp |> resp_body_json(simplifyVector = TRUE) | |
openai_chat_response$choices$message$content | |
} | |
get_system_prompt <- function(system = c("general", "code")) { | |
rlang::arg_match(system) | |
instructions <- | |
switch(system, | |
"general" = "You are a helpful assistant.", | |
"code" = "You are a helpful chat bot that answers questions for an R programmer working in the RStudio IDE.") | |
list(list(role = "system", content = instructions)) | |
} | |
prepare_prompt <- function(user_message, system_prompt, history) { | |
user_prompt <- list(list(role = "user", content = user_message)) | |
c(system_prompt, history, user_prompt) |> purrr::compact() | |
} | |
update_history <- function(history, user_message, response) { | |
c(history, | |
list( | |
list(role = "user", content = user_message), | |
list(role = "assistant", content = response) | |
) | |
) |> purrr::compact() | |
} |