@@ -41,36 +41,40 @@ final class APITests: XCTestCase {
41
41
let requestOptions = RequestOptions ( )
42
42
let _ = RequestOptions ( timeout: 30.0 )
43
43
44
- // Instantiate Vertex AI SDK - Default App
45
- let vertexAI = FirebaseAI . vertexAI ( )
46
- let _ = FirebaseAI . vertexAI ( location: " my-location " )
47
-
48
- // Instantiate Vertex AI SDK - Custom App
49
- let _ = FirebaseAI . vertexAI ( app: app!)
50
- let _ = FirebaseAI . vertexAI ( app: app!, location: " my-location " )
44
+ // Instantiate Firebase AI SDK - Default App
45
+ let firebaseAI = FirebaseAI . firebaseAI ( )
46
+ let _ = FirebaseAI . firebaseAI ( backend: . googleAI( ) )
47
+ let _ = FirebaseAI . firebaseAI ( backend: . vertexAI( ) )
48
+ let _ = FirebaseAI . firebaseAI ( backend: . vertexAI( location: " my-location " ) )
49
+
50
+ // Instantiate Firebase AI SDK - Custom App
51
+ let _ = FirebaseAI . firebaseAI ( app: app!)
52
+ let _ = FirebaseAI . firebaseAI ( app: app!, backend: . googleAI( ) )
53
+ let _ = FirebaseAI . firebaseAI ( app: app!, backend: . vertexAI( ) )
54
+ let _ = FirebaseAI . firebaseAI ( app: app!, backend: . vertexAI( location: " my-location " ) )
51
55
52
56
// Permutations without optional arguments.
53
57
54
- let _ = vertexAI . generativeModel ( modelName: " gemini-1 .0-pro " )
58
+ let _ = firebaseAI . generativeModel ( modelName: " gemini-2 .0-flash " )
55
59
56
- let _ = vertexAI . generativeModel (
57
- modelName: " gemini-1 .0-pro " ,
60
+ let _ = firebaseAI . generativeModel (
61
+ modelName: " gemini-2 .0-flash " ,
58
62
safetySettings: filters
59
63
)
60
64
61
- let _ = vertexAI . generativeModel (
62
- modelName: " gemini-1 .0-pro " ,
65
+ let _ = firebaseAI . generativeModel (
66
+ modelName: " gemini-2 .0-flash " ,
63
67
generationConfig: config
64
68
)
65
69
66
- let _ = vertexAI . generativeModel (
67
- modelName: " gemini-1 .0-pro " ,
70
+ let _ = firebaseAI . generativeModel (
71
+ modelName: " gemini-2 .0-flash " ,
68
72
systemInstruction: systemInstruction
69
73
)
70
74
71
75
// All arguments passed.
72
- let genAI = vertexAI . generativeModel (
73
- modelName: " gemini-1 .0-pro " ,
76
+ let model = firebaseAI . generativeModel (
77
+ modelName: " gemini-2 .0-flash " ,
74
78
generationConfig: config, // Optional
75
79
safetySettings: filters, // Optional
76
80
systemInstruction: systemInstruction, // Optional
@@ -88,35 +92,35 @@ final class APITests: XCTestCase {
88
92
) ]
89
93
90
94
do {
91
- let response = try await genAI . generateContent ( contents)
95
+ let response = try await model . generateContent ( contents)
92
96
print ( response. text ?? " Couldn't get text... check status " )
93
97
} catch {
94
98
print ( " Error generating content: \( error) " )
95
99
}
96
100
97
101
// Content input combinations.
98
- let _ = try await genAI . generateContent ( " Constant String " )
102
+ let _ = try await model . generateContent ( " Constant String " )
99
103
let str = " String Variable "
100
- let _ = try await genAI . generateContent ( str)
101
- let _ = try await genAI . generateContent ( [ str] )
102
- let _ = try await genAI . generateContent ( str, " abc " , " def " )
103
- let _ = try await genAI . generateContent (
104
+ let _ = try await model . generateContent ( str)
105
+ let _ = try await model . generateContent ( [ str] )
106
+ let _ = try await model . generateContent ( str, " abc " , " def " )
107
+ let _ = try await model . generateContent (
104
108
str,
105
109
FileDataPart ( uri: " gs://test-bucket/image.jpg " , mimeType: " image/jpeg " )
106
110
)
107
111
#if canImport(UIKit)
108
- _ = try await genAI . generateContent ( UIImage ( ) )
109
- _ = try await genAI . generateContent ( [ UIImage ( ) ] )
110
- _ = try await genAI . generateContent ( [ str, UIImage ( ) , TextPart ( str) ] )
111
- _ = try await genAI . generateContent ( str, UIImage ( ) , " def " , UIImage ( ) )
112
- _ = try await genAI . generateContent ( [ str, UIImage ( ) , " def " , UIImage ( ) ] )
113
- _ = try await genAI . generateContent ( [ ModelContent ( parts: " def " , UIImage ( ) ) ,
112
+ _ = try await model . generateContent ( UIImage ( ) )
113
+ _ = try await model . generateContent ( [ UIImage ( ) ] )
114
+ _ = try await model . generateContent ( [ str, UIImage ( ) , TextPart ( str) ] )
115
+ _ = try await model . generateContent ( str, UIImage ( ) , " def " , UIImage ( ) )
116
+ _ = try await model . generateContent ( [ str, UIImage ( ) , " def " , UIImage ( ) ] )
117
+ _ = try await model . generateContent ( [ ModelContent ( parts: " def " , UIImage ( ) ) ,
114
118
ModelContent ( parts: " def " , UIImage ( ) ) ] )
115
119
#elseif canImport(AppKit)
116
- _ = try await genAI . generateContent ( NSImage ( ) )
117
- _ = try await genAI . generateContent ( [ NSImage ( ) ] )
118
- _ = try await genAI . generateContent ( str, NSImage ( ) , " def " , NSImage ( ) )
119
- _ = try await genAI . generateContent ( [ str, NSImage ( ) , " def " , NSImage ( ) ] )
120
+ _ = try await model . generateContent ( NSImage ( ) )
121
+ _ = try await model . generateContent ( [ NSImage ( ) ] )
122
+ _ = try await model . generateContent ( str, NSImage ( ) , " def " , NSImage ( ) )
123
+ _ = try await model . generateContent ( [ str, NSImage ( ) , " def " , NSImage ( ) ] )
120
124
#endif
121
125
122
126
// PartsRepresentable combinations.
@@ -147,19 +151,19 @@ final class APITests: XCTestCase {
147
151
#endif
148
152
149
153
// countTokens API
150
- let _: CountTokensResponse = try await genAI . countTokens ( " What color is the Sky? " )
154
+ let _: CountTokensResponse = try await model . countTokens ( " What color is the Sky? " )
151
155
#if canImport(UIKit)
152
- let _: CountTokensResponse = try await genAI . countTokens ( " What color is the Sky? " ,
156
+ let _: CountTokensResponse = try await model . countTokens ( " What color is the Sky? " ,
153
157
UIImage ( ) )
154
- let _: CountTokensResponse = try await genAI . countTokens ( [
158
+ let _: CountTokensResponse = try await model . countTokens ( [
155
159
ModelContent ( parts: " What color is the Sky? " , UIImage ( ) ) ,
156
160
ModelContent ( parts: UIImage ( ) , " What color is the Sky? " , UIImage ( ) ) ,
157
161
] )
158
162
#endif
159
163
160
164
// Chat
161
- _ = genAI . startChat ( )
162
- _ = genAI . startChat ( history: [ ModelContent ( parts: " abc " ) ] )
165
+ _ = model . startChat ( )
166
+ _ = model . startChat ( history: [ ModelContent ( parts: " abc " ) ] )
163
167
}
164
168
165
169
// Public API tests for GenerateContentResponse.
@@ -179,35 +183,4 @@ final class APITests: XCTestCase {
179
183
let _: String ? = response. text
180
184
let _: [ FunctionCallPart ] = response. functionCalls
181
185
}
182
-
183
- // Result builder alternative
184
-
185
- /*
186
- let pngData = Data() // ....
187
- let contents = [GenAIContent(role: "user",
188
- parts: [
189
- .text("Is it a cat?"),
190
- .png(pngData)
191
- ])]
192
-
193
- // Turns into...
194
-
195
- let contents = GenAIContent {
196
- Role("user") {
197
- Text("Is this a cat?")
198
- Image(png: pngData)
199
- }
200
- }
201
-
202
- GenAIContent {
203
- ForEach(myInput) { input in
204
- Role(input.role) {
205
- input.contents
206
- }
207
- }
208
- }
209
-
210
- // Thoughts: this looks great from a code demo, but since I assume most content will be
211
- // user generated, the result builder may not be the best API.
212
- */
213
186
}
0 commit comments