OpenAI 1.0.0
Prefix ReservedOpenAI SDK package versions prior to v1.3 will not work with the current OpenAI API due to breaking changes with the OpenAI API. Please update to at least v1.3 of the SDK to restore functionality.
See the version list below for details.
dotnet add package OpenAI --version 1.0.0
NuGet\Install-Package OpenAI -Version 1.0.0
<PackageReference Include="OpenAI" Version="1.0.0" />
paket add OpenAI --version 1.0.0
#r "nuget: OpenAI, 1.0.0"
// Install OpenAI as a Cake Addin #addin nuget:?package=OpenAI&version=1.0.0 // Install OpenAI as a Cake Tool #tool nuget:?package=OpenAI&version=1.0.0
C#/.NET SDK for accessing the OpenAI GPT-3 API
A simple C# .NET wrapper library to use with OpenAI's GPT-3 API.
Requirements
This library is based on .NET Standard 2.0, so it should work across .NET Framework >=4.7.2 and .NET Core >= 3.0. It should work across console apps, winforms, wpf, asp.net, etc (although I have not yet testing with asp.net). It should work across Windows, Liux, and Mac, although I have only tested on Windows so far.
Getting started
Install from NuGet
(Coming soon)
Authentication
There are 3 ways to provide your API keys, in order of precedence:
- Pass keys directly to
APIAuthentication(string key)
constructor - Set environment vars for OPENAI_KEY and/or OPENAI_SECRET_KEY
- Include a config file in the local directory or in your user directory named
.openai
and containing one of both lines:
OPENAI_KEY=pk-aaaabbbbbccccddddd
OPENAI_SECRET_KEY=sk-aaaabbbbbccccddddd
Completions
The Completion API is accessed via OpenAIAPI.Completions
:
Non-streaming
CreateCompletionAsync(CompletionRequest request)
Streaming
Using the new C# 8.0 async interators:
IAsyncEnumerable<CompletionResult> StreamCompletionEnumerableAsync(CompletionRequest request)
Or if using .NET framework or C# <8.0:
StreamCompletionAsync(CompletionRequest request, Action<int, CompletionResult> resultHandler)
Document Search
The Search API is accessed via OpenAIAPI.Search
:
You can get all results as a dictionary using GetSearchResultsAsync(SearchRequest request)
You can get only the best match using GetBestMatchAsync(...)
nd if you only want the best match but still want to know the score, use GetBestMatchWithScoreAsync(...)
Documentation
Every single class, method, and property has extensive XML documentation, so it should show up automatically in IntelliSense. That combined with the official OpenAI documentation should be enough to get started. Better documentation may come later.
Examples
var api = new OpenAI_API.OpenAIAPI(engine: Engine.Davinci);
var result = await api.Completions.CreateCompletionAsync("One Two Three Four Five Six Seven Eight Nine One Two Three Four Five Six Seven Eight", temperature: 0.1);
Console.WriteLine(result.ToString());
// should print "Nine"
var api = new OpenAI_API.OpenAIAPI(engine: Engine.Curie);
var result = await api.Search.GetBestMatchAsync("Washington DC", "Canada", "China", "USA", "Spain");
Console.WriteLine(result);
// should print "USA"
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Bcl.AsyncInterfaces (>= 1.1.1)
- Newtonsoft.Json (>= 12.0.3)
NuGet packages (51)
Showing the top 5 NuGet packages that depend on OpenAI:
Package | Downloads |
---|---|
Azure.AI.OpenAI
Azure OpenAI's official extension package for using OpenAI's .NET library with the Azure OpenAI Service. |
|
Microsoft.SemanticKernel.Connectors.OpenAI
Semantic Kernel connectors for OpenAI. Contains clients for chat completion, embedding and DALL-E text to image. |
|
Newguys.Sport
Package Description |
|
Aspire.Azure.AI.OpenAI
A client for Azure OpenAI that integrates with Aspire, including logging and telemetry. |
|
AuthScape.OpenAI
Package Description |
GitHub repositories (11)
Showing the top 5 popular GitHub repositories that depend on OpenAI:
Repository | Stars |
---|---|
microsoft/semantic-kernel
Integrate cutting-edge LLM technology quickly and easily into your apps
|
|
Azure/azure-sdk-for-net
This repository is for active development of the Azure SDK for .NET. For consumers of the SDK we recommend visiting our public developer docs at https://learn.microsoft.com/dotnet/azure/ or our versioned developer docs at https://azure.github.io/azure-sdk-for-net.
|
|
SciSharp/BotSharp
AI Multi-Agent Framework in .NET
|
|
OfficeDev/Microsoft-Teams-Samples
Welcome to the Microsoft Teams samples repository. Here you will find task-focused samples in C#, JavaScript and TypeScript to help you get started with the Microsoft Teams App!
|
|
VladislavAntonyuk/MauiSamples
.NET MAUI Samples
|
Version | Downloads | Last updated | |
---|---|---|---|
2.1.0-beta.2 | 14,322 | 11/4/2024 | |
2.1.0-beta.1 | 188,718 | 10/1/2024 | |
2.0.0 | 186,212 | 9/30/2024 | |
2.0.0-beta.13 | 3,040 | 9/27/2024 | |
2.0.0-beta.12 | 27,738 | 9/20/2024 | |
2.0.0-beta.11 | 191,034 | 9/3/2024 | |
2.0.0-beta.10 | 104,625 | 8/26/2024 | |
2.0.0-beta.9 | 29,148 | 8/24/2024 | |
2.0.0-beta.8 | 35,558 | 7/31/2024 | |
2.0.0-beta.7 | 113,344 | 6/24/2024 | |
2.0.0-beta.6 | 2,214 | 6/21/2024 | |
2.0.0-beta.5 | 251,312 | 6/14/2024 | |
2.0.0-beta.4 | 9,139 | 6/10/2024 | |
2.0.0-beta.3 | 34,414 | 6/7/2024 | |
2.0.0-beta.2 | 3,438 | 6/6/2024 | |
2.0.0-beta.1 | 2,043 | 6/6/2024 | |
1.11.0 | 397,833 | 3/13/2024 | |
1.10.0 | 205,540 | 12/14/2023 | |
1.9.0 | 20,297 | 12/12/2023 | |
1.8.0 | 15,130 | 12/6/2023 | |
1.7.2 | 592,789 | 4/2/2023 | |
1.7.1 | 1,345 | 4/2/2023 | |
1.7.0 | 1,218 | 4/2/2023 | |
1.6.0 | 56,067 | 3/9/2023 | |
1.5.0 | 22,268 | 2/16/2023 | |
1.4.0 | 12,012 | 2/3/2023 | |
1.3.0 | 13,799 | 1/12/2023 | |
1.2.0 | 41,752 | 12/22/2020 | |
1.1.0 | 1,760 | 7/28/2020 | |
1.0.0 | 4,323 | 7/23/2020 |
Initial release of SDK. An OpenAI API account is required (still in closed beta)