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

edition = "2023";

package optimization_guide.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 = "PromptApiProto";

// DO NOT EDIT THIS FILE DIRECTLY!
//
// This file is generated in g3 and then synced to Chrome. Instead, please refer to
// http://go/chrome-mqls-onboarding (Google-internal link), and then changes will
// be synced with Chrome automatically.

message PromptApiLoggingData {
  PromptApiRequest request = 1 [features = { field_presence: EXPLICIT }];

  PromptApiResponse response = 2 [features = { field_presence: EXPLICIT }];

  // Metadata is added to force it to be included in the Chrome version.
  PromptApiMetadata metadata = 3 [features = { field_presence: EXPLICIT }];
}

// A request from PromptApi for prompt execution call.
message PromptApiRequest {
  // The values passed as initialPrompts for the session.
  // See https://github.com/explainers-by-googlers/prompt-api#n-shot-prompting
  repeated PromptApiPrompt initial_prompts = 1;

  // Previously executed prompts, and their responses.
  // See
  // https://github.com/explainers-by-googlers/prompt-api#session-persistence-and-cloning
  // Typically this will be some alternating sequence of 'user' and 'assistant'
  // prompts.
  repeated PromptApiPrompt prompt_history = 2;

  // The new prompts for the current execution request (e.g. what is passed to
  // prompt()/promptStreaming()) Typically this will be a single 'user' prompt.
  repeated PromptApiPrompt current_prompts = 3;
}

// A single part of a prompt.
// See https://github.com/explainers-by-googlers/prompt-api#n-shot-prompting
message PromptApiPrompt {
  // The content for this prompt.
  oneof kind {
    string text = 2;

    Media media = 3;
  }

  // The role for this prompt.
  PromptApiRole role = 1 [features = { field_presence: EXPLICIT }];
}

message PromptApiResponse {
  string output = 1 [features = { field_presence: EXPLICIT }];
}

// Type for OnDeviceModelExecutionFeatureConfig::feature_metadata.
message PromptApiMetadata {
  // A version for config changes that require implementor updates.
  // Version 0->2 Changes from using StringValue -> PromptApiRequest.
  uint32 version = 1 [features = { field_presence: EXPLICIT }];

  // 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 [features = { field_presence: EXPLICIT }];

  reserved 2;
}

// A prompt role.
// See https://github.com/explainers-by-googlers/prompt-api#n-shot-prompting
enum PromptApiRole {
  PROMPT_API_ROLE_UNSPECIFIED = 0;

  PROMPT_API_ROLE_SYSTEM = 1;

  PROMPT_API_ROLE_ASSISTANT = 2;

  PROMPT_API_ROLE_USER = 3;
}
