@@ -7,7 +7,7 @@ Attribute VB_Name = "mdOpenAI_TESTS"
77' Author: Zaid Qureshi
88' GitHub: https://github.com/zq99
99'
10- ' Modules in the Framework:
10+ ' Classes / Modules in the Framework:
1111' - clsOpenAI
1212' - clsOpenAILogger
1313' - clsOpenAIMessage
@@ -26,12 +26,6 @@ Attribute VB_Name = "mdOpenAI_TESTS"
2626
2727Option Explicit
2828
29- #If VBA7 Then
30- Declare PtrSafe Sub Sleep Lib "kernel32 " (ByVal dwMilliseconds As LongPtr )
31- #Else
32- Declare Sub Sleep Lib "kernel32 " (ByVal dwMilliseconds As Long )
33- #End If
34-
3529'******************************************************
3630' GET YOUR API KEY: https://openai.com/api/
3731Public Const API_KEY As String = "<API_KEY>"
@@ -48,23 +42,26 @@ Public Sub RunAllTests()
4842
4943 oOpenAI.IsLogOutputRequired True
5044 oOpenAI.API_KEY = API_KEY
45+
46+ Debug.Assert oOpenAI.API_KEY = API_KEY
47+ Debug.Assert oOpenAI.CallsToAPICount = 0
5148
5249 ' Assign all posssible MSXML types
5350 arrMSXMLTypes(1 ) = Empty
5451 arrMSXMLTypes(2 ) = oOpenAI.MSXML_XML_VALUE
5552 arrMSXMLTypes(3 ) = oOpenAI.MSXML_SERVER_XML_VALUE
5653
57- ' Declare a variable for the loop index
5854 Dim i As Integer
5955
6056 ' Loop through each item in the array
6157 For i = LBound(arrMSXMLTypes) To UBound(arrMSXMLTypes)
6258 DoEvents
6359 oOpenAI.Log arrMSXMLTypes(i)
6460 Call TestOpenAI (oOpenAI, arrMSXMLTypes(i))
65- Sleep 1000
61+ oOpenAI.Pause
6662 Next i
67-
63+
64+ Debug.Assert oOpenAI.CallsToAPICount > 0
6865 Set oOpenAI = Nothing
6966
7067End Sub
@@ -76,43 +73,72 @@ Private Sub TestOpenAI(ByVal oOpenAI As clsOpenAI, Optional ByVal strRequestXMLT
7673 Dim oResponse As clsOpenAIResponse
7774
7875 If strRequestXMLType <> Empty Then
79- oOpenAI.MSXMLType = oOpenAI.MSXML_SERVER_XML_VALUE
76+ oOpenAI.MSXMLType = strRequestXMLType
77+ Debug.Assert oOpenAI.MSXMLType = strRequestXMLType
8078 End If
8179
82- 'All output to sent to immediate window
80+ 'Test temperature can be changed
81+ oOpenAI.Temperature = 0.9
82+ Debug.Assert oOpenAI.Temperature = 0.9
83+
84+ 'Set least amount of variation for testing
8385 oOpenAI.Temperature = 0
86+ Debug.Assert oOpenAI.Temperature = 0
8487
8588 '*********************************************
8689 '(1) Simple chat test
8790 '*********************************************
8891
89- oMessages.AddSystemMessage "Every answer should only contain alphanumeric characters, and every letter should be capitalized"
90- oMessages.AddUserMessage "What is the capital of France?"
91-
92- Set oResponse = oOpenAI.ChatCompletion(oMessages)
92+ 'Test with different models
93+ Dim arrModels(1 To 2 ) As String
94+ Dim i As Integer
9395
94- Debug.Assert Not oResponse Is Nothing
95- Debug.Assert Len(oResponse.MessageContent) > 0
96- Debug.Assert oResponse.MessageContent = "PARIS"
97- Debug.Assert oResponse.MessageRole = "assistant"
96+ arrModels(1 ) = Empty
97+ arrModels(2 ) = "gpt-4"
98+
99+ For i = LBound(arrModels) To UBound(arrModels)
100+
101+ DoEvents
98102
99- oOpenAI.Log oMessages.GetAllMessages
100- oOpenAI.Log oResponse.MessageContent
101- oOpenAI.Log oResponse.MessageRole
103+ If arrModels(i) <> Empty Then
104+ oOpenAI.Model = arrModels(i)
105+ Debug.Assert oOpenAI.Model = arrModels(i)
106+ End If
107+
108+ oOpenAI.Log "Testing with model: " & IIf (oOpenAI.Model = Empty , "[None]" , oOpenAI.Model)
109+
110+ oMessages.AddSystemMessage "Every answer should only contain alphanumeric characters, and every letter should be capitalized"
111+ oMessages.AddUserMessage "What is the capital of France?"
112+
113+ Set oResponse = oOpenAI.ChatCompletion(oMessages)
114+
115+ Debug.Assert Not oResponse Is Nothing
116+ Debug.Assert Len(oResponse.MessageContent) > 0
117+ Debug.Assert oResponse.MessageContent = "PARIS"
118+ Debug.Assert oResponse.MessageRole = "assistant"
119+
120+ oOpenAI.Log oMessages.GetAllMessages
121+ oOpenAI.Log oResponse.MessageContent
122+ oOpenAI.Log oResponse.MessageRole
123+
124+ oOpenAI.Pause
125+
126+ Next i
102127
103128 '*********************************************
104129 '(2) Simple chat test with temperature change
105130 '*********************************************
106131
107- oMessages.AddUserMessage "write a string of digits in order up to 9"
108- oOpenAI.Temperature = 0.9
132+ oMessages.AddUserMessage "write a string of digits in order up to 9 starting with 1 and ending with 9"
109133 Set oResponse = oOpenAI.ChatCompletion(oMessages)
110134
111135 Debug.Assert Not oResponse Is Nothing
112136 Debug.Assert Len(oResponse.MessageContent) > 0
113137 Debug.Assert oResponse.MessageContent = "123456789"
114138 Debug.Assert oResponse.MessageRole = "assistant"
115139
140+ oOpenAI.Pause
141+
116142 '*********************************************
117143 '(3) Change timeouts
118144 '*********************************************
@@ -126,6 +152,8 @@ Private Sub TestOpenAI(ByVal oOpenAI As clsOpenAI, Optional ByVal strRequestXMLT
126152 Debug.Assert oResponse.MessageContent = "123456789"
127153 Debug.Assert oResponse.MessageRole = "assistant"
128154
155+ oOpenAI.Pause
156+
129157 '*********************************************
130158 '(4) Text completion test
131159 '*********************************************
@@ -134,6 +162,7 @@ Private Sub TestOpenAI(ByVal oOpenAI As clsOpenAI, Optional ByVal strRequestXMLT
134162
135163 'reset to default
136164 oOpenAI.ClearSettings
165+ Debug.Assert oOpenAI.CallsToAPICount = 0
137166
138167 strMsg = "Write a Haiku about a dinosaur that loves to code in VBA"
139168 Set oResponse = oOpenAI.TextCompletion(strMsg)
@@ -142,16 +171,25 @@ Private Sub TestOpenAI(ByVal oOpenAI As clsOpenAI, Optional ByVal strRequestXMLT
142171 Debug.Assert Len(oResponse.TextContent) > 0
143172 oOpenAI.Log (oResponse.TextContent)
144173
174+ oOpenAI.Pause
175+
145176 '*********************************************
146177 '(5) Image creation from prompt test
147178 '*********************************************
148179
149180 oOpenAI.ClearSettings
150- Set oResponse = oOpenAI.CreateImageFromText("A cat playing a banjo on a surfboard" , 256 , 256 )
181+
182+ strMsg = "A cat playing a banjo on a surfboard"
183+ Set oResponse = oOpenAI.CreateImageFromText(strMsg, 256 , 256 )
151184
152185 Debug.Assert Not oResponse Is Nothing
153186 Debug.Assert Len(oResponse.SavedLocalFile) > 0
154187 Debug.Assert Len(Dir(oResponse.SavedLocalFile)) > 0
188+ Debug.Assert oResponse.IsExistSavedLocalFile = True
189+
190+ oOpenAI.Log ("Prompt=" & strMsg)
191+ oOpenAI.Log ("Image saved to: " & oResponse.SavedLocalFile)
192+ oOpenAI.Pause
155193
156194 Set oResponse = Nothing
157195 Set oMessages = Nothing
0 commit comments