Skip to content

S3#18

Open
JohnCoene wants to merge 2 commits intoAlbertRapp:masterfrom
JohnCoene:s3
Open

S3#18
JohnCoene wants to merge 2 commits intoAlbertRapp:masterfrom
JohnCoene:s3

Conversation

@JohnCoene
Copy link

Hi Albert,

Thanks for the package. I thought I would change the API to using R's S3 interface namely so that it is extensible; this PR enables anyone to add new vendors.

I know this is quite a large PR which changes a lot of the source code so I'd totally understand if you do not want to merge it.

The idea is that change create_chat to a generic that returns an object of class tidychat on which we can then call various methods.

I could for instance bring support for a new vendor via:

new_chat_xyz <- function(key){
  req <- httr2::request(
    base_url = "https://api.xyz.com/"
  ) |>
    httr2::req_headers(
      "Authorization" = paste("Bearer", key),
      "Content-Type" = "application/json"
    )
  new_chat(req, engine = "xyz")
}

Either the existing methods to add_message, add_param, etc. for the object tidychat work fine with my API in which case I can leave it as is. Otherwise I can create methods.

add_message.xyz <- function(chat, message) {
  messages <- get_messages(chat)

  messages[[length(messages) + 1]] <- list(
    content = as.character(message)
  )

  attr(chat, "messages") <- messages
  chat
}

@AlbertRapp
Copy link
Owner

Hi @JohnCoene, love the idea. Haven't yet had time to take a look at the code. But I do want to do that within the next weeks. Promise!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants