blob: 7039d06748994f51ebf5711b5a3e94af3bc31dd5 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.optimization_guide.proto";
option java_outer_classname = "ModelExecutionProto";
package optimization_guide.proto;
import "components/optimization_guide/proto/common_types.proto";
import "components/optimization_guide/proto/descriptors.proto";
import "components/optimization_guide/proto/fieldwise_parser_config.proto";
import "components/optimization_guide/proto/redaction.proto";
import "components/optimization_guide/proto/substitution.proto";
import "components/optimization_guide/proto/model_execution.proto";
import "components/optimization_guide/proto/parser_kind.proto";
message OnDeviceModelExecutionConfig {
// The set of configs for features that leverage the on-device model.
//
// It is expected that there is only one feature config per feature.
repeated OnDeviceModelExecutionFeatureConfig feature_configs = 1;
// A config used for validating the model and device after download.
optional OnDeviceModelValidationConfig validation_config = 2;
// List of capabilities supported by the base model.
repeated OnDeviceModelCapability capabilities = 3;
}
enum OnDeviceModelCapability {
ON_DEVICE_MODEL_CAPABILITY_UNSPECIFIED = 0;
// The model supports taking image input.
ON_DEVICE_MODEL_CAPABILITY_IMAGE_INPUT = 1;
// The model supports taking audio input.
ON_DEVICE_MODEL_CAPABILITY_AUDIO_INPUT = 2;
}
message OnDeviceModelExecutionFeatureConfig {
// The feature this configuration is for.
optional ModelExecutionFeature feature = 1;
// The config used to construct the input for on-device model execution.
optional OnDeviceModelExecutionInputConfig input_config = 2;
// The config used to construct the output for on-device model execution.
optional OnDeviceModelExecutionOutputConfig output_config = 3;
// The config used to construct the request for server fallback text safety
// evaluation.
optional TextSafetyFallbackConfig text_safety_fallback_config = 4;
// Whether text safety can be skipped for this feature, if not configured.
optional bool can_skip_text_safety = 5;
// Sampling parameters to use with the model.
// These will override global defaults, but not per session configurations.
optional SamplingParams sampling_params = 6;
// Feature defined metadata.
optional Any feature_metadata = 7;
}
message OnDeviceModelExecutionInputConfig {
// The base name of the request metadata proto this input config is applicable
// for.
optional string request_base_name = 1;
// An ordered list of substituted strings to apply for input context.
//
// These will be concatenated in the order they appear here if the conditions
// apply based on the input request.
repeated SubstitutedString input_context_substitutions = 3;
// An ordered list of substituted strings to apply when the model is executed.
//
// These will be concatenated in the order they appear here if the conditions
// apply based on the input request.
//
// It is expected that the resulting string here will be concatenated with the
// resulting string for the input context if `should_ignore_input_context` is
// not set on any of the used substitutions.
repeated SubstitutedString execute_substitutions = 2;
// The number of tokens generated from `input_context_substitutions` that are
// guaranteed to be processed before context processing can be cancelled
// (truncating any unprocessed tokens) to begin execution. A default value is
// used when this is not set. To disable cancellations, set this to be the
// same as `max_context_tokens`.
optional uint32 min_context_tokens = 4;
// The maximum number of tokens that can be generated from
// `input_context_substitutions`. Tokens in excess of this number will be
// truncated. Uses a default value when unset.
optional uint32 max_context_tokens = 5;
// The maximum number of tokens that can be generated from
// `execute_substitutions`. Tokens in excess of this number will be truncated.
// Uses a default value when unset.
optional uint32 max_execute_tokens = 6;
}
// Rules that generated output must follow.
message ResponseConstraint {
oneof format {
// A JSON Schema describing an llguidance constraint on the output. See
// https://github.com/guidance-ai/llguidance/blob/main/docs/json_schema.md
string json_schema = 1;
// A regex describing the llguidance constraint on the output.
// See https://docs.rs/regex/latest/regex/#syntax for syntax.
string regex = 2;
}
}
message OnDeviceModelExecutionOutputConfig {
reserved 7;
// The proto type to use for the response metadata.
optional string proto_type = 1;
// The proto field to populate the output string with. Applies for
// PARSER_KIND_SIMPLE only.
optional ProtoField proto_field = 2;
// Rules that result in redacting the output.
optional RedactRules redact_rules = 3;
// Which output parsing implementation to use.
optional ParserKind parser_kind = 4;
// A config for specifying parsing logic for the fieldwise parser.
optional FieldwiseParserConfig fieldwise_parser_config = 8;
// Whether to suppress parsing incomplete output.
optional bool suppress_parsing_incomplete_output = 5;
// The maximum number of tokens that can be generated as output.
optional uint32 max_output_tokens = 6;
// The response constraint to use when generating output.
optional ResponseConstraint response_constraint = 9;
}
message TextSafetyFallbackConfig {
// The proto field in the input request that contains the URL this request was
// activated on, if any.
optional ProtoField input_url_proto_field = 1;
}
message OnDeviceModelValidationConfig {
// Prompts and responses used for basic model validation.
repeated ValidationPrompt validation_prompts = 1;
}
message ValidationPrompt {
// The input prompt to send.
optional string prompt = 1;
// A string that the output is expected to contain. This is not case
// sensitive.
optional string expected_output = 2;
}
message SamplingParams {
optional uint32 top_k = 1;
optional float temperature = 2;
}