<!--
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.
-->

<!--
This file is used to generate a comprehensive list of AI histograms
along with a detailed description for each histogram.

For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md

Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->

<histogram-configuration>

<histograms>

<variants name="AiOverlayToolName">
  <variant name="CloseCurrentTab"/>
  <variant name="FindAndHighlight"/>
  <variant name="GoBack"/>
  <variant name="GoForward"/>
  <variant name="OpenUrl"/>
  <variant name="PauseVideo"/>
  <variant name="PerformSearch"/>
  <variant name="PlayVideo"/>
  <variant name="ReloadPage"/>
  <variant name="Scroll"/>
  <variant name="SeekToTimestamp"/>
  <variant name="SwitchTab"/>
</variants>

<!-- LINT.IfChange(LanguageModelExpectedInputOrOutput) -->

<variants name="LanguageModelExpectedInputOrOutput">
  <variant name="ExpectedInputs" summary="Expected inputs."/>
  <variant name="ExpectedOutputs" summary="Expected outputs."/>
</variants>

<!-- LINT.ThenChange(//third_party/blink/renderer/modules/ai/language_model.cc:LanguageModelExpectedInputOrOutput) -->

<variants name="LanguageModelFunctionName">
  <variant name="availability" summary="Check availability of the model."/>
  <variant name="create" summary="Create a session."/>
</variants>

<variants name="SemanticEmbedderSignature">
  <variant name=".64" summary="Signature length 64"/>
  <variant name=".128" summary="Signature length 128"/>
  <variant name=".256" summary="Signature length 256"/>
  <variant name=".512" summary="Signature length 512"/>
  <variant name=".1024" summary="Signature length 1024"/>
  <variant name=".2048" summary="Signature length 2048"/>
</variants>

<!-- LINT.IfChange(SessionType) -->

<variants name="SessionType">
  <variant name="LanguageDetector" summary="AI language detector session"/>
  <variant name="LanguageModel" summary="AI language model session"/>
  <variant name="Proofreader" summary="AI proofreader session"/>
  <variant name="Rewriter" summary="AI rewriter session"/>
  <variant name="Summarizer" summary="AI summarizer session"/>
  <variant name="Translator" summary="AI translator session"/>
  <variant name="Writer" summary="AI writer session"/>
</variants>

<!-- LINT.ThenChange(//third_party/blink/renderer/modules/ai/ai_metrics.h:AISessionType) -->

<variants name="WritingAssistanceFunctionName">
  <variant name="availability" summary="Check availability of the model."/>
  <variant name="create" summary="Create a session."/>
</variants>

<variants name="WritingAssistanceType">
  <variant name="Rewriter" summary="AI rewriter session"/>
  <variant name="Summarizer" summary="AI summarizer session"/>
  <variant name="Writer" summary="AI writer session"/>
</variants>

<histogram name="AI.LanguageModel.APIUsage.Messages.Role"
    enum="LanguageModelInputRole" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded for each message provided to a LanguageModel `prompt` or
    `append` invocation. It can be used to measure the usage of the `role` of
    individual messages.
  </summary>
</histogram>

<histogram name="AI.LanguageModel.APIUsage.Messages.Text.Length"
    units="characters" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded for each message content provided to a LanguageModel
    `prompt` or `append` invocation. It can be used to measure the usage of the
    text length of individual messages.
  </summary>
</histogram>

<histogram name="AI.LanguageModel.APIUsage.Messages.Type"
    enum="LanguageModelInputType" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded for each message content provided to a LanguageModel
    `prompt` or `append` invocation. It can be used to measure the usage of the
    `type` of individual messages.
  </summary>
</histogram>

<histogram
    name="AI.LanguageModel.APIUsage.{LanguageModelFunctionName}.OptionsType"
    enum="LanguageModelCreateOptionsType" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the LanguageModel `create` or `availability`
    function is invoked. It can be used to measure whether no parameters, raw
    parameters, or categorical presets were used.
  </summary>
  <token key="LanguageModelFunctionName" variants="LanguageModelFunctionName"/>
</histogram>

<histogram
    name="AI.LanguageModel.APIUsage.{LanguageModelFunctionName}.SamplingMode"
    enum="AILanguageModelSamplingMode" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the LanguageModel `create` or `availability`
    function is invoked with a categorical preset. It can be used to measure the
    usage of specific sampling modes.
  </summary>
  <token key="LanguageModelFunctionName" variants="LanguageModelFunctionName"/>
</histogram>

<histogram
    name="AI.LanguageModel.APIUsage.{LanguageModelFunctionName}.TemperatureX1000"
    units="tempX1000" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the LanguageModel `create` or `availability`
    function is invoked. It can be used to measure the usage of the
    `temperature` option. It is only recorded when the option is set. The value
    is multiplied by 1000 to support floating point metrics. The value is in the
    range 0 to ~2000.
  </summary>
  <token key="LanguageModelFunctionName" variants="LanguageModelFunctionName"/>
</histogram>

<histogram name="AI.LanguageModel.APIUsage.{LanguageModelFunctionName}.TopK"
    units="tokens" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the LanguageModel `create` or `availability`
    function is invoked. It can be used to measure the usage of the `topK`
    option. It is only recorded when the option is set.
  </summary>
  <token key="LanguageModelFunctionName" variants="LanguageModelFunctionName"/>
</histogram>

<histogram
    name="AI.LanguageModel.APIUsage.{LanguageModelFunctionName}.{LanguageModelExpectedInputOrOutput}.Language"
    enum="LocaleCodeBCP47" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the LanguageModel `create` or `availability`
    function is invoked. It can be used to measure the usage of specified
    expected input or output languages. option. It is only recorded when the
    language(s) are specified.
  </summary>
  <token key="LanguageModelFunctionName" variants="LanguageModelFunctionName"/>
  <token key="LanguageModelExpectedInputOrOutput"
      variants="LanguageModelExpectedInputOrOutput"/>
</histogram>

<histogram
    name="AI.LanguageModel.APIUsage.{LanguageModelFunctionName}.{LanguageModelExpectedInputOrOutput}.Type"
    enum="LanguageModelInputType" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the LanguageModel `create` or `availability`
    function is invoked. It can be used to measure the usage of the
    `temperature` option. It is only recorded when the option is set.
  </summary>
  <token key="LanguageModelFunctionName" variants="LanguageModelFunctionName"/>
  <token key="LanguageModelExpectedInputOrOutput"
      variants="LanguageModelExpectedInputOrOutput"/>
</histogram>

<histogram name="AI.OverlayDialog.ToolCallInvoked.{ToolName}" enum="BooleanHit"
    expires_after="2027-04-03">
  <owner>gklassen@chromium.org</owner>
  <owner>bokan@chromium.org</owner>
  <summary>
    Records when the {ToolName} tool call is invoked in a conversation turn in
    the AI overlay dialog.
  </summary>
  <token key="ToolName" variants="AiOverlayToolName"/>
</histogram>

<histogram name="AI.SemanticEmbedder.EmbeddingsGenerationSucceeded"
    enum="BooleanSuccess" expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    Whether embeddings generation succeeded for the Gemma semantic embedder.
    Recorded each time an embedding is generated.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.EmbeddingsModelLoadDuration" units="ms"
    expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The duration of loading the embeddings model for the Gemma semantic
    embedder. Recorded when the model is loaded.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.EmbeddingsModelLoadSucceeded"
    enum="BooleanSuccess" expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    Whether loading the embeddings model succeeded for the Gemma semantic
    embedder. Recorded when the model is loaded.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.LaunchDuration" units="ms"
    expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The duration of launching the passage embeddings service and loading the
    models for the Gemma semantic embedder. Recorded when the models are loaded.
  </summary>
</histogram>

<histogram
    name="AI.SemanticEmbedder.PassageEmbeddingsGenerationDuration{SignatureStr}"
    units="ms" expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The duration of embeddings generation for the Gemma semantic embedder.
    Recorded when an embedding generation completes.
  </summary>
  <token key="SignatureStr" variants="SemanticEmbedderSignature"/>
</histogram>

<histogram
    name="AI.SemanticEmbedder.PassageEmbeddingsGenerationThreadDuration{SignatureStr}"
    units="ms" expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The thread duration of embeddings generation for the Gemma semantic
    embedder. Recorded when an embedding generation completes.
  </summary>
  <token key="SignatureStr" variants="SemanticEmbedderSignature"/>
</histogram>

<histogram name="AI.SemanticEmbedder.PassageTokenCount" units="tokens"
    expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The token count of a passage for the Gemma semantic embedder. Recorded after
    tokenization.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.SentencePieceModelLoadDuration" units="ms"
    expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The duration of loading the sentence piece model for the Gemma semantic
    embedder. Recorded when the model is loaded.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.SentencePieceModelLoadSucceeded"
    enum="BooleanSuccess" expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    Whether loading the sentence piece model succeeded for the Gemma semantic
    embedder. Recorded when the model is loaded.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.TaskDuration" units="ms"
    expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The duration of a semantic embedding task from creation to completion.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.TokenizationDuration" units="ms"
    expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    The duration of tokenization for the Gemma semantic embedder. Recorded when
    tokenization completes.
  </summary>
</histogram>

<histogram name="AI.SemanticEmbedder.TokenizationSucceeded"
    enum="BooleanSuccess" expires_after="2027-03-16">
  <owner>yinguang@chromium.org</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <summary>
    Whether tokenization succeeded for the Gemma semantic embedder. Recorded
    when tokenization completes.
  </summary>
</histogram>

<histogram name="AI.Session.{SessionType}.ContextTime" units="ms"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the time it takes to process prompt input. This is recorded each
    time a prompt is added.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.ContextTokens" units="tokens"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the total number of tokens in the session context window. Recorded
    each time model execution completes when context info is available.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.Crashed" enum="BooleanYesNo"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Records whether the model crashed while a session was active. Recorded each
    time a session is destroyed.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.FirstResponseTime" units="ms"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the time it takes until the first tokens of the response are
    received. This is recorded each time the model gives a response.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.PromptRequestSize" units="bytes"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the size of the prompt request in bytes. This is recorded each time
    when the model is executed.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.PromptResponseCallbackCount"
    units="times" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the number of times that the callback is triggered in one prompt
    request. This is recorded each time when the model execution completes.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.PromptResponseSize" units="bytes"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the size of the prompt response in bytes. This is recorded each
    time when the model execution completes.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.PromptResponseStatus"
    enum="AIModelStreamingResponseStatus" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Records the final response status for each prompt request. This is recorded
    each time when the stream completes or encounters errors.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.ResponseCompleteTime" units="ms"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the time it takes until the full response is complete. This is
    recorded each time the model gives a response.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram name="AI.Session.{SessionType}.ResponseTokens" units="tokens"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Measures the number of tokens in the completed response. This is recorded
    each time the model gives a response.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram
    name="AI.Summarizer.APIUsage.{WritingAssistanceFunctionName}.CoreOptionType"
    enum="WritingAssistanceMetricsOptionType" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the WritingAssistance function is invoked.
    It can be used to measure the usage of the `type` option.
  </summary>
  <token key="WritingAssistanceFunctionName"
      variants="WritingAssistanceFunctionName"/>
</histogram>

<histogram name="AI.Translation.LoadTranslateKitErrorCode"
    enum="WinGetLastError" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Records the error code of a failed attempt to load the TranslateKit binary
    for on-device translation. It may happen when browser tries to initialize
    the OnDeviceTranslationService. This is only logged on Windows. See
    on_device_translation::TranslateKitClient for more details.
  </summary>
</histogram>

<histogram name="AI.Translation.LoadTranslateKitResult"
    enum="LoadTranslateKitResult" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>evliu@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Records the result of an attempt to load the TranslateKit binary for
    on-device translation. It is logged when browser tries to initialize the
    OnDeviceTranslationService. See on_device_translation::TranslateKitClient
    for more details.
  </summary>
</histogram>

<histogram name="AI.{SessionType}.AvailabilityV2" enum="Availability"
    expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    Records the availability of model execution as returned in methods like
    `LanguageModel.availability()`.
  </summary>
  <token key="SessionType" variants="SessionType"/>
</histogram>

<histogram
    name="AI.{WritingAssistanceType}.APIUsage.{WritingAssistanceFunctionName}.CoreOptionFormat"
    enum="WritingAssistanceMetricsOptionFormat" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the WritingAssistance function is invoked.
    It can be used to measure the usage of the `format` option.
  </summary>
  <token key="WritingAssistanceType" variants="WritingAssistanceType"/>
  <token key="WritingAssistanceFunctionName"
      variants="WritingAssistanceFunctionName"/>
</histogram>

<histogram
    name="AI.{WritingAssistanceType}.APIUsage.{WritingAssistanceFunctionName}.CoreOptionLength"
    enum="WritingAssistanceMetricsOptionLength" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the WritingAssistance function is invoked.
    It can be used to measure the usage of the `length` option.
  </summary>
  <token key="WritingAssistanceType" variants="WritingAssistanceType"/>
  <token key="WritingAssistanceFunctionName"
      variants="WritingAssistanceFunctionName"/>
</histogram>

<histogram
    name="AI.{WritingAssistanceType}.APIUsage.{WritingAssistanceFunctionName}.CoreOptionTone"
    enum="WritingAssistanceMetricsOptionTone" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the WritingAssistance function is invoked.
    It can be used to measure the usage of the `tone` option.
  </summary>
  <token key="WritingAssistanceType" variants="WritingAssistanceType"/>
  <token key="WritingAssistanceFunctionName"
      variants="WritingAssistanceFunctionName"/>
</histogram>

<histogram
    name="AI.{WritingAssistanceType}.APIUsage.{WritingAssistanceFunctionName}.{LanguageMetric}"
    enum="LocaleCodeBCP47" expires_after="2027-03-16">
  <owner>iahouma@google.com</owner>
  <owner>ohjerry@google.com</owner>
  <owner>chrome-chia-dev@google.com</owner>
  <owner>src/chrome/browser/ai/OWNERS</owner>
  <summary>
    This is recorded each time when the WritingAssistance function is invoked.
    It can be used to measure the usage of the language options.
  </summary>
  <token key="WritingAssistanceType" variants="WritingAssistanceType"/>
  <token key="WritingAssistanceFunctionName"
      variants="WritingAssistanceFunctionName"/>
  <token key="LanguageMetric">
    <variant name="ExpectedContextLanguage"
        summary="Expected context language specified."/>
    <variant name="ExpectedInputLanguage"
        summary="Expected input language specified."/>
    <variant name="OutputLanguage" summary="Output language specified."/>
  </token>
</histogram>

</histograms>

</histogram-configuration>
