File: Contents\AIAnnotation.cs
Web Access
Project: src\src\Libraries\Microsoft.Extensions.AI.Abstractions\Microsoft.Extensions.AI.Abstractions.csproj (Microsoft.Extensions.AI.Abstractions)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Collections.Generic;
using System.Text.Json.Serialization;
 
namespace Microsoft.Extensions.AI;
 
/// <summary>
/// Represents an annotation on content.
/// </summary>
[JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]
[JsonDerivedType(typeof(CitationAnnotation), typeDiscriminator: "citation")]
public class AIAnnotation
{
    /// <summary>
    /// Initializes a new instance of the <see cref="AIAnnotation"/> class.
    /// </summary>
    public AIAnnotation()
    {
    }
 
    /// <summary>Gets or sets any target regions for the annotation, pointing to where in the associated <see cref="AIContent"/> this annotation applies.</summary>
    /// <remarks>
    /// The most common form of <see cref="AnnotatedRegion"/> is <see cref="TextSpanAnnotatedRegion"/>, which provides starting and ending character indices
    /// for <see cref="TextContent"/>.
    /// </remarks>
    public IList<AnnotatedRegion>? AnnotatedRegions { get; set; }
 
    /// <summary>Gets or sets the raw representation of the annotation from an underlying implementation.</summary>
    /// <remarks>
    /// If an <see cref="AIAnnotation"/> is created to represent some underlying object from another object
    /// model, this property can be used to store that original object. This can be useful for debugging or
    /// for enabling a consumer to access the underlying object model, if needed.
    /// </remarks>
    [JsonIgnore]
    public object? RawRepresentation { get; set; }
 
    /// <summary>
    /// Gets or sets additional metadata specific to the provider or source type.
    /// </summary>
    public AdditionalPropertiesDictionary? AdditionalProperties { get; set; }
}