| File: Contents\FunctionResultContent.cs | |
| Project: ..\..\..\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; using System.Diagnostics; using System.Text.Json; using System.Text.Json.Serialization; namespace Microsoft.Extensions.AI; /// <summary> /// Represents the result of a function call. /// </summary> [DebuggerDisplay("{DebuggerDisplay,nq}")] public class FunctionResultContent : ToolResultContent { /// <summary> /// Initializes a new instance of the <see cref="FunctionResultContent"/> class. /// </summary> /// <param name="callId">The function call ID for which this is the result.</param> /// <param name="result"> /// <see langword="null"/> if the function returned <see langword="null"/> or was void-returning /// and thus had no result, or if the function call failed. Typically, however, to provide meaningfully representative /// information to an AI service, a human-readable representation of those conditions should be supplied. /// </param> [JsonConstructor] public FunctionResultContent(string callId, object? result) : base(callId) { Result = result; } /// <summary> /// Gets or sets the result of the function call, or a generic error message if the function call failed. /// </summary> /// <remarks> /// <see langword="null"/> if the function returned <see langword="null"/> or was void-returning /// and thus had no result, or if the function call failed. Typically, however, to provide meaningfully representative /// information to an AI service, a human-readable representation of those conditions should be supplied. /// </remarks> public object? Result { get; set; } /// <summary> /// Gets or sets an exception that occurred if the function call failed. /// </summary> /// <remarks> /// This property is for informational purposes only. The <see cref="Exception"/> is not serialized as part of serializing /// instances of this class with <see cref="JsonSerializer"/>. As such, upon deserialization, this property will be <see langword="null"/>. /// Consumers should not rely on <see langword="null"/> indicating success. /// </remarks> [JsonIgnore] public Exception? Exception { get; set; } /// <summary>Gets a string representing this instance to display in the debugger.</summary> [DebuggerBrowsable(DebuggerBrowsableState.Never)] private string DebuggerDisplay { get { string display = "FunctionResult = "; if (CallId is not null) { display += $"{CallId}, "; } display += Exception is not null ? $"{Exception.GetType().Name}(\"{Exception.Message}\")" : $"{Result?.ToString() ?? "(null)"}"; return display; } } }