Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion .github/workflows/firebaseai.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,17 @@ jobs:
setup_command: scripts/update_vertexai_responses.sh

quickstart:
runs-on: macos-15
strategy:
matrix:
include:
- os: macos-15
xcode: Xcode_16.3
runs-on: ${{ matrix.os }}
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name || 'main' }}
steps:
- uses: actions/checkout@v4
- name: Xcode
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer
- name: Build Quickstart
run: scripts/quickstart_build_spm.sh FirebaseAI
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ struct ImageGenerationParameters {
let outputOptions: ImageGenerationOutputOptions?
let addWatermark: Bool?
let includeResponsibleAIFilterReason: Bool?
let includeSafetyAttributes: Bool?
}

@available(iOS 15.0, macOS 12.0, macCatalyst 15.0, tvOS 15.0, watchOS 8.0, *)
Expand All @@ -42,6 +43,7 @@ extension ImageGenerationParameters: Encodable {
case outputOptions
case addWatermark
case includeResponsibleAIFilterReason = "includeRaiReason"
case includeSafetyAttributes
}

func encode(to encoder: any Encoder) throws {
Expand All @@ -58,5 +60,6 @@ extension ImageGenerationParameters: Encodable {
includeResponsibleAIFilterReason,
forKey: .includeResponsibleAIFilterReason
)
try container.encodeIfPresent(includeSafetyAttributes, forKey: .includeSafetyAttributes)
}
}
3 changes: 2 additions & 1 deletion FirebaseAI/Sources/Types/Public/Imagen/ImagenModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,8 @@ public final class ImagenModel {
)
},
addWatermark: generationConfig?.addWatermark,
includeResponsibleAIFilterReason: true
includeResponsibleAIFilterReason: true,
includeSafetyAttributes: true
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ final class ImageGenerationParametersTests: XCTestCase {
personGeneration: nil,
outputOptions: nil,
addWatermark: nil,
includeResponsibleAIFilterReason: true
includeResponsibleAIFilterReason: true,
includeSafetyAttributes: true
)

let parameters = ImagenModel.imageGenerationParameters(
Expand All @@ -57,7 +58,8 @@ final class ImageGenerationParametersTests: XCTestCase {
personGeneration: nil,
outputOptions: nil,
addWatermark: nil,
includeResponsibleAIFilterReason: true
includeResponsibleAIFilterReason: true,
includeSafetyAttributes: true
)

let parameters = ImagenModel.imageGenerationParameters(
Expand Down Expand Up @@ -95,7 +97,8 @@ final class ImageGenerationParametersTests: XCTestCase {
compressionQuality: imageFormat.compressionQuality
),
addWatermark: addWatermark,
includeResponsibleAIFilterReason: true
includeResponsibleAIFilterReason: true,
includeSafetyAttributes: true
)

let parameters = ImagenModel.imageGenerationParameters(
Expand Down Expand Up @@ -124,7 +127,8 @@ final class ImageGenerationParametersTests: XCTestCase {
personGeneration: personFilterLevel.rawValue,
outputOptions: nil,
addWatermark: nil,
includeResponsibleAIFilterReason: true
includeResponsibleAIFilterReason: true,
includeSafetyAttributes: true
)

let parameters = ImagenModel.imageGenerationParameters(
Expand Down Expand Up @@ -170,7 +174,8 @@ final class ImageGenerationParametersTests: XCTestCase {
compressionQuality: imageFormat.compressionQuality
),
addWatermark: addWatermark,
includeResponsibleAIFilterReason: true
includeResponsibleAIFilterReason: true,
includeSafetyAttributes: true
)

let parameters = ImagenModel.imageGenerationParameters(
Expand Down Expand Up @@ -200,6 +205,7 @@ final class ImageGenerationParametersTests: XCTestCase {
let outputOptions = ImageGenerationOutputOptions(mimeType: mimeType, compressionQuality: nil)
let addWatermark = false
let includeRAIReason = true
let includeSafetyAttributes = true
let parameters = ImageGenerationParameters(
sampleCount: sampleCount,
storageURI: storageURI,
Expand All @@ -209,7 +215,8 @@ final class ImageGenerationParametersTests: XCTestCase {
personGeneration: personGeneration,
outputOptions: outputOptions,
addWatermark: addWatermark,
includeResponsibleAIFilterReason: includeRAIReason
includeResponsibleAIFilterReason: includeRAIReason,
includeSafetyAttributes: includeSafetyAttributes
)

let jsonData = try encoder.encode(parameters)
Expand All @@ -220,6 +227,7 @@ final class ImageGenerationParametersTests: XCTestCase {
"addWatermark" : \(addWatermark),
"aspectRatio" : "\(aspectRatio)",
"includeRaiReason" : \(includeRAIReason),
"includeSafetyAttributes" : \(includeSafetyAttributes),
"negativePrompt" : "\(negativePrompt)",
"outputOptions" : {
"mimeType" : "\(mimeType)"
Expand All @@ -246,7 +254,8 @@ final class ImageGenerationParametersTests: XCTestCase {
personGeneration: nil,
outputOptions: nil,
addWatermark: addWatermark,
includeResponsibleAIFilterReason: nil
includeResponsibleAIFilterReason: nil,
includeSafetyAttributes: nil
)

let jsonData = try encoder.encode(parameters)
Expand All @@ -272,7 +281,8 @@ final class ImageGenerationParametersTests: XCTestCase {
personGeneration: nil,
outputOptions: nil,
addWatermark: nil,
includeResponsibleAIFilterReason: nil
includeResponsibleAIFilterReason: nil,
includeSafetyAttributes: nil
)

let jsonData = try encoder.encode(parameters)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ final class ImagenGenerationRequestTests: XCTestCase {
let aspectRatio = "16:9"
let safetyFilterLevel = "block_low_and_above"
let includeResponsibleAIFilterReason = true
let includeSafetyAttributes = true
lazy var parameters = ImageGenerationParameters(
sampleCount: sampleCount,
storageURI: nil,
Expand All @@ -34,7 +35,8 @@ final class ImagenGenerationRequestTests: XCTestCase {
personGeneration: nil,
outputOptions: nil,
addWatermark: nil,
includeResponsibleAIFilterReason: includeResponsibleAIFilterReason
includeResponsibleAIFilterReason: includeResponsibleAIFilterReason,
includeSafetyAttributes: includeSafetyAttributes
)
let apiConfig = FirebaseAI.defaultVertexAIAPIConfig

Expand Down Expand Up @@ -108,6 +110,7 @@ final class ImagenGenerationRequestTests: XCTestCase {
"parameters" : {
"aspectRatio" : "\(aspectRatio)",
"includeRaiReason" : \(includeResponsibleAIFilterReason),
"includeSafetyAttributes" : \(includeSafetyAttributes),
"safetySetting" : "\(safetyFilterLevel)",
"sampleCount" : \(sampleCount)
}
Expand Down Expand Up @@ -137,6 +140,7 @@ final class ImagenGenerationRequestTests: XCTestCase {
"parameters" : {
"aspectRatio" : "\(aspectRatio)",
"includeRaiReason" : \(includeResponsibleAIFilterReason),
"includeSafetyAttributes" : \(includeSafetyAttributes),
"safetySetting" : "\(safetyFilterLevel)",
"sampleCount" : \(sampleCount)
}
Expand Down
Loading