diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs
index 738f724dcd2..fe6ef70187c 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatOptions.cs
@@ -197,7 +197,7 @@ protected ChatOptions(ChatOptions? other)
///
[Experimental("MEAI001")]
[JsonIgnore]
- public object? ContinuationToken { get; set; }
+ public ResponseContinuationToken? ContinuationToken { get; set; }
///
/// Gets or sets a callback responsible for creating the raw representation of the chat options from an underlying implementation.
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs
index 6f7ca4eeda2..1b535b3a244 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponse.cs
@@ -102,7 +102,7 @@ public IList Messages
///
[Experimental("MEAI001")]
[JsonIgnore]
- public object? ContinuationToken { get; set; }
+ public ResponseContinuationToken? ContinuationToken { get; set; }
/// Gets or sets the raw representation of the chat response from an underlying implementation.
///
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs
index f1ad70cd22f..22f0dde1530 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/ChatCompletion/ChatResponseUpdate.cs
@@ -172,7 +172,7 @@ public IList Contents
///
[Experimental("MEAI001")]
[JsonIgnore]
- public object? ContinuationToken { get; set; }
+ public ResponseContinuationToken? ContinuationToken { get; set; }
/// Gets a object to display in the debugger display.
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/CompatibilitySuppressions.xml b/src/Libraries/Microsoft.Extensions.AI.Abstractions/CompatibilitySuppressions.xml
index 8488d3969c4..993fd3d3ff0 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/CompatibilitySuppressions.xml
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/CompatibilitySuppressions.xml
@@ -1,6 +1,27 @@
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatOptions.get_ContinuationToken
+ lib/net462/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net462/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponse.get_ContinuationToken
+ lib/net462/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net462/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponseUpdate.get_ContinuationToken
+ lib/net462/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net462/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
CP0002
M:Microsoft.Extensions.AI.HostedMcpServerTool.get_Headers
@@ -22,6 +43,27 @@
lib/net462/Microsoft.Extensions.AI.Abstractions.dll
true
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatOptions.get_ContinuationToken
+ lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponse.get_ContinuationToken
+ lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponseUpdate.get_ContinuationToken
+ lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
CP0002
M:Microsoft.Extensions.AI.HostedMcpServerTool.get_Headers
@@ -43,6 +85,27 @@
lib/net8.0/Microsoft.Extensions.AI.Abstractions.dll
true
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatOptions.get_ContinuationToken
+ lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponse.get_ContinuationToken
+ lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponseUpdate.get_ContinuationToken
+ lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
CP0002
M:Microsoft.Extensions.AI.HostedMcpServerTool.get_Headers
@@ -64,6 +127,27 @@
lib/net9.0/Microsoft.Extensions.AI.Abstractions.dll
true
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatOptions.get_ContinuationToken
+ lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponse.get_ContinuationToken
+ lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
+
+ CP0002
+ M:Microsoft.Extensions.AI.ChatResponseUpdate.get_ContinuationToken
+ lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.dll
+ lib/netstandard2.0/Microsoft.Extensions.AI.Abstractions.dll
+ true
+
CP0002
M:Microsoft.Extensions.AI.HostedMcpServerTool.get_Headers
diff --git a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.json b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.json
index b5ef3774b45..26512c88a28 100644
--- a/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.json
+++ b/src/Libraries/Microsoft.Extensions.AI.Abstractions/Microsoft.Extensions.AI.Abstractions.json
@@ -1503,7 +1503,7 @@
},
{
"Member": "override string Microsoft.Extensions.AI.DelegatingAIFunction.ToString();",
- "Stage": "Experimental"
+ "Stage": "Stable"
}
],
"Properties": [
@@ -1609,42 +1609,6 @@
}
]
},
- {
- "Type": "class Microsoft.Extensions.AI.DelegatingSpeechToTextClient : Microsoft.Extensions.AI.ISpeechToTextClient, System.IDisposable",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.AI.DelegatingSpeechToTextClient.DelegatingSpeechToTextClient(Microsoft.Extensions.AI.ISpeechToTextClient innerClient);",
- "Stage": "Experimental"
- },
- {
- "Member": "void Microsoft.Extensions.AI.DelegatingSpeechToTextClient.Dispose();",
- "Stage": "Experimental"
- },
- {
- "Member": "virtual void Microsoft.Extensions.AI.DelegatingSpeechToTextClient.Dispose(bool disposing);",
- "Stage": "Experimental"
- },
- {
- "Member": "virtual object? Microsoft.Extensions.AI.DelegatingSpeechToTextClient.GetService(System.Type serviceType, object? serviceKey = null);",
- "Stage": "Experimental"
- },
- {
- "Member": "virtual System.Collections.Generic.IAsyncEnumerable Microsoft.Extensions.AI.DelegatingSpeechToTextClient.GetStreamingTextAsync(System.IO.Stream audioSpeechStream, Microsoft.Extensions.AI.SpeechToTextOptions? options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));",
- "Stage": "Experimental"
- },
- {
- "Member": "virtual System.Threading.Tasks.Task Microsoft.Extensions.AI.DelegatingSpeechToTextClient.GetTextAsync(System.IO.Stream audioSpeechStream, Microsoft.Extensions.AI.SpeechToTextOptions? options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));",
- "Stage": "Experimental"
- }
- ],
- "Properties": [
- {
- "Member": "Microsoft.Extensions.AI.ISpeechToTextClient Microsoft.Extensions.AI.DelegatingSpeechToTextClient.InnerClient { get; }",
- "Stage": "Experimental"
- }
- ]
- },
{
"Type": "class Microsoft.Extensions.AI.Embedding",
"Stage": "Stable",
@@ -2085,24 +2049,6 @@
}
]
},
- {
- "Type": "interface Microsoft.Extensions.AI.ISpeechToTextClient : System.IDisposable",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "object? Microsoft.Extensions.AI.ISpeechToTextClient.GetService(System.Type serviceType, object? serviceKey = null);",
- "Stage": "Experimental"
- },
- {
- "Member": "System.Collections.Generic.IAsyncEnumerable Microsoft.Extensions.AI.ISpeechToTextClient.GetStreamingTextAsync(System.IO.Stream audioSpeechStream, Microsoft.Extensions.AI.SpeechToTextOptions? options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));",
- "Stage": "Experimental"
- },
- {
- "Member": "System.Threading.Tasks.Task Microsoft.Extensions.AI.ISpeechToTextClient.GetTextAsync(System.IO.Stream audioSpeechStream, Microsoft.Extensions.AI.SpeechToTextOptions? options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));",
- "Stage": "Experimental"
- }
- ]
- },
{
"Type": "sealed class Microsoft.Extensions.AI.NoneChatToolMode : Microsoft.Extensions.AI.ChatToolMode",
"Stage": "Stable",
@@ -2145,304 +2091,6 @@
}
]
},
- {
- "Type": "static class Microsoft.Extensions.AI.SpeechToTextClientExtensions",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "static TService? Microsoft.Extensions.AI.SpeechToTextClientExtensions.GetService(this Microsoft.Extensions.AI.ISpeechToTextClient client, object? serviceKey = null);",
- "Stage": "Experimental"
- },
- {
- "Member": "static System.Collections.Generic.IAsyncEnumerable Microsoft.Extensions.AI.SpeechToTextClientExtensions.GetStreamingTextAsync(this Microsoft.Extensions.AI.ISpeechToTextClient client, Microsoft.Extensions.AI.DataContent audioSpeechContent, Microsoft.Extensions.AI.SpeechToTextOptions? options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));",
- "Stage": "Experimental"
- },
- {
- "Member": "static System.Threading.Tasks.Task Microsoft.Extensions.AI.SpeechToTextClientExtensions.GetTextAsync(this Microsoft.Extensions.AI.ISpeechToTextClient client, Microsoft.Extensions.AI.DataContent audioSpeechContent, Microsoft.Extensions.AI.SpeechToTextOptions? options = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "class Microsoft.Extensions.AI.SpeechToTextClientMetadata",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextClientMetadata.SpeechToTextClientMetadata(string? providerName = null, System.Uri? providerUri = null, string? defaultModelId = null);",
- "Stage": "Experimental"
- }
- ],
- "Properties": [
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextClientMetadata.DefaultModelId { get; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextClientMetadata.ProviderName { get; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.Uri? Microsoft.Extensions.AI.SpeechToTextClientMetadata.ProviderUri { get; }",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "class Microsoft.Extensions.AI.SpeechToTextOptions",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextOptions.SpeechToTextOptions();",
- "Stage": "Experimental"
- },
- {
- "Member": "virtual Microsoft.Extensions.AI.SpeechToTextOptions Microsoft.Extensions.AI.SpeechToTextOptions.Clone();",
- "Stage": "Experimental"
- }
- ],
- "Properties": [
- {
- "Member": "Microsoft.Extensions.AI.AdditionalPropertiesDictionary? Microsoft.Extensions.AI.SpeechToTextOptions.AdditionalProperties { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextOptions.ModelId { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.Func? Microsoft.Extensions.AI.SpeechToTextOptions.RawRepresentationFactory { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextOptions.SpeechLanguage { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "int? Microsoft.Extensions.AI.SpeechToTextOptions.SpeechSampleRate { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextOptions.TextLanguage { get; set; }",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "class Microsoft.Extensions.AI.SpeechToTextResponse",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponse.SpeechToTextResponse();",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponse.SpeechToTextResponse(System.Collections.Generic.IList contents);",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponse.SpeechToTextResponse(string? content);",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdate[] Microsoft.Extensions.AI.SpeechToTextResponse.ToSpeechToTextResponseUpdates();",
- "Stage": "Experimental"
- },
- {
- "Member": "override string Microsoft.Extensions.AI.SpeechToTextResponse.ToString();",
- "Stage": "Experimental"
- }
- ],
- "Properties": [
- {
- "Member": "Microsoft.Extensions.AI.AdditionalPropertiesDictionary? Microsoft.Extensions.AI.SpeechToTextResponse.AdditionalProperties { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.Collections.Generic.IList Microsoft.Extensions.AI.SpeechToTextResponse.Contents { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.TimeSpan? Microsoft.Extensions.AI.SpeechToTextResponse.EndTime { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextResponse.ModelId { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "object? Microsoft.Extensions.AI.SpeechToTextResponse.RawRepresentation { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextResponse.ResponseId { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.TimeSpan? Microsoft.Extensions.AI.SpeechToTextResponse.StartTime { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string Microsoft.Extensions.AI.SpeechToTextResponse.Text { get; }",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "class Microsoft.Extensions.AI.SpeechToTextResponseUpdate",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdate.SpeechToTextResponseUpdate();",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdate.SpeechToTextResponseUpdate(System.Collections.Generic.IList contents);",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdate.SpeechToTextResponseUpdate(string? content);",
- "Stage": "Experimental"
- },
- {
- "Member": "override string Microsoft.Extensions.AI.SpeechToTextResponseUpdate.ToString();",
- "Stage": "Experimental"
- }
- ],
- "Properties": [
- {
- "Member": "Microsoft.Extensions.AI.AdditionalPropertiesDictionary? Microsoft.Extensions.AI.SpeechToTextResponseUpdate.AdditionalProperties { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.Collections.Generic.IList Microsoft.Extensions.AI.SpeechToTextResponseUpdate.Contents { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.TimeSpan? Microsoft.Extensions.AI.SpeechToTextResponseUpdate.EndTime { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind Microsoft.Extensions.AI.SpeechToTextResponseUpdate.Kind { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextResponseUpdate.ModelId { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "object? Microsoft.Extensions.AI.SpeechToTextResponseUpdate.RawRepresentation { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string? Microsoft.Extensions.AI.SpeechToTextResponseUpdate.ResponseId { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "System.TimeSpan? Microsoft.Extensions.AI.SpeechToTextResponseUpdate.StartTime { get; set; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string Microsoft.Extensions.AI.SpeechToTextResponseUpdate.Text { get; }",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "static class Microsoft.Extensions.AI.SpeechToTextResponseUpdateExtensions",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "static Microsoft.Extensions.AI.SpeechToTextResponse Microsoft.Extensions.AI.SpeechToTextResponseUpdateExtensions.ToSpeechToTextResponse(this System.Collections.Generic.IEnumerable updates);",
- "Stage": "Experimental"
- },
- {
- "Member": "static System.Threading.Tasks.Task Microsoft.Extensions.AI.SpeechToTextResponseUpdateExtensions.ToSpeechToTextResponseAsync(this System.Collections.Generic.IAsyncEnumerable updates, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken));",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "readonly struct Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind : System.IEquatable",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.SpeechToTextResponseUpdateKind(string value);",
- "Stage": "Experimental"
- },
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.SpeechToTextResponseUpdateKind();",
- "Stage": "Experimental"
- },
- {
- "Member": "override bool Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Equals(object? obj);",
- "Stage": "Experimental"
- },
- {
- "Member": "bool Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Equals(Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind other);",
- "Stage": "Experimental"
- },
- {
- "Member": "override int Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.GetHashCode();",
- "Stage": "Experimental"
- },
- {
- "Member": "static bool Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.operator ==(Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind left, Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind right);",
- "Stage": "Experimental"
- },
- {
- "Member": "static bool Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.operator !=(Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind left, Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind right);",
- "Stage": "Experimental"
- },
- {
- "Member": "override string Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.ToString();",
- "Stage": "Experimental"
- }
- ],
- "Properties": [
- {
- "Member": "static Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Error { get; }",
- "Stage": "Experimental"
- },
- {
- "Member": "static Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.SessionClose { get; }",
- "Stage": "Experimental"
- },
- {
- "Member": "static Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.SessionOpen { get; }",
- "Stage": "Experimental"
- },
- {
- "Member": "static Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.TextUpdated { get; }",
- "Stage": "Experimental"
- },
- {
- "Member": "static Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.TextUpdating { get; }",
- "Stage": "Experimental"
- },
- {
- "Member": "string Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Value { get; }",
- "Stage": "Experimental"
- }
- ]
- },
- {
- "Type": "sealed class Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Converter",
- "Stage": "Experimental",
- "Methods": [
- {
- "Member": "Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Converter.Converter();",
- "Stage": "Experimental"
- },
- {
- "Member": "override Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Converter.Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options);",
- "Stage": "Experimental"
- },
- {
- "Member": "override void Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind.Converter.Write(System.Text.Json.Utf8JsonWriter writer, Microsoft.Extensions.AI.SpeechToTextResponseUpdateKind value, System.Text.Json.JsonSerializerOptions options);",
- "Stage": "Experimental"
- }
- ]
- },
{
"Type": "sealed class Microsoft.Extensions.AI.TextContent : Microsoft.Extensions.AI.AIContent",
"Stage": "Stable",
diff --git a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesContinuationToken.cs b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesContinuationToken.cs
index 229f8b40f69..8e6f5ffd71c 100644
--- a/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesContinuationToken.cs
+++ b/src/Libraries/Microsoft.Extensions.AI.OpenAI/OpenAIResponsesContinuationToken.cs
@@ -53,19 +53,14 @@ public override ReadOnlyMemory ToBytes()
///
/// The token to create the from.
/// A equivalent of the provided .
- internal static OpenAIResponsesContinuationToken FromToken(object token)
+ internal static OpenAIResponsesContinuationToken FromToken(ResponseContinuationToken token)
{
if (token is OpenAIResponsesContinuationToken openAIResponsesContinuationToken)
{
return openAIResponsesContinuationToken;
}
- if (token is not ResponseContinuationToken)
- {
- Throw.ArgumentException(nameof(token), "Failed to create OpenAIResponsesResumptionToken from provided token because it is not of type ResponseContinuationToken.");
- }
-
- ReadOnlyMemory data = ((ResponseContinuationToken)token).ToBytes();
+ ReadOnlyMemory data = token.ToBytes();
if (data.Length == 0)
{
diff --git a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs
index 6a7f82302ea..830563a60e1 100644
--- a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs
+++ b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientIntegrationTests.cs
@@ -315,7 +315,7 @@ public async Task GetStreamingResponseAsync_BackgroundResponses_StreamResumption
int updateNumber = 0;
string responseText = "";
- object? continuationToken = null;
+ ResponseContinuationToken? continuationToken = null;
await foreach (var update in ChatClient.GetStreamingResponseAsync("What is the capital of France?", chatOptions))
{
diff --git a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientTests.cs b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientTests.cs
index 299714141fa..0f033185878 100644
--- a/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientTests.cs
+++ b/test/Libraries/Microsoft.Extensions.AI.OpenAI.Tests/OpenAIResponseClientTests.cs
@@ -5151,19 +5151,14 @@ internal TestOpenAIResponsesContinuationToken(string responseId)
/// Gets or sets the sequence number of a streamed update.
internal int? SequenceNumber { get; set; }
- internal static TestOpenAIResponsesContinuationToken FromToken(object token)
+ internal static TestOpenAIResponsesContinuationToken FromToken(ResponseContinuationToken token)
{
if (token is TestOpenAIResponsesContinuationToken testOpenAIResponsesContinuationToken)
{
return testOpenAIResponsesContinuationToken;
}
- if (token is not ResponseContinuationToken)
- {
- throw new ArgumentException("Failed to create OpenAIResponsesResumptionToken from provided token because it is not of type ResponseContinuationToken.", nameof(token));
- }
-
- ReadOnlyMemory data = ((ResponseContinuationToken)token).ToBytes();
+ ReadOnlyMemory data = token.ToBytes();
Utf8JsonReader reader = new(data.Span);