Skip to content
Merged
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
29 changes: 26 additions & 3 deletions api/OpenAI.net8.0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1466,6 +1466,14 @@ public class ChatClient {
public virtual AsyncCollectionResult<ChatCompletion> GetChatCompletionsAsync(ChatCompletionCollectionOptions options = null, CancellationToken cancellationToken = default);
[Experimental("OPENAI001")]
public virtual AsyncCollectionResult GetChatCompletionsAsync(string after, int? limit, string order, IDictionary<string, string> metadata, string model, RequestOptions options);
[Experimental("OPENAI001")]
public virtual ClientResult UpdateChatCompletion(string completionId, BinaryContent content, RequestOptions options = null);
[Experimental("OPENAI001")]
public virtual ClientResult<ChatCompletion> UpdateChatCompletion(string completionId, IDictionary<string, string> metadata, CancellationToken cancellationToken = default);
[Experimental("OPENAI001")]
public virtual Task<ClientResult> UpdateChatCompletionAsync(string completionId, BinaryContent content, RequestOptions options = null);
[Experimental("OPENAI001")]
public virtual Task<ClientResult<ChatCompletion>> UpdateChatCompletionAsync(string completionId, IDictionary<string, string> metadata, CancellationToken cancellationToken = default);
}
public class ChatCompletion : IJsonModel<ChatCompletion>, IPersistableModel<ChatCompletion> {
[Experimental("OPENAI001")]
Expand Down Expand Up @@ -1534,19 +1542,34 @@ public class ChatCompletionDeletionResult : IJsonModel<ChatCompletionDeletionRes
[Experimental("OPENAI001")]
public class ChatCompletionMessageCollectionOptions : IJsonModel<ChatCompletionMessageCollectionOptions>, IPersistableModel<ChatCompletionMessageCollectionOptions> {
public string AfterId { get; set; }
public ChatCompletionCollectionOrder? Order { get; set; }
public ChatCompletionMessageCollectionOrder? Order { get; set; }
public int? PageSizeLimit { get; set; }
protected virtual ChatCompletionMessageCollectionOptions JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
protected virtual ChatCompletionMessageCollectionOptions PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
}
[Experimental("OPENAI001")]
public readonly partial struct ChatCompletionMessageCollectionOrder : IEquatable<ChatCompletionMessageCollectionOrder> {
public ChatCompletionMessageCollectionOrder(string value);
public static ChatCompletionMessageCollectionOrder Ascending { get; }
public static ChatCompletionMessageCollectionOrder Descending { get; }
public readonly bool Equals(ChatCompletionMessageCollectionOrder other);
[EditorBrowsable(EditorBrowsableState.Never)]
public override readonly bool Equals(object obj);
[EditorBrowsable(EditorBrowsableState.Never)]
public override readonly int GetHashCode();
public static bool operator ==(ChatCompletionMessageCollectionOrder left, ChatCompletionMessageCollectionOrder right);
public static implicit operator ChatCompletionMessageCollectionOrder(string value);
public static bool operator !=(ChatCompletionMessageCollectionOrder left, ChatCompletionMessageCollectionOrder right);
public override readonly string ToString();
}
[Experimental("OPENAI001")]
public class ChatCompletionMessageListDatum : IJsonModel<ChatCompletionMessageListDatum>, IPersistableModel<ChatCompletionMessageListDatum> {
public IList<ChatMessageAnnotation> Annotations { get; }
public ChatOutputAudio Audio { get; }
public IReadOnlyList<ChatMessageAnnotation> Annotations { get; }
public string Content { get; }
public string Id { get; }
public ChatOutputAudio OutputAudio { get; }
public string Refusal { get; }
public IReadOnlyList<ChatToolCall> ToolCalls { get; }
protected virtual ChatCompletionMessageListDatum JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
Expand Down
24 changes: 21 additions & 3 deletions api/OpenAI.netstandard2.0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1305,6 +1305,10 @@ public class ChatClient {
public virtual CollectionResult GetChatCompletions(string after, int? limit, string order, IDictionary<string, string> metadata, string model, RequestOptions options);
public virtual AsyncCollectionResult<ChatCompletion> GetChatCompletionsAsync(ChatCompletionCollectionOptions options = null, CancellationToken cancellationToken = default);
public virtual AsyncCollectionResult GetChatCompletionsAsync(string after, int? limit, string order, IDictionary<string, string> metadata, string model, RequestOptions options);
public virtual ClientResult UpdateChatCompletion(string completionId, BinaryContent content, RequestOptions options = null);
public virtual ClientResult<ChatCompletion> UpdateChatCompletion(string completionId, IDictionary<string, string> metadata, CancellationToken cancellationToken = default);
public virtual Task<ClientResult> UpdateChatCompletionAsync(string completionId, BinaryContent content, RequestOptions options = null);
public virtual Task<ClientResult<ChatCompletion>> UpdateChatCompletionAsync(string completionId, IDictionary<string, string> metadata, CancellationToken cancellationToken = default);
}
public class ChatCompletion : IJsonModel<ChatCompletion>, IPersistableModel<ChatCompletion> {
public IReadOnlyList<ChatMessageAnnotation> Annotations { get; }
Expand Down Expand Up @@ -1363,18 +1367,32 @@ public class ChatCompletionDeletionResult : IJsonModel<ChatCompletionDeletionRes
}
public class ChatCompletionMessageCollectionOptions : IJsonModel<ChatCompletionMessageCollectionOptions>, IPersistableModel<ChatCompletionMessageCollectionOptions> {
public string AfterId { get; set; }
public ChatCompletionCollectionOrder? Order { get; set; }
public ChatCompletionMessageCollectionOrder? Order { get; set; }
public int? PageSizeLimit { get; set; }
protected virtual ChatCompletionMessageCollectionOptions JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
protected virtual void JsonModelWriteCore(Utf8JsonWriter writer, ModelReaderWriterOptions options);
protected virtual ChatCompletionMessageCollectionOptions PersistableModelCreateCore(BinaryData data, ModelReaderWriterOptions options);
protected virtual BinaryData PersistableModelWriteCore(ModelReaderWriterOptions options);
}
public readonly partial struct ChatCompletionMessageCollectionOrder : IEquatable<ChatCompletionMessageCollectionOrder> {
public ChatCompletionMessageCollectionOrder(string value);
public static ChatCompletionMessageCollectionOrder Ascending { get; }
public static ChatCompletionMessageCollectionOrder Descending { get; }
public readonly bool Equals(ChatCompletionMessageCollectionOrder other);
[EditorBrowsable(EditorBrowsableState.Never)]
public override readonly bool Equals(object obj);
[EditorBrowsable(EditorBrowsableState.Never)]
public override readonly int GetHashCode();
public static bool operator ==(ChatCompletionMessageCollectionOrder left, ChatCompletionMessageCollectionOrder right);
public static implicit operator ChatCompletionMessageCollectionOrder(string value);
public static bool operator !=(ChatCompletionMessageCollectionOrder left, ChatCompletionMessageCollectionOrder right);
public override readonly string ToString();
}
public class ChatCompletionMessageListDatum : IJsonModel<ChatCompletionMessageListDatum>, IPersistableModel<ChatCompletionMessageListDatum> {
public IList<ChatMessageAnnotation> Annotations { get; }
public ChatOutputAudio Audio { get; }
public IReadOnlyList<ChatMessageAnnotation> Annotations { get; }
public string Content { get; }
public string Id { get; }
public ChatOutputAudio OutputAudio { get; }
public string Refusal { get; }
public IReadOnlyList<ChatToolCall> ToolCalls { get; }
protected virtual ChatCompletionMessageListDatum JsonModelCreateCore(ref Utf8JsonReader reader, ModelReaderWriterOptions options);
Expand Down
53 changes: 0 additions & 53 deletions src/Custom/Chat/ChatClient.Protocol.cs

This file was deleted.

29 changes: 26 additions & 3 deletions src/Custom/Chat/ChatClient.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using OpenAI.Evals;
using OpenAI.Telemetry;
using System;
using System.ClientModel;
Expand All @@ -20,8 +19,6 @@ namespace OpenAI.Chat;
[CodeGenSuppress("ChatClient", typeof(ClientPipeline), typeof(Uri))]
[CodeGenSuppress("CompleteChat", typeof(ChatCompletionOptions), typeof(CancellationToken))]
[CodeGenSuppress("CompleteChatAsync", typeof(ChatCompletionOptions), typeof(CancellationToken))]
[CodeGenSuppress("UpdateChatCompletion", typeof(string), typeof(IDictionary<string, string>), typeof(CancellationToken))]
[CodeGenSuppress("UpdateChatCompletionAsync", typeof(string), typeof(IDictionary<string, string>), typeof(CancellationToken))]
public partial class ChatClient
{
private readonly string _model;
Expand Down Expand Up @@ -307,6 +304,32 @@ public virtual ClientResult<ChatCompletion> GetChatCompletion(string completionI
return ClientResult.FromValue(ChatCompletion.FromClientResult(result), result.GetRawResponse());
}

// CUSTOM:
// - Call FromClientResult.
[Experimental("OPENAI001")]
public virtual ClientResult<ChatCompletion> UpdateChatCompletion(string completionId, IDictionary<string, string> metadata, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));
Argument.AssertNotNull(metadata, nameof(metadata));

InternalUpdateChatCompletionRequest spreadModel = new InternalUpdateChatCompletionRequest(metadata, null);
ClientResult result = this.UpdateChatCompletion(completionId, spreadModel, cancellationToken.CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null);
return ClientResult.FromValue(ChatCompletion.FromClientResult(result), result.GetRawResponse());
}

// CUSTOM:
// - Call FromClientResult.
[Experimental("OPENAI001")]
public virtual async Task<ClientResult<ChatCompletion>> UpdateChatCompletionAsync(string completionId, IDictionary<string, string> metadata, CancellationToken cancellationToken = default)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));
Argument.AssertNotNull(metadata, nameof(metadata));

