Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
5 changes: 5 additions & 0 deletions src/main/java/com/google/genai/Batches.java
Original file line number Diff line number Diff line change
Expand Up @@ -1257,6 +1257,11 @@ ObjectNode generateContentConfigToMldev(
Common.getValueByPath(fromObject, new String[] {"enableEnhancedCivicAnswers"}));
}

if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"modelArmorConfig"}))) {
throw new IllegalArgumentException(
"modelArmorConfig parameter is not supported in Gemini API.");
}

return toObject;
}

Expand Down
12 changes: 12 additions & 0 deletions src/main/java/com/google/genai/Models.java
Original file line number Diff line number Diff line change
Expand Up @@ -1379,6 +1379,11 @@ ObjectNode generateContentConfigToMldev(
Common.getValueByPath(fromObject, new String[] {"enableEnhancedCivicAnswers"}));
}

if (!Common.isZero(Common.getValueByPath(fromObject, new String[] {"modelArmorConfig"}))) {
throw new IllegalArgumentException(
"modelArmorConfig parameter is not supported in Gemini API.");
}

return toObject;
}

Expand Down Expand Up @@ -1601,6 +1606,13 @@ ObjectNode generateContentConfigToVertex(
"enableEnhancedCivicAnswers parameter is not supported in Vertex AI.");
}

if (Common.getValueByPath(fromObject, new String[] {"modelArmorConfig"}) != null) {
Common.setValueByPath(
parentObject,
new String[] {"modelArmorConfig"},
Common.getValueByPath(fromObject, new String[] {"modelArmorConfig"}));
}

return toObject;
}

Expand Down
37 changes: 37 additions & 0 deletions src/main/java/com/google/genai/types/GenerateContentConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,13 @@ public abstract class GenerateContentConfig extends JsonSerializable {
@JsonProperty("enableEnhancedCivicAnswers")
public abstract Optional<Boolean> enableEnhancedCivicAnswers();

/**
* Settings for prompt and response sanitization using the Model Armor service. If supplied,
* safety_settings must not be supplied.
*/
@JsonProperty("modelArmorConfig")
public abstract Optional<ModelArmorConfig> modelArmorConfig();

/** Instantiates a builder for GenerateContentConfig. */
@ExcludeFromGeneratedCoverageReport
public static Builder builder() {
Expand Down Expand Up @@ -1067,6 +1074,36 @@ public Builder clearEnableEnhancedCivicAnswers() {
return enableEnhancedCivicAnswers(Optional.empty());
}

/**
* Setter for modelArmorConfig.
*
* <p>modelArmorConfig: Settings for prompt and response sanitization using the Model Armor
* service. If supplied, safety_settings must not be supplied.
*/
@JsonProperty("modelArmorConfig")
public abstract Builder modelArmorConfig(ModelArmorConfig modelArmorConfig);

/**
* Setter for modelArmorConfig builder.
*
* <p>modelArmorConfig: Settings for prompt and response sanitization using the Model Armor
* service. If supplied, safety_settings must not be supplied.
*/
@CanIgnoreReturnValue
public Builder modelArmorConfig(ModelArmorConfig.Builder modelArmorConfigBuilder) {
return modelArmorConfig(modelArmorConfigBuilder.build());
}

@ExcludeFromGeneratedCoverageReport
abstract Builder modelArmorConfig(Optional<ModelArmorConfig> modelArmorConfig);

/** Clears the value of modelArmorConfig field. */
@ExcludeFromGeneratedCoverageReport
@CanIgnoreReturnValue
public Builder clearModelArmorConfig() {
return modelArmorConfig(Optional.empty());
}

public abstract GenerateContentConfig build();
}

Expand Down
108 changes: 108 additions & 0 deletions src/main/java/com/google/genai/types/ModelArmorConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
/*
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

// Auto-generated code. Do not edit.

package com.google.genai.types;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.google.auto.value.AutoValue;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
import com.google.genai.JsonSerializable;
import java.util.Optional;

/**
* Configuration for Model Armor integrations of prompt and responses. This data type is not
* supported in Gemini API.
*/
@AutoValue
@JsonDeserialize(builder = ModelArmorConfig.Builder.class)
public abstract class ModelArmorConfig extends JsonSerializable {
/** Optional. The name of the Model Armor template to use for prompt sanitization. */
@JsonProperty("promptTemplateName")
public abstract Optional<String> promptTemplateName();

/** Optional. The name of the Model Armor template to use for response sanitization. */
@JsonProperty("responseTemplateName")
public abstract Optional<String> responseTemplateName();

/** Instantiates a builder for ModelArmorConfig. */
@ExcludeFromGeneratedCoverageReport
public static Builder builder() {
return new AutoValue_ModelArmorConfig.Builder();
}

/** Creates a builder with the same values as this instance. */
public abstract Builder toBuilder();

/** Builder for ModelArmorConfig. */
@AutoValue.Builder
public abstract static class Builder {
/** For internal usage. Please use `ModelArmorConfig.builder()` for instantiation. */
@JsonCreator
private static Builder create() {
return new AutoValue_ModelArmorConfig.Builder();
}

/**
* Setter for promptTemplateName.
*
* <p>promptTemplateName: Optional. The name of the Model Armor template to use for prompt
* sanitization.
*/
@JsonProperty("promptTemplateName")
public abstract Builder promptTemplateName(String promptTemplateName);

@ExcludeFromGeneratedCoverageReport
abstract Builder promptTemplateName(Optional<String> promptTemplateName);

/** Clears the value of promptTemplateName field. */
@ExcludeFromGeneratedCoverageReport
@CanIgnoreReturnValue
public Builder clearPromptTemplateName() {
return promptTemplateName(Optional.empty());
}

/**
* Setter for responseTemplateName.
*
* <p>responseTemplateName: Optional. The name of the Model Armor template to use for response
* sanitization.
*/
@JsonProperty("responseTemplateName")
public abstract Builder responseTemplateName(String responseTemplateName);

@ExcludeFromGeneratedCoverageReport
abstract Builder responseTemplateName(Optional<String> responseTemplateName);

/** Clears the value of responseTemplateName field. */
@ExcludeFromGeneratedCoverageReport
@CanIgnoreReturnValue
public Builder clearResponseTemplateName() {
return responseTemplateName(Optional.empty());
}

public abstract ModelArmorConfig build();
}

/** Deserializes a JSON string to a ModelArmorConfig object. */
@ExcludeFromGeneratedCoverageReport
public static ModelArmorConfig fromJson(String jsonString) {
return JsonSerializable.fromJsonString(jsonString, ModelArmorConfig.class);
}
}