Skip to content

Commit 9035fde

Browse files
committed
[Firebase AI] Rename internal APIConfig enums
1 parent 5659604 commit 9035fde

File tree

11 files changed

+69
-60
lines changed

11 files changed

+69
-60
lines changed

FirebaseAI/Sources/FirebaseAI.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public final class FirebaseAI: Sendable {
4242
)
4343
// Verify that the `FirebaseAI` instance is always configured with the production endpoint since
4444
// this is the public API surface for creating an instance.
45-
assert(instance.apiConfig.service.endpoint == .firebaseVertexAIProd)
45+
assert(instance.apiConfig.service.endpoint == .firebaseProxyProd)
4646
assert(instance.apiConfig.version == .v1beta)
4747
return instance
4848
}
@@ -159,7 +159,7 @@ public final class FirebaseAI: Sendable {
159159
let location: String?
160160

161161
static let defaultVertexAIAPIConfig = APIConfig(
162-
service: .vertexAI(endpoint: .firebaseVertexAIProd),
162+
service: .vertexAI(endpoint: .firebaseProxyProd),
163163
version: .v1beta
164164
)
165165

@@ -218,7 +218,7 @@ public final class FirebaseAI: Sendable {
218218
switch apiConfig.service {
219219
case .vertexAI:
220220
return vertexAIModelResourceName(modelName: modelName)
221-
case .developer:
221+
case .googleAI:
222222
return developerModelResourceName(modelName: modelName)
223223
}
224224
}
@@ -242,10 +242,10 @@ public final class FirebaseAI: Sendable {
242242

243243
private func developerModelResourceName(modelName: String) -> String {
244244
switch apiConfig.service.endpoint {
245-
case .firebaseVertexAIStaging, .firebaseVertexAIProd:
245+
case .firebaseProxyStaging, .firebaseProxyProd:
246246
let projectID = firebaseInfo.projectID
247247
return "projects/\(projectID)/models/\(modelName)"
248-
case .generativeLanguage:
248+
case .geminiDeveloperDirect:
249249
return "models/\(modelName)"
250250
}
251251
}

FirebaseAI/Sources/GenerativeModel.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ public final class GenerativeModel: Sendable {
277277
let requestContent = switch apiConfig.service {
278278
case .vertexAI:
279279
content
280-
case .developer:
280+
case .googleAI:
281281
// The `role` defaults to "user" but is ignored in `countTokens`. However, it is erroneously
282282
// erroneously counted towards the prompt and total token count when using the Developer API
283283
// backend; set to `nil` to avoid token count discrepancies between `countTokens` and
@@ -290,10 +290,10 @@ public final class GenerativeModel: Sendable {
290290
// "models/model-name". This field is unaltered by the Firebase backend before forwarding the
291291
// request to the Generative Language backend, which expects the form "models/model-name".
292292
let generateContentRequestModelResourceName = switch apiConfig.service {
293-
case .vertexAI, .developer(endpoint: .generativeLanguage):
293+
case .vertexAI, .googleAI(endpoint: .geminiDeveloperDirect):
294294
modelResourceName
295-
case .developer(endpoint: .firebaseVertexAIProd),
296-
.developer(endpoint: .firebaseVertexAIStaging):
295+
case .googleAI(endpoint: .firebaseProxyProd),
296+
.googleAI(endpoint: .firebaseProxyStaging):
297297
"models/\(modelName)"
298298
}
299299

FirebaseAI/Sources/Types/Internal/APIConfig.swift

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ extension APIConfig {
5050
/// The Gemini Developer API provided by Google AI.
5151
///
5252
/// See the [Google AI docs](https://ai.google.dev/gemini-api/docs) for more details.
53-
case developer(endpoint: Endpoint)
53+
case googleAI(endpoint: Endpoint)
5454

5555
/// The specific network address to use for API requests.
5656
///
@@ -59,7 +59,7 @@ extension APIConfig {
5959
switch self {
6060
case let .vertexAI(endpoint: endpoint):
6161
return endpoint
62-
case let .developer(endpoint: endpoint):
62+
case let .googleAI(endpoint: endpoint):
6363
return endpoint
6464
}
6565
}
@@ -69,14 +69,23 @@ extension APIConfig {
6969
extension APIConfig.Service {
7070
/// Network addresses for generative AI API services.
7171
enum Endpoint: String {
72-
/// The Vertex AI in Firebase production endpoint.
73-
case firebaseVertexAIProd = "https://firebasevertexai.googleapis.com"
72+
/// The Firebase proxy production endpoint.
73+
///
74+
/// This endpoint supports both Google AI and Vertex AI.
75+
case firebaseProxyProd = "https://firebasevertexai.googleapis.com"
7476

75-
/// The Vertex AI in Firebase staging endpoint; for SDK development and testing only.
76-
case firebaseVertexAIStaging = "https://staging-firebasevertexai.sandbox.googleapis.com"
77+
/// The Firebase proxy staging endpoint; for SDK development and testing only.
78+
///
79+
/// This endpoint supports both the Gemini Developer API (commonly referred to as Google AI)
80+
/// and the Gemini API in Vertex AI (commonly referred to simply as Vertex AI).
81+
case firebaseProxyStaging = "https://staging-firebasevertexai.sandbox.googleapis.com"
7782

78-
/// The Gemini Developer API production endpoint; for SDK development and testing only.
79-
case generativeLanguage = "https://generativelanguage.googleapis.com"
83+
/// The Gemini Developer API (Google AI) direct production endpoint; for SDK development and
84+
/// testing only.
85+
///
86+
/// This bypasses the Firebase proxy and directly connects to the Gemini Developer API
87+
/// (Google AI) backend. This endpoint only supports the Gemini Developer API, not Vertex AI.
88+
case geminiDeveloperDirect = "https://generativelanguage.googleapis.com"
8089
}
8190
}
8291

FirebaseAI/Sources/Types/Internal/Requests/CountTokensRequest.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ extension CountTokensRequest: Encodable {
7171
switch apiConfig.service {
7272
case .vertexAI:
7373
try encodeForVertexAI(to: encoder)
74-
case .developer:
74+
case .googleAI:
7575
try encodeForDeveloper(to: encoder)
7676
}
7777
}

FirebaseAI/Sources/Types/Public/Backend.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ public struct Backend {
2525
/// for a list of supported locations.
2626
public static func vertexAI(location: String = "us-central1") -> Backend {
2727
return Backend(
28-
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIProd), version: .v1beta),
28+
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseProxyProd), version: .v1beta),
2929
location: location
3030
)
3131
}
3232

3333
/// Initializes a `Backend` configured for the Google Developer API.
3434
public static func googleAI() -> Backend {
3535
return Backend(
36-
apiConfig: APIConfig(service: .developer(endpoint: .firebaseVertexAIProd), version: .v1beta),
36+
apiConfig: APIConfig(service: .googleAI(endpoint: .firebaseProxyProd), version: .v1beta),
3737
location: nil
3838
)
3939
}

FirebaseAI/Tests/TestApp/Tests/Integration/CountTokensIntegrationTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ struct CountTokensIntegrationTests {
6060
switch config.apiConfig.service {
6161
case .vertexAI:
6262
#expect(response.totalBillableCharacters == 16)
63-
case .developer:
63+
case .googleAI:
6464
#expect(response.totalBillableCharacters == nil)
6565
}
6666
#expect(response.promptTokensDetails.count == 1)
@@ -87,7 +87,7 @@ struct CountTokensIntegrationTests {
8787
switch config.apiConfig.service {
8888
case .vertexAI:
8989
#expect(response.totalBillableCharacters == 61)
90-
case .developer:
90+
case .googleAI:
9191
#expect(response.totalBillableCharacters == nil)
9292
}
9393
#expect(response.promptTokensDetails.count == 1)
@@ -144,7 +144,7 @@ struct CountTokensIntegrationTests {
144144
case .vertexAI:
145145
#expect(response.totalTokens == 65)
146146
#expect(response.totalBillableCharacters == 170)
147-
case .developer:
147+
case .googleAI:
148148
// The Developer API erroneously ignores the `responseSchema` when counting tokens, resulting
149149
// in a lower total count than Vertex AI.
150150
#expect(response.totalTokens == 34)

FirebaseAI/Tests/TestApp/Tests/Utilities/InstanceConfig.swift

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,30 +21,30 @@ import VertexAITestApp
2121

2222
struct InstanceConfig {
2323
static let vertexV1 = InstanceConfig(
24-
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIProd), version: .v1)
24+
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseProxyProd), version: .v1)
2525
)
2626
static let vertexV1Staging = InstanceConfig(
27-
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIStaging), version: .v1)
27+
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseProxyStaging), version: .v1)
2828
)
2929
static let vertexV1Beta = InstanceConfig(
30-
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIProd), version: .v1beta)
30+
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseProxyProd), version: .v1beta)
3131
)
3232
static let vertexV1BetaStaging = InstanceConfig(
33-
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIStaging), version: .v1beta)
33+
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseProxyStaging), version: .v1beta)
3434
)
3535
static let developerV1Beta = InstanceConfig(
36-
apiConfig: APIConfig(service: .developer(endpoint: .firebaseVertexAIProd), version: .v1beta)
36+
apiConfig: APIConfig(service: .googleAI(endpoint: .firebaseProxyProd), version: .v1beta)
3737
)
3838
static let developerV1BetaStaging = InstanceConfig(
39-
apiConfig: APIConfig(service: .developer(endpoint: .firebaseVertexAIStaging), version: .v1beta)
39+
apiConfig: APIConfig(service: .googleAI(endpoint: .firebaseProxyStaging), version: .v1beta)
4040
)
4141
static let developerV1Spark = InstanceConfig(
4242
appName: FirebaseAppNames.spark,
43-
apiConfig: APIConfig(service: .developer(endpoint: .generativeLanguage), version: .v1)
43+
apiConfig: APIConfig(service: .googleAI(endpoint: .geminiDeveloperDirect), version: .v1)
4444
)
4545
static let developerV1BetaSpark = InstanceConfig(
4646
appName: FirebaseAppNames.spark,
47-
apiConfig: APIConfig(service: .developer(endpoint: .generativeLanguage), version: .v1beta)
47+
apiConfig: APIConfig(service: .googleAI(endpoint: .geminiDeveloperDirect), version: .v1beta)
4848
)
4949
static let allConfigs = [
5050
vertexV1,
@@ -71,11 +71,11 @@ struct InstanceConfig {
7171

7272
static let vertexV1AppCheckNotConfigured = InstanceConfig(
7373
appName: FirebaseAppNames.appCheckNotConfigured,
74-
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIProd), version: .v1)
74+
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseProxyProd), version: .v1)
7575
)
7676
static let vertexV1BetaAppCheckNotConfigured = InstanceConfig(
7777
appName: FirebaseAppNames.appCheckNotConfigured,
78-
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIProd), version: .v1beta)
78+
apiConfig: APIConfig(service: .vertexAI(endpoint: .firebaseProxyProd), version: .v1beta)
7979
)
8080