InternalUpdateChatCompletionRequest spreadModel = new InternalUpdateChatCompletionRequest(metadata, null);
ClientResult result = await this.UpdateChatCompletionAsync(completionId, spreadModel, cancellationToken.CanBeCanceled ? new RequestOptions { CancellationToken = cancellationToken } : null).ConfigureAwait(false);
return ClientResult.FromValue(ChatCompletion.FromClientResult(result), result.GetRawResponse());
}

// CUSTOM:
// - Added Experimental attribute.
// - Call FromClientResult.
Expand Down
15 changes: 14 additions & 1 deletion src/Custom/Chat/Internal/GeneratorStubs.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System.Runtime.InteropServices;
using System.ClientModel;

namespace OpenAI.Chat;

Expand Down Expand Up @@ -50,6 +50,19 @@ internal partial class InternalChatCompletionRequestMessageContentPartRefusal {
[CodeGenType("CreateChatCompletionRequestModel")]
internal readonly partial struct InternalCreateChatCompletionRequestModel { }

[CodeGenType("UpdateChatCompletionRequest")]
internal partial class InternalUpdateChatCompletionRequest
{
public static implicit operator BinaryContent(InternalUpdateChatCompletionRequest internalUpdateChatCompletionRequest)
{
if (internalUpdateChatCompletionRequest == null)
{
return null;
}
return BinaryContent.Create(internalUpdateChatCompletionRequest, ModelSerializationExtensions.WireOptions);
}
}

[CodeGenType("CreateChatCompletionRequestToolChoice")]
internal readonly partial struct InternalCreateChatCompletionRequestToolChoice { }

Expand Down
56 changes: 56 additions & 0 deletions src/Generated/ChatClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,62 @@ public virtual async Task<ClientResult> CompleteChatAsync(BinaryContent content,
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}

[Experimental("OPENAI001")]
public virtual ClientResult GetChatCompletion(string completionId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));

using PipelineMessage message = CreateGetChatCompletionRequest(completionId, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

[Experimental("OPENAI001")]
public virtual async Task<ClientResult> GetChatCompletionAsync(string completionId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));

using PipelineMessage message = CreateGetChatCompletionRequest(completionId, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}

[Experimental("OPENAI001")]
public virtual ClientResult UpdateChatCompletion(string completionId, BinaryContent content, RequestOptions options = null)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));
Argument.AssertNotNull(content, nameof(content));

using PipelineMessage message = CreateUpdateChatCompletionRequest(completionId, content, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

[Experimental("OPENAI001")]
public virtual async Task<ClientResult> UpdateChatCompletionAsync(string completionId, BinaryContent content, RequestOptions options = null)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));
Argument.AssertNotNull(content, nameof(content));

using PipelineMessage message = CreateUpdateChatCompletionRequest(completionId, content, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}

[Experimental("OPENAI001")]
public virtual ClientResult DeleteChatCompletion(string completionId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));

using PipelineMessage message = CreateDeleteChatCompletionRequest(completionId, options);
return ClientResult.FromResponse(Pipeline.ProcessMessage(message, options));
}

[Experimental("OPENAI001")]
public virtual async Task<ClientResult> DeleteChatCompletionAsync(string completionId, RequestOptions options)
{
Argument.AssertNotNullOrEmpty(completionId, nameof(completionId));

using PipelineMessage message = CreateDeleteChatCompletionRequest(completionId, options);
return ClientResult.FromResponse(await Pipeline.ProcessMessageAsync(message, options).ConfigureAwait(false));
}

[Experimental("OPENAI001")]
public virtual CollectionResult GetChatCompletionMessages(string completionId, string after, int? limit, string order, RequestOptions options)
{
Expand Down
Loading