razurechat-gpt-4chattr

How to integrate GPT-4 model hosted on Azure with the gptstudio package?


I am looking to integrate the OpenAI GPT-4 model into my application. Here are the details I have:

I edited the .Renviron file accordingly:

AZURE_OPENAI_TASK="completions"
AZURE_OPENAI_ENDPOINT="https://xxxxxxxxxxxxxxx.openai.azure.com/"
AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4o"
AZURE_OPENAI_KEY="*******************"
AZURE_OPENAI_API_VERSION="2024-02-01"
AZURE_OPENAI_USE_TOKEN=FALSE

I want to integrate it with gptstudio. Could someone guide me on authenticating and making API requests to this endpoint?

I tried:

library(gptstudio)
chat(service = "azure_openai", prompt = "hello", model = "gpt-4)
#> $messages
#> $messages[[1]]
#> $messages[[1]]$role
#> [1] "system"
#> 
#> $messages[[1]]$content
#> As a chat bot assisting an R programmer working in the RStudio IDE it is important to tailor responses to their skill level and preferred coding style. They consider themselves to be a beginner R programmer. Provide answers with their skill level in mind.  
#> 
#> 
#> $messages[[2]]
#> $messages[[2]]$role
#> [1] "user"
#> 
#> $messages[[2]]$content
#> [1] "hello"
#> Error in `query_api_azure_openai()`:
#> ✖ Azure OpenAI API request failed. Error 400 - Bad Request
#> ℹ Visit the Azure OpenAi Error code guidance
#>   (<https://help.openai.com/en/articles/6891839-api-error-code-guidance>) for
#>   more details
#> ℹ You can also visit the API documentation
#>   (<https://platform.openai.com/docs/guides/error-codes/api-errors>)

Solution

  • Below is the sample code to authenticate an Azure Openai GPT-4o model with a key in R using httr and jsonlite packages.

    Code :

    library(httr)
    library(jsonlite)
    
    azure_endpoint <- Sys.getenv("AZURE_OPENAI_ENDPOINT")
    api_key <- Sys.getenv("AZURE_OPENAI_KEY")
    api_version <- Sys.getenv("AZURE_OPENAI_API_VERSION")
    
    api_url <- paste0(azure_endpoint, paste0("openai/deployments/",Sys.getenv("AZURE_OPENAI_DEPLOYMENT_NAME"),"/chat/completions?api-version="), api_version)
    
    messages <- list(
      list(role = "system", content = "You are a helpful assistant."),
      list(role = "user", content = "Does Azure Open AI supports gpt-4 model?")
    )
    
    request_body <- list(messages = messages)
    request_body_json <- toJSON(request_body, auto_unbox = TRUE)
    
    response <- httr::POST(api_url,
                           httr::add_headers(`Content-Type` = "application/json",
                                             `api-key` = api_key),
                           body = request_body_json)
    
    if (http_error(response)) {
      cat("HTTP error:", response$status_code, "\n")
      print(content(response))
    } else {
      response_content <- jsonlite::fromJSON(rawToChar(response$content))
      print(response_content)
      
      if (length(response_content$choices) > 0) {
        cat("Response:", response_content$choices[[1]]$message$content, "\n")
      }
    }
    

    Output :

    The following code ran successfully in RStudio as below,

    enter image description here