Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
8 changes: 8 additions & 0 deletions api/OpenAI.net8.0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1458,6 +1458,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
4 changes: 4 additions & 0 deletions api/OpenAI.netstandard2.0.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1301,6 +1301,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
2 changes: 2 additions & 0 deletions specification/client/chat.client.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ using Azure.ClientGenerator.Core;
@@visibility(ChatCompletionStreamResponseDelta.tool_calls, Lifecycle.Read);

@@clientName(Chat.createChatCompletion, "CompleteChat");

@@scope(Chat.getChatCompletionMessages, "!csharp");
55 changes: 0 additions & 55 deletions src/Custom/Chat/ChatClient.Protocol.cs

This file was deleted.

31 changes: 26 additions & 5 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,10 +19,6 @@ namespace OpenAI.Chat;
[CodeGenSuppress("ChatClient", typeof(ClientPipeline), typeof(Uri))]
[CodeGenSuppress("CompleteChat", typeof(ChatCompletionOptions), typeof(CancellationToken))]
[CodeGenSuppress("CompleteChatAsync", typeof(ChatCompletionOptions), typeof(CancellationToken))]
[CodeGenSuppress("GetChatCompletionMessages", typeof(string), typeof(string), typeof(int?), typeof(OpenAI.VectorStores.VectorStoreCollectionOrder?), typeof(CancellationToken))]
[CodeGenSuppress("GetChatCompletionMessagesAsync", typeof(string), typeof(string), typeof(int?), typeof(OpenAI.VectorStores.VectorStoreCollectionOrder?), 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 @@ -309,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
29 changes: 0 additions & 29 deletions src/Generated/ChatClient.RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,34 +122,5 @@ internal virtual PipelineMessage CreateDeleteChatCompletionRequest(string comple
message.Apply(options);
return message;
}

internal virtual PipelineMessage CreateGetChatCompletionMessagesRequest(string completionId, string after, int? limit, string order, RequestOptions options)
{
PipelineMessage message = Pipeline.CreateMessage();
message.ResponseClassifier = PipelineMessageClassifier200;
PipelineRequest request = message.Request;
request.Method = "GET";
ClientUriBuilder uri = new ClientUriBuilder();
uri.Reset(_endpoint);
uri.AppendPath("/chat/completions/", false);
uri.AppendPath(completionId, true);
uri.AppendPath("/messages", false);
if (after != null)
{
uri.AppendQuery("after", after, true);
}
if (limit != null)
{
uri.AppendQuery("limit", TypeFormatters.ConvertToString(limit, null), true);
}
if (order != null)
{
uri.AppendQuery("order", order, true);
}
request.Uri = uri.ToUri();
request.Headers.Set("Accept", "application/json");
message.Apply(options);
return message;
}
}
}
56 changes: 56 additions & 0 deletions src/Generated/ChatClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,61 @@ public virtual async Task<ClientResult> CompleteChatAsync(BinaryContent content,
using PipelineMessage message = CreateCompleteChatRequest(content, options);
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));
}
}
}
Loading