- Added the
OpenAIChatModelFactory
in theOpenAI.Chat
namespace (a static class that can be used to instantiate OpenAI models for mocking in non-live test scenarios). (79014ab)
- Updated fine-tuning pagination methods
GetJobs
,GetEvents
, andGetJobCheckpoints
to returnIEnumerable<ClientResult>
instead ofClientResult
. (5773292) - Updated the batching pagination method
GetBatches
to returnIEnumerable<ClientResult>
instead ofClientResult
. (5773292) - Changed
GeneratedSpeechVoice
from an enum to an "extensible enum". (79014ab) - Changed
GeneratedSpeechFormat
from an enum to an "extensible enum". (cc9169a) - Renamed
SpeechGenerationOptions
'sSpeed
property toSpeedRatio
. (cc9169a)
- Corrected an internal deserialization issue that caused recent updates to Assistants
file_search
to fail when streaming a run. Strongly typed support forranking_options
is not included but will arrive soon. (cc9169a) - Mitigated a .NET runtime issue that prevented
ChatResponseFormat
from serializing correct on targets including Unity. (cc9169a)
- Reverted the removal of the version path parameter "v1" from the default endpoint URL. (583e9f6)
- Added the
Experimental
attribute to the following APIs:
- Renamed
AudioClient
'sGenerateSpeechFromText
methods to simplyGenerateSpeech
. (d84bf54) - Changed the type of
OpenAIFileInfo
'sSizeInBytes
property fromlong?
toint?
. (d84bf54)
- Fixed a newly introduced bug (#185) where providing
OpenAIClientOptions
to a top-levelOpenAIClient
did not carry over to scenario clients (e.g.ChatClient
) created via that top-level client (d84bf54)
- Removed the version path parameter "v1" from the default endpoint URL. (d84bf54)
- Added support for the new structured outputs response format feature, which enables chat completions, assistants, and tools on each of those clients to provide a specific JSON Schema that generated content should adhere to. (3467b53)
- To enable top-level structured outputs for response content, use
ChatResponseFormat.CreateJsonSchemaFormat()
andAssistantResponseFormat.CreateJsonSchemaFormat()
as theResponseFormat
in method options likeChatCompletionOptions
- To enable structured outputs for function tools, set
StrictParameterSchemaEnabled
totrue
on the tool definition - For more information, please see the new section in readme.md
- To enable top-level structured outputs for response content, use
- Chat completions: the request message types of
AssistantChatMessage
,SystemChatMessage
, andToolChatMessage
now support array-based content part collections in addition to simple string input. (3467b53) - Added the following model factories (static classes that can be used to instantiate OpenAI models for mocking in non-live test scenarios):
OpenAIAudioModelFactory
in theOpenAI.Audio
namespace (3284295)OpenAIEmbeddingsModelFactory
in theOpenAI.Embeddings
namespace (3284295)OpenAIFilesModelFactory
in theOpenAI.Files
namespace (b1ce397)OpenAIImagesModelFactory
in theOpenAI.Images
namespace (3284295)OpenAIModelsModelFactory
in theOpenAI.Models
namespace (b1ce397)OpenAIModerationsModelFactory
in theOpenAI.Moderations
namespace (b1ce397)
- Removed client constructors that do not explicitly take an API key parameter or an endpoint via an
OpenAIClientOptions
parameter, making it clearer how to appropriately instantiate a client. (13a9c68) - Removed the endpoint parameter from all client constructors, making it clearer that an alternative endpoint must be specified via the
OpenAIClientOptions
parameter. (13a9c68) - Removed
OpenAIClient
'sEndpoint
protected
property. (13a9c68) - Made
OpenAIClient
's constructor that takes aClientPipeline
parameterprotected internal
instead of justprotected
. (13a9c68) - Renamed the
User
property in applicable Options classes toEndUserId
, making its purpose clearer. (13a9c68)
- The
Assistants
namespaceVectorStoreCreationHelper
type now properly includes aChunkingStrategy
property. (3467b53)
ChatCompletion.ToString()
will no longer throw an exception when no content is present, as is the case for tool calls. Additionally, if a tool call is present with no content,ToString()
will return the serialized form of the first available tool call. (3467b53)
- Changed name of return types from methods returning streaming collections from
ResultCollection
toCollectionResult
. (7bdecfd) - Changed return types from methods returning paginated collections from
PageableCollection
toPageCollection
. (7bdecfd) - Users must now call
GetAllValues
on the collection of pages to enumerate collection items directly. Corresponding protocol methods returnIEnumerable<ClientResult>
where each collection item represents a single service response holding a page of values. (7bdecfd) - Updated
VectorStoreFileCounts
andVectorStoreFileAssociationError
types fromreadonly struct
toclass
. (58f93c8)
- (#49) Fixed a bug with extensible enums implementing case-insensitive equality but case-sensitive hash codes. (0c12500)
- (#57) Fixed a bug with requests URIs with query string parameter potentially containing a malformed double question mark (
??
) on .NET Framework (net481). (0c12500) - Added optional
CancellationToken
parameters to methods forAssistantClient
andVectorStore
client, consistent with past changes in 19a65a0. (d77539c) - Fixed Assistants
FileSearchToolDefinition
'sMaxResults
parameter to appropriately serialize and deserialize the value (d77539c) - Added missing
[EditorBrowsable(EditorBrowsableState.Never)]
attributes toAssistantClient
protocol methods, which should improve discoverability of the strongly typed methods. (d77539c)
- Removed the usage of
init
and updated properties to useset
. (58f93c8)
- (#84) Fixed a
NullReferenceException
thrown when adding the custom headers policy whileOpenAIClientOptions
is null (0b97311)
OrganizationId
andProjectId
are now present onOpenAIClientOptions
. When instantiating a client, providing an instance ofOpenAIClientOptions
with these properties set will cause the client to add the appropriate request headers for org/project, eliminating the need to manually configure the headers. (9ee7dff)
- (#72) Fixed
filename
request encoding in operations usingmultipart/form-data
, includingfiles
andaudio
(2ba8e69) - (#79) Fixed hard-coded
user
role for caller-created Assistants API messages on threads (d665b61) - Fixed non-streaming Assistants API run step details not reporting code interpreter logs when present (d665b61)
Assistants (beta):
AssistantClient.CreateMessage()
and the explicit constructor forThreadInitializationMessage
now require aMessageRole
parameter. This properly enables the ability to create an Assistant message representing conversation history on a new thread. (d665b61)
- API updates, current to openai/openai-openapi@dd73070b (1af6569)
- This includes
MaxResults
for AssistantsFileSearchToolDefinition
,ParallelToolCallsEnabled
for function tools in Assistants and Chat, andFileChunkingStrategy
for Assistants VectorStores
- This includes
- Optional
CancellationToken
parameters are now directly present on most methods, eliminating the need to use protocol methods (19a65a0)
- (#30) Mitigated a .NET runtime issue that prevented chat message content and several other types from serializing correct on targets including mono and wasm (896b9e0)
- Assistants: Fixed an issue that threw an exception when receiving code interpreter run step logs when streaming a run (207d597)
- Fixed a concurrency condition that could cause
multipart/form-data
requests to no longer generate random content part boundaries (no direct scenario impact) (7cacdee)
Assistants (beta):
InputQuote
is removed from AssistantsTextAnnotation
andTextAnnotationUpdate
, per openai/openai-openapi@dd73070b (1af6569)
- Added an environment-variable-based test project to the repository with baseline scenario coverage (db6328a)
- Build/analyzer warnings cleaned up throughout the project (45fc4d7, b1fa082, 22ab606)
- Proactively aligned library's implementation of server-sent event (SSE) handling with the source of the incoming
System.Net.ServerSentEvents
namespace (674e0f7)
- Added new, built-in helpers to simplify the use of text-only message content (1c40de6)
- Optimized embedding deserialization and addressed correctness on big endian systems (e28b5a7)
- Optimized b64_json message parsing via regex (efd76b5)
- Removed a vestigial package reference (5874f53)
This is the official OpenAI client library for C# / .NET. It provides convenient access to the OpenAI REST API from .NET applications and supports all the latest features. It is generated from our OpenAPI specification in collaboration with Microsoft.
If you are a user migrating from version 1.11.0 or earlier, we will soon share a migration guide to help you get started.
- Addendum: the migration guide is now available.