8181
let appName: String?
@@ -96,8 +96,8 @@ struct InstanceConfig {
9696
switch apiConfig.service {
9797
case .vertexAI:
9898
return "Vertex AI"
99-
case .developer:
100-
return "Developer"
99+
case .googleAI:
100+
return "Google AI"
101101
}
102102
}
103103

@@ -109,11 +109,11 @@ struct InstanceConfig {
109109
extension InstanceConfig: CustomTestStringConvertible {
110110
var testDescription: String {
111111
let endpointSuffix = switch apiConfig.service.endpoint {
112-
case .firebaseVertexAIProd:
112+
case .firebaseProxyProd:
113113
""
114-
case .firebaseVertexAIStaging:
114+
case .firebaseProxyStaging:
115115
" - Staging"
116-
case .generativeLanguage:
116+
case .geminiDeveloperDirect:
117117
" - Generative Language"
118118
}
119119
let locationSuffix = location.map { " - \($0)" } ?? ""
@@ -132,7 +132,7 @@ extension FirebaseAI {
132132
location: location,
133133
apiConfig: instanceConfig.apiConfig
134134
)
135-
case .developer:
135+
case .googleAI:
136136
assert(
137137
instanceConfig.location == nil,
138138
"The Developer API is global and does not support `location`."

FirebaseAI/Tests/Unit/Types/BackendTests.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import XCTest
1919
final class BackendTests: XCTestCase {
2020
func testVertexAI_defaultLocation() {
2121
let expectedAPIConfig = APIConfig(
22-
service: .vertexAI(endpoint: .firebaseVertexAIProd),
22+
service: .vertexAI(endpoint: .firebaseProxyProd),
2323
version: .v1beta
2424
)
2525

@@ -31,7 +31,7 @@ final class BackendTests: XCTestCase {
3131

3232
func testVertexAI_customLocation() {
3333
let expectedAPIConfig = APIConfig(
34-
service: .vertexAI(endpoint: .firebaseVertexAIProd),
34+
service: .vertexAI(endpoint: .firebaseProxyProd),
3535
version: .v1beta
3636
)
3737
let customLocation = "europe-west1"
@@ -44,7 +44,7 @@ final class BackendTests: XCTestCase {
4444

4545
func testGoogleAI() {
4646
let expectedAPIConfig = APIConfig(
47-
service: .developer(endpoint: .firebaseVertexAIProd),
47+
service: .googleAI(endpoint: .firebaseProxyProd),
4848
version: .v1beta
4949
)
5050

FirebaseAI/Tests/Unit/Types/Internal/APIConfigTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,21 @@ import XCTest
1919
@available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *)
2020
final class APIConfigTests: XCTestCase {
2121
func testInitialize_vertexAI_prod_v1() {
22-
let apiConfig = APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIProd), version: .v1)
22+
let apiConfig = APIConfig(service: .vertexAI(endpoint: .firebaseProxyProd), version: .v1)
2323

2424
XCTAssertEqual(apiConfig.service.endpoint.rawValue, "https://firebasevertexai.googleapis.com")
2525
XCTAssertEqual(apiConfig.version.rawValue, "v1")
2626
}
2727

2828
func testInitialize_vertexAI_prod_v1beta() {
29-
let apiConfig = APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIProd), version: .v1beta)
29+
let apiConfig = APIConfig(service: .vertexAI(endpoint: .firebaseProxyProd), version: .v1beta)
3030

3131
XCTAssertEqual(apiConfig.service.endpoint.rawValue, "https://firebasevertexai.googleapis.com")
3232
XCTAssertEqual(apiConfig.version.rawValue, "v1beta")
3333
}
3434

3535
func testInitialize_vertexAI_staging_v1() {
36-
let apiConfig = APIConfig(service: .vertexAI(endpoint: .firebaseVertexAIStaging), version: .v1)
36+
let apiConfig = APIConfig(service: .vertexAI(endpoint: .firebaseProxyStaging), version: .v1)
3737

3838
XCTAssertEqual(
3939
apiConfig.service.endpoint.rawValue, "https://staging-firebasevertexai.sandbox.googleapis.com"
@@ -43,7 +43,7 @@ final class APIConfigTests: XCTestCase {
4343

4444
func testInitialize_vertexAI_staging_v1beta() {
4545
let apiConfig = APIConfig(
46-
service: .vertexAI(endpoint: .firebaseVertexAIStaging),
46+
service: .vertexAI(endpoint: .firebaseProxyStaging),
4747
version: .v1beta
4848
)
4949

@@ -55,7 +55,7 @@ final class APIConfigTests: XCTestCase {
5555

5656
func testInitialize_developer_staging_v1beta() {
5757
let apiConfig = APIConfig(
58-
service: .developer(endpoint: .firebaseVertexAIStaging), version: .v1beta
58+
service: .googleAI(endpoint: .firebaseProxyStaging), version: .v1beta
5959
)
6060

6161
XCTAssertEqual(
@@ -65,7 +65,7 @@ final class APIConfigTests: XCTestCase {
6565
}
6666

6767
func testInitialize_developer_generativeLanguage_v1beta() {
68-
let apiConfig = APIConfig(service: .developer(endpoint: .generativeLanguage), version: .v1beta)
68+
let apiConfig = APIConfig(service: .googleAI(endpoint: .geminiDeveloperDirect), version: .v1beta)
6969

7070
XCTAssertEqual(apiConfig.service.endpoint.rawValue, "https://generativelanguage.googleapis.com")
7171
XCTAssertEqual(apiConfig.version.rawValue, "v1beta")

FirebaseAI/Tests/Unit/Types/Internal/Requests/CountTokensRequestTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ final class CountTokensRequestTests: XCTestCase {
2525
let textPart = TextPart("test-prompt")
2626
let vertexAPIConfig = FirebaseAI.defaultVertexAIAPIConfig
2727
let developerAPIConfig = APIConfig(
28-
service: .developer(endpoint: .firebaseVertexAIProd),
28+
service: .googleAI(endpoint: .firebaseProxyProd),
2929
version: .v1beta
3030
)
3131
let requestOptions = RequestOptions()

0 commit comments

Comments
 (0)