From 186ba3644a74cde338b6d2e8f74a025b76a41b73 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Wed, 7 May 2025 18:35:00 -0400 Subject: [PATCH 1/5] [Firebase AI] Update error domain constant for renamed SDK --- FirebaseAI/Sources/Constants.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FirebaseAI/Sources/Constants.swift b/FirebaseAI/Sources/Constants.swift index 8e312723993..1af4c44c531 100644 --- a/FirebaseAI/Sources/Constants.swift +++ b/FirebaseAI/Sources/Constants.swift @@ -19,6 +19,6 @@ enum Constants { /// The base reverse-DNS name for `NSError` or `CustomNSError` error domains. /// /// - Important: A suffix must be appended to produce an error domain (e.g., - /// "com.google.firebase.vertexai.ExampleError"). - static let baseErrorDomain = "com.google.firebase.vertexai" + /// "com.google.firebase.firebaseai.ExampleError"). + static let baseErrorDomain = "com.google.firebase.firebaseai" } From db102395027f38b8e7ff0f424d6da239d90aa53b Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Thu, 8 May 2025 17:05:18 -0400 Subject: [PATCH 2/5] Try setting `FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT` when `main` --- scripts/quickstart_spm_xcodeproj.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/quickstart_spm_xcodeproj.sh b/scripts/quickstart_spm_xcodeproj.sh index 504f18e80aa..f4425a9963f 100755 --- a/scripts/quickstart_spm_xcodeproj.sh +++ b/scripts/quickstart_spm_xcodeproj.sh @@ -25,6 +25,7 @@ XCODEPROJ=${SAMPLE}/${SAMPLE}Example.xcodeproj/project.pbxproj if grep -q "branch = main;" "$XCODEPROJ"; then sed -i "" "s#branch = main;#branch = $BRANCH_NAME;#" "$XCODEPROJ" + export FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT=1 else echo "Failed to update quickstart's Xcode project to the current branch" exit 1 From 45741359280c2b4a6330ae554107b7ee4ab23018 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Thu, 8 May 2025 17:38:41 -0400 Subject: [PATCH 3/5] Try smaller Gemma model for better availability --- FirebaseAI/Tests/TestApp/Sources/Constants.swift | 2 +- .../Tests/Integration/GenerateContentIntegrationTests.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FirebaseAI/Tests/TestApp/Sources/Constants.swift b/FirebaseAI/Tests/TestApp/Sources/Constants.swift index ff1e9bb0250..1010b27cee3 100644 --- a/FirebaseAI/Tests/TestApp/Sources/Constants.swift +++ b/FirebaseAI/Tests/TestApp/Sources/Constants.swift @@ -24,5 +24,5 @@ public enum ModelNames { public static let gemini2Flash = "gemini-2.0-flash-001" public static let gemini2FlashLite = "gemini-2.0-flash-lite-001" public static let gemini2FlashExperimental = "gemini-2.0-flash-exp" - public static let gemma3_27B = "gemma-3-27b-it" + public static let gemma3_4B = "gemma-3-4b-it" } diff --git a/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift b/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift index ecb443b503e..f502fb00497 100644 --- a/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift +++ b/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift @@ -82,7 +82,7 @@ struct GenerateContentIntegrationTests { #expect(promptTokensDetails.modality == .text) #expect(promptTokensDetails.tokenCount == usageMetadata.promptTokenCount) // The field `candidatesTokensDetails` is not included when using Gemma models. - if modelName == ModelNames.gemma3_27B { + if modelName == ModelNames.gemma3_4B { #expect(usageMetadata.candidatesTokensDetails.isEmpty) } else { #expect(usageMetadata.candidatesTokensDetails.count == 1) From 4a592868abcada5ee27a17733ada88be341c28a2 Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Thu, 8 May 2025 17:47:11 -0400 Subject: [PATCH 4/5] Fix build --- .../GenerateContentIntegrationTests.swift | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift b/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift index f502fb00497..b90f937b480 100644 --- a/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift +++ b/FirebaseAI/Tests/TestApp/Tests/Integration/GenerateContentIntegrationTests.swift @@ -53,12 +53,12 @@ struct GenerateContentIntegrationTests { (InstanceConfig.vertexAI_v1beta, ModelNames.gemini2FlashLite), (InstanceConfig.vertexAI_v1beta_staging, ModelNames.gemini2FlashLite), (InstanceConfig.googleAI_v1beta, ModelNames.gemini2FlashLite), - (InstanceConfig.googleAI_v1beta, ModelNames.gemma3_27B), + (InstanceConfig.googleAI_v1beta, ModelNames.gemma3_4B), (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemini2FlashLite), - (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemma3_27B), + (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemma3_4B), (InstanceConfig.googleAI_v1_freeTier_bypassProxy, ModelNames.gemini2FlashLite), (InstanceConfig.googleAI_v1beta_freeTier_bypassProxy, ModelNames.gemini2FlashLite), - (InstanceConfig.googleAI_v1beta_freeTier_bypassProxy, ModelNames.gemma3_27B), + (InstanceConfig.googleAI_v1beta_freeTier_bypassProxy, ModelNames.gemma3_4B), ]) func generateContent(_ config: InstanceConfig, modelName: String) async throws { let model = FirebaseAI.componentInstance(config).generativeModel( @@ -191,12 +191,12 @@ struct GenerateContentIntegrationTests { (InstanceConfig.vertexAI_v1beta, ModelNames.gemini2FlashLite), (InstanceConfig.vertexAI_v1beta_staging, ModelNames.gemini2FlashLite), (InstanceConfig.googleAI_v1beta, ModelNames.gemini2FlashLite), - (InstanceConfig.googleAI_v1beta, ModelNames.gemma3_27B), + (InstanceConfig.googleAI_v1beta, ModelNames.gemma3_4B), (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemini2FlashLite), - (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemma3_27B), + (InstanceConfig.googleAI_v1beta_staging, ModelNames.gemma3_4B), (InstanceConfig.googleAI_v1_freeTier_bypassProxy, ModelNames.gemini2FlashLite), (InstanceConfig.googleAI_v1beta_freeTier_bypassProxy, ModelNames.gemini2FlashLite), - (InstanceConfig.googleAI_v1beta_freeTier_bypassProxy, ModelNames.gemma3_27B), + (InstanceConfig.googleAI_v1beta_freeTier_bypassProxy, ModelNames.gemma3_4B), ]) func generateContentStream(_ config: InstanceConfig, modelName: String) async throws { let expectedResponse = [ From 00c84b4967a10e94c1e4b00291b5cbd192faa97e Mon Sep 17 00:00:00 2001 From: Andrew Heard Date: Thu, 8 May 2025 18:12:48 -0400 Subject: [PATCH 5/5] Add comment about FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT --- scripts/quickstart_spm_xcodeproj.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/quickstart_spm_xcodeproj.sh b/scripts/quickstart_spm_xcodeproj.sh index f4425a9963f..f0cbd0073be 100755 --- a/scripts/quickstart_spm_xcodeproj.sh +++ b/scripts/quickstart_spm_xcodeproj.sh @@ -25,6 +25,10 @@ XCODEPROJ=${SAMPLE}/${SAMPLE}Example.xcodeproj/project.pbxproj if grep -q "branch = main;" "$XCODEPROJ"; then sed -i "" "s#branch = main;#branch = $BRANCH_NAME;#" "$XCODEPROJ" + + # Point SPM CI to the tip of `main` of + # https://github.com/google/GoogleAppMeasurement so that the release process + # can defer publishing the `GoogleAppMeasurement` tag until after testing. export FIREBASECI_USE_LATEST_GOOGLEAPPMEASUREMENT=1 else echo "Failed to update quickstart's Xcode project to the current branch"