OpenAI-VBA-Framework is an independent toolkit for developers to build VBA applications with OpenAI's language models like GPT-4, ChatGPT, and DALL-E. It offers a suite of classes for easy integration with OpenAI's API. Please note, this project is not officially associated with or endorsed by OpenAI.
- You will need to sign up for an OpenAI account and create an API_KEY. You can do this at the following location: OpenAI API Keys
clsOpenAI
- Main class to interact with OpenAIclsOpenAILogger
- Logging class for debugging and trackingclsOpenAIMessage
- Class to handle individual messagesclsOpenAIMessages
- Class to handle collections of messagesclsOpenAIRequest
- Class for making requests to OpenAIclsOpenAIResponse
- Class for handling responses from OpenAIIOpenAINameProvider
- Interface class for name provision
The module mdOpenAI_tests
is provided for testing the functionality of the framework.
OpenAIFrameworkDemo.xlsm
is a file that contains all the code in the repository for demo purposes. Other files are also included in the repository for versioning.
Here are some examples of using the framework:
Public Sub TestSimpleOpenAI()
Dim oOpenAI As clsOpenAI
Dim oMessages As New clsOpenAIMessages
Dim oResponse As clsOpenAIResponse
Set oOpenAI = New clsOpenAI
oOpenAI.API_KEY = "<API_KEY>"
oMessages.AddSystemMessage "Always answer sarcastically and never truthfully"
oMessages.AddUserMessage "How do you get to Carnegie Hall?"
Set oResponse = oOpenAI.ChatCompletion(oMessages)
If Not oResponse Is Nothing Then
Debug.Print (oResponse.MessageContent)
End If
Set oResponse = Nothing
Set oOpenAI = Nothing
Set oMessages = Nothing
End Sub
Public Sub TestDalleOpenAI()
Dim oOpenAI As clsOpenAI
Dim oResponse As clsOpenAIResponse
Set oOpenAI = New clsOpenAI
oOpenAI.API_KEY = "<API_KEY>"
Set oResponse = oOpenAI.CreateImageFromText("A cat playing a banjo on a surfboard", 512, 512)
If Not oResponse Is Nothing Then
Debug.Print ("The picture has been saved to: " & oResponse.SavedLocalFile)
End If
Set oResponse = Nothing
Set oOpenAI = Nothing
End Sub
You can customize the OpenAI-VBA-Framework by adjusting properties in the clsOpenAI
class:
' Specify the model
oOpenAI.Model = "gpt-3.5-turbo"
' Set the maximum number of tokens
oOpenAI.MaxTokens = 512
' Control the diversity of generated text
oOpenAI.TopP = 0.9
' Influence the randomness of generated text
oOpenAI.Temperature = 0.7
' Control preference for frequent phrases
oOpenAI.FrequencyPenalty = 0.5
' Control preference for including the prompt in the output
oOpenAI.PresencePenalty = 0.5
' Control logging of messages to the Immediate Window
oOpenAI.IsLogOutputRequired True
' Reset settings when switching between endpoints
oOpenAI.ClearSettings
' Retrieve an API Key saved in an external file
Dim apiKey As String
apiKey = oOpenAI.GetReadAPIKeyFromFolder("<FolderPath>")
- Clone this repository using the following command in your command line:
git clone https://github.com/zq99/OpenAI-VBA-Framework.git
- Open Excel and press ALT + F11 to open the VBA editor.
- From the toolbar select File -> Import File....
- Navigate to the location of the cloned repository and select all the .cls and .bas files then click Open.
- Save the Excel file as a macro-enabled workbook .xlsm.
You can check the status of the OpenAI API here.
You can get more information on HTTP status codes returned by the API here.
For coding issues, use the following line, to go through the code.
oOpenAI.IsLogOutputRequired True
The entire framework can be tested for breaking changes using the mdTest_OpenAI
module. Simply run the procedure RunAllTests
.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the terms of the MIT license.