// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";

package optimization_guide.proto;

import "components/optimization_guide/proto/string_value.proto";
import "components/optimization_guide/proto/on_device_model_execution_config.proto";
import "components/optimization_guide/proto/features/media.proto";

option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.optimization_guide.features.proto";

option java_outer_classname = "PromptApi";

message PromptApiLoggingData {
  PromptApiRequest request = 1;
  StringValue response = 2;
}

enum PromptApiRole {
  PROMPT_API_ROLE_UNSPECIFIED = 0;
  PROMPT_API_ROLE_SYSTEM = 1;
  PROMPT_API_ROLE_ASSISTANT = 2;
  PROMPT_API_ROLE_USER = 3;
}

message PromptApiPrompt {
  PromptApiRole role = 1;
  oneof kind {
    string text = 2;
    Media media = 3;
  }
}

// A request from PromptApi for prompt execution call.
message PromptApiRequest {
  // The values passed as initialPrompts for the session.
  repeated PromptApiPrompt initial_prompts = 1;

  // Previously executed prompts, and their responses.
  repeated PromptApiPrompt prompt_history = 2;

  // The new prompts for the current execution request.
  repeated PromptApiPrompt current_prompts = 3;
}

// Type for OnDeviceModelExecutionFeatureConfig::feature_metadata.
message PromptApiMetadata {
  reserved 2;

  // A version for config changes that require implementor updates.
  // Version 0->2 Changes from using StringValue -> PromptApiRequest.
  uint32 version = 1;

  // The maximum value of top k and temperature that this feature can support.
  // If the provided value is largest than the max value, they will be clamped.
  SamplingParams max_sampling_params = 3;
}
