Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion codegen/generator/src/OpenAI.Library.Plugin.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.TypeSpec.Generator.ClientModel" Version="1.0.0-alpha.20251001.2" />
<PackageReference Include="Microsoft.TypeSpec.Generator.ClientModel" Version="1.0.0-alpha.20251022.4" />
</ItemGroup>

<!-- Copy output to package dist path for local execution and -->
Expand Down
8 changes: 4 additions & 4 deletions codegen/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@
],
"dependencies": {
"@open-ai/plugin": "file:",
"@azure-tools/typespec-client-generator-core": "0.60.0",
"@typespec/http-client-csharp": "1.0.0-alpha.20251001.2",
"@typespec/http": "1.4.0",
"@typespec/openapi": "1.4.0"
"@azure-tools/typespec-client-generator-core": "0.61.0",
"@typespec/http-client-csharp": "1.0.0-alpha.20251022.4",
"@typespec/http": "1.5.0",
"@typespec/openapi": "1.5.0"
},
"devDependencies": {
"@types/node": "^22.8.1",
Expand Down
562 changes: 281 additions & 281 deletions package-lock.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/Generated/AssistantClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ internal virtual PipelineMessage CreateGetAssistantsRequest(int? limit, string o
uri.AppendPath("/assistants", false);
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down
2 changes: 1 addition & 1 deletion src/Generated/BatchClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ internal virtual PipelineMessage CreateGetBatchesRequest(string after, int? limi
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200);
PipelineRequest request = message.Request;
Expand Down
20 changes: 20 additions & 0 deletions src/Generated/BatchClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
using System;
using System.ClientModel;
using System.ClientModel.Primitives;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
using OpenAI;

Expand All @@ -22,6 +24,24 @@ protected BatchClient()

public ClientPipeline Pipeline { get; }

public virtual ClientResult<InternalBatchJob> CreateBatch(string inputFileId, InternalCreateBatchRequestEndpoint endpoint, IDictionary<string, string> metadata = default, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(inputFileId, nameof(inputFileId));

InternalCreateBatchRequest spreadModel = new InternalCreateBatchRequest(default, endpoint, "24h", metadata, default);
ClientResult result = this.CreateBatch(spreadModel, cancellationToken.CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null);
return ClientResult.FromValue((InternalBatchJob)result, result.GetRawResponse());
}

public virtual async Task<ClientResult<InternalBatchJob>> CreateBatchAsync(string inputFileId, InternalCreateBatchRequestEndpoint endpoint, IDictionary<string, string> metadata = default, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(inputFileId, nameof(inputFileId));

InternalCreateBatchRequest spreadModel = new InternalCreateBatchRequest(default, endpoint, "24h", metadata, default);
ClientResult result = await this.CreateBatchAsync(spreadModel, cancellationToken.CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return ClientResult.FromValue((InternalBatchJob)result, result.GetRawResponse());
}

public virtual ClientResult GetBatch(string batchId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(batchId, nameof(batchId));
Expand Down
6 changes: 3 additions & 3 deletions src/Generated/ChatClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ internal virtual PipelineMessage CreateGetChatCompletionsRequest(string after, i
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand All @@ -40,7 +40,7 @@ internal virtual PipelineMessage CreateGetChatCompletionsRequest(string after, i
// Plugin customization: Properly handle metadata query parameters
uri.AppendQuery($"metadata[{@param.Key}]", @param.Value, true);
}
// Plugin customization: remove unnecessary AppendQueryDelimited for metadata
uri.AppendQueryDelimited("metadata", list, ",", escape: true);
}
if (model != null)
{
Expand Down Expand Up @@ -121,7 +121,7 @@ internal virtual PipelineMessage CreateGetChatCompletionMessagesRequest(string c
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down
4 changes: 2 additions & 2 deletions src/Generated/ContainerClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ internal virtual PipelineMessage CreateGetContainersRequest(int? limit, string o
uri.AppendPath("/containers", false);
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down Expand Up @@ -103,7 +103,7 @@ internal virtual PipelineMessage CreateGetContainerFilesRequest(string container
uri.AppendPath("/files", false);
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down
6 changes: 3 additions & 3 deletions src/Generated/EvaluationClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ internal virtual PipelineMessage CreateGetEvalsRequest(string after, int? limit,
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down Expand Up @@ -113,7 +113,7 @@ internal virtual PipelineMessage CreateGetEvalRunsRequest(string evalId, string
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down Expand Up @@ -206,7 +206,7 @@ internal virtual PipelineMessage CreateGetEvalRunOutputItemsRequest(string evalI
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (status != null)
{
Expand Down
8 changes: 4 additions & 4 deletions src/Generated/FineTuningClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ internal virtual PipelineMessage CreateGetFineTuningCheckpointPermissionsRequest
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down Expand Up @@ -100,7 +100,7 @@ internal virtual PipelineMessage CreateGetPaginatedFineTuningJobsRequest(string
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200);
PipelineRequest request = message.Request;
Expand Down Expand Up @@ -149,7 +149,7 @@ internal virtual PipelineMessage CreateGetFineTuningJobCheckpointsRequest(string
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200);
PipelineRequest request = message.Request;
Expand All @@ -171,7 +171,7 @@ internal virtual PipelineMessage CreateGetFineTuningEventsRequest(string fineTun
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
PipelineMessage message = Pipeline.CreateMessage(uri.ToUri(), "GET", PipelineMessageClassifier200);
PipelineRequest request = message.Request;
Expand Down
16 changes: 8 additions & 8 deletions src/Generated/Internal/ClientUriBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,17 @@ public void AppendPath(string value, bool escape)

public void AppendPath(int value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);

public void AppendPath(byte[] value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);
public void AppendPath(byte[] value, SerializationFormat format = SerializationFormat.Default, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);

public void AppendPath(DateTimeOffset value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);
public void AppendPath(DateTimeOffset value, SerializationFormat format = SerializationFormat.Default, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);

public void AppendPath(TimeSpan value, string format, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);
public void AppendPath(TimeSpan value, SerializationFormat format = SerializationFormat.Default, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value, format), escape);

public void AppendPath(Guid value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);

public void AppendPath(long value, bool escape = true) => AppendPath(TypeFormatters.ConvertToString(value), escape);

public void AppendPathDelimited<T>(IEnumerable<T> value, string delimiter, string format = null, bool escape = true)
public void AppendPathDelimited<T>(IEnumerable<T> value, string delimiter, SerializationFormat format = SerializationFormat.Default, bool escape = true)
{
delimiter ??= ",";
IEnumerable<string> stringValues = value.Select(v => TypeFormatters.ConvertToString(v, format));
Expand All @@ -90,9 +90,9 @@ public void AppendQuery(string name, string value, bool escape)

public void AppendQuery(string name, float value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);

public void AppendQuery(string name, DateTimeOffset value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);
public void AppendQuery(string name, DateTimeOffset value, SerializationFormat format = SerializationFormat.Default, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);

public void AppendQuery(string name, TimeSpan value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);
public void AppendQuery(string name, TimeSpan value, SerializationFormat format = SerializationFormat.Default, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);

public void AppendQuery(string name, double value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);

Expand All @@ -104,11 +104,11 @@ public void AppendQuery(string name, string value, bool escape)

public void AppendQuery(string name, TimeSpan value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);

public void AppendQuery(string name, byte[] value, string format, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);
public void AppendQuery(string name, byte[] value, SerializationFormat format = SerializationFormat.Default, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value, format), escape);

public void AppendQuery(string name, Guid value, bool escape = true) => AppendQuery(name, TypeFormatters.ConvertToString(value), escape);

public void AppendQueryDelimited<T>(string name, IEnumerable<T> value, string delimiter, string format = null, bool escape = true)
public void AppendQueryDelimited<T>(string name, IEnumerable<T> value, string delimiter, SerializationFormat format = SerializationFormat.Default, bool escape = true)
{
delimiter ??= ",";
IEnumerable<string> stringValues = value.Select(v => TypeFormatters.ConvertToString(v, format));
Expand Down
2 changes: 1 addition & 1 deletion src/Generated/Internal/PipelineRequestHeadersExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public static void SetDelimited<T>(this PipelineRequestHeaders headers, string n
headers.Set(name, string.Join(delimiter, stringValues));
}

public static void SetDelimited<T>(this PipelineRequestHeaders headers, string name, IEnumerable<T> value, string delimiter, string format)
public static void SetDelimited<T>(this PipelineRequestHeaders headers, string name, IEnumerable<T> value, string delimiter, SerializationFormat format)
{
IEnumerable<string> stringValues = value.Select(v => TypeFormatters.ConvertToString(v, format));
headers.Set(name, string.Join(delimiter, stringValues));
Expand Down
28 changes: 28 additions & 0 deletions src/Generated/Internal/SerializationFormat.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// <auto-generated/>

#nullable disable

namespace OpenAI
{
internal enum SerializationFormat
{
Default = 0,
DateTime_RFC1123 = 1,
DateTime_RFC3339 = 2,
DateTime_RFC7231 = 3,
DateTime_ISO8601 = 4,
DateTime_Unix = 5,
Date_ISO8601 = 6,
Duration_ISO8601 = 7,
Duration_Constant = 8,
Duration_Seconds = 9,
Duration_Seconds_Float = 10,
Duration_Seconds_Double = 11,
Duration_Milliseconds = 12,
Duration_Milliseconds_Float = 13,
Duration_Milliseconds_Double = 14,
Time_ISO8601 = 15,
Bytes_Base64Url = 16,
Bytes_Base64 = 17
}
}
54 changes: 41 additions & 13 deletions src/Generated/Internal/TypeFormatters.cs
Original file line number Diff line number Diff line change
Expand Up @@ -131,20 +131,48 @@ public static byte[] FromBase64UrlString(string value)
_ => TimeSpan.ParseExact(value, format, CultureInfo.InvariantCulture)
};

public static string ConvertToString(object value, string format = null) => value switch
public static string ToFormatSpecifier(SerializationFormat format) => format switch
{
null => "null",
string s => s,
bool b => ToString(b),
int or float or double or long or decimal => ((IFormattable)value).ToString(DefaultNumberFormat, CultureInfo.InvariantCulture),
byte[] b0 when format != null => ToString(b0, format),
IEnumerable<string> s0 => string.Join(",", s0),
DateTimeOffset dateTime when format != null => ToString(dateTime, format),
TimeSpan timeSpan when format != null => ToString(timeSpan, format),
TimeSpan timeSpan0 => System.Xml.XmlConvert.ToString(timeSpan0),
Guid guid => guid.ToString(),
BinaryData binaryData => ConvertToString(binaryData.ToArray(), format),
_ => value.ToString()
SerializationFormat.DateTime_RFC1123 => "R",
SerializationFormat.DateTime_RFC3339 => "O",
SerializationFormat.DateTime_RFC7231 => "R",
SerializationFormat.DateTime_ISO8601 => "O",
SerializationFormat.Date_ISO8601 => "D",
SerializationFormat.DateTime_Unix => "U",
SerializationFormat.Bytes_Base64Url => "U",
SerializationFormat.Bytes_Base64 => "D",
SerializationFormat.Duration_ISO8601 => "P",
SerializationFormat.Duration_Constant => "c",
SerializationFormat.Duration_Seconds => "%s",
SerializationFormat.Duration_Seconds_Float => "s\\.FFF",
SerializationFormat.Duration_Seconds_Double => "s\\.FFFFFF",
SerializationFormat.Time_ISO8601 => "T",
_ => null
};

public static string ConvertToString(object value, SerializationFormat format = SerializationFormat.Default)
{
string formatSpecifier = ToFormatSpecifier(format);

return value switch
{
null => "null",
string s => s,
bool b => ToString(b),
int or float or double or long or decimal => ((IFormattable)value).ToString(DefaultNumberFormat, CultureInfo.InvariantCulture),
byte[] b0 when formatSpecifier != null => ToString(b0, formatSpecifier),
IEnumerable<string> s0 => string.Join(",", s0),
DateTimeOffset dateTime when formatSpecifier != null => ToString(dateTime, formatSpecifier),
TimeSpan timeSpan when format == SerializationFormat.Duration_Seconds => Convert.ToInt32(timeSpan.TotalSeconds).ToString(CultureInfo.InvariantCulture),
TimeSpan timeSpan0 when format == SerializationFormat.Duration_Seconds_Float || format == SerializationFormat.Duration_Seconds_Double => timeSpan0.TotalSeconds.ToString(CultureInfo.InvariantCulture),
TimeSpan timeSpan1 when format == SerializationFormat.Duration_Milliseconds => Convert.ToInt32(timeSpan1.TotalMilliseconds).ToString(CultureInfo.InvariantCulture),
TimeSpan timeSpan2 when format == SerializationFormat.Duration_Milliseconds_Float || format == SerializationFormat.Duration_Milliseconds_Double => timeSpan2.TotalMilliseconds.ToString(CultureInfo.InvariantCulture),
TimeSpan timeSpan3 when formatSpecifier != null => ToString(timeSpan3, formatSpecifier),
TimeSpan timeSpan4 => System.Xml.XmlConvert.ToString(timeSpan4),
Guid guid => guid.ToString(),
BinaryData binaryData => ConvertToString(binaryData.ToArray(), format),
_ => value.ToString()
};
}
}
}
2 changes: 1 addition & 1 deletion src/Generated/InternalAssistantMessageClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ internal virtual PipelineMessage CreateGetMessagesRequest(string threadId, int?
uri.AppendPath("/messages", false);
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit), true);
}
if (order != null)
{
Expand Down
Loading