## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = ellmer:::openai_key_exists() ) ## ----setup-------------------------------------------------------------------- library(ellmer) ## ----eval=FALSE--------------------------------------------------------------- # chat <- chat_openai(model = "gpt-4o") # chat$chat("How long ago exactly was the moment Neil Armstrong touched down on the moon?") # #> Neil Armstrong touched down on the moon on July 20, 1969, at 20:17 UTC. To determine how long ago that # #> was from the current year of 2023, we can calculate the difference in years, months, and days. # #> # #> From July 20, 1969, to July 20, 2023, is exactly 54 years. If today's date is after July 20, 2023, you # #> would add the additional time since then. If it is before, you would consider slightly less than 54 # #> years. # #> # #> As of right now, can you confirm the current date so we can calculate the precise duration? ## ----------------------------------------------------------------------------- #' Gets the current time in the given time zone. #' #' @param tz The time zone to get the current time in. #' @return The current time in the given time zone. get_current_time <- function(tz = "UTC") { format(Sys.time(), tz = tz, usetz = TRUE) } ## ----eval=FALSE--------------------------------------------------------------- # get_current_time() # #> [1] "2024-09-18 17:47:14 UTC" ## ----------------------------------------------------------------------------- chat <- chat_openai(model = "gpt-4o") chat$register_tool(tool( get_current_time, "Gets the current time in the given time zone.", tz = type_string( "The time zone to get the current time in. Defaults to `\"UTC\"`.", required = FALSE ) )) ## ----eval=FALSE--------------------------------------------------------------- # chat$chat("How long ago exactly was the moment Neil Armstrong touched down on the moon?") # #> Neil Armstrong touched down on the moon on July 20, 1969, at 20:17 UTC. # #> # #> To calculate the time elapsed from that moment until the current time (September 18, 2024, 17:47:19 # #> UTC), we need to break it down. # #> # #> 1. From July 20, 1969, 20:17 UTC to July 20, 2024, 20:17 UTC is exactly 55 years. # #> 2. From July 20, 2024, 20:17 UTC to September 18, 2024, 17:47:19 UTC, we need to further break down: # #> # #> - From July 20, 2024, 20:17 UTC to September 18, 2024, 17:47:19 UTC, which is: # #> - 1 full month (August) # #> - 30 – 20 = 10 days of July # #> - 18 days of September until 17:47:19 UTC # #> # #> So, in detail: # #> - 55 years # #> - 1 month # #> - 28 days # #> - From July 20, 2024, 20:17 UTC to July 20, 2024, 17:47:19 UTC: 23 hours, 30 minutes, and 19 seconds # #> # #> Time Total: # #> - 55 years # #> - 1 month # #> - 28 days # #> - 23 hours # #> - 30 minutes # #> - 19 seconds # #> # #> This is the exact time that has elapsed since Neil Armstrong's historic touchdown on the moon. ## ----------------------------------------------------------------------------- raining <- c(London = "heavy", Houston = "none", Chicago = "overcast") temperature <- c(London = "cool", Houston = "hot", Chicago = "warm") wind <- c(London = "strong", Houston = "weak", Chicago = "strong") get_weather <- function(cities) { data.frame( city = cities, raining = unname(raining[cities]), temperature = unname(temperature[cities]), wind = unname(wind[cities]) ) } chat <- chat_openai() chat$register_tool(tool( get_weather, "Report on weather conditions in multiple cities. For efficiency, request all weather updates using a single tool call", cities = type_array("City names", type_string()) )) chat$chat("Give me a weather udpate for London and Chicago")