Betalgo.OpenAI.GPT3 6.4.0

.NET 6.0
NuGet\Install-Package Betalgo.OpenAI.GPT3 -Version 6.4.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
dotnet add package Betalgo.OpenAI.GPT3 --version 6.4.0
<PackageReference Include="Betalgo.OpenAI.GPT3" Version="6.4.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Betalgo.OpenAI.GPT3 --version 6.4.0
#r "nuget: Betalgo.OpenAI.GPT3, 6.4.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Betalgo.OpenAI.GPT3 as a Cake Addin
#addin nuget:?package=Betalgo.OpenAI.GPT3&version=6.4.0

// Install Betalgo.OpenAI.GPT3 as a Cake Tool
#tool nuget:?package=Betalgo.OpenAI.GPT3&version=6.4.0

Dotnet SDK for OpenAI GTP-3

Betalgo.OpenAI.GPT3

Install-Package Betalgo.OpenAI.GPT3

For changelogs please go to end of the document.

Unofficial - Dotnet SDK for OpenAI GTP-3. GPT-3 doesn't have any official .Net SDK.

Features

  • Models
  • Completions
  • Edit
  • Mars
  • Embeddings
  • Files
  • Fine-tunes
  • Moderation

I was building an SDK for myself then I decide to share it, I hope it will be useful for you. I haven't maintained any open source projects before. Any help would be much appreciated. I am open to suggestions If you would like to contribute somehow.

I will be using the latest libraries all the time. Also, next releasing will include breaking changes frequently (as I mentioned before I was building the SDK for myself. Unfortunately I do not have time to plan these changes and support lower version apps). So please be aware of that before starting to use the library.

As you can guess I do not accept any damage caused by use of the library. You are always free to use other libraries or OpenAI Web-API.

Visit https://openai.com/ to get your API key. Also documentation with more detail is avaliable there.

Sample Usages

The repository includes one sample project already "OpenAI.Playground" You can check playground project to see how I was testing it while I was developing the library. Be carefull while playing with it. Some test methods will delete your files or fine tunings. I would suggest to use different account than your main account while you use playground.

Using dependcy injection:

secrets.json:

*(How to use user secret? ⇒ right click your project name in "solution explorer" then click "Manage User Secret", it is a good way to keep your api keys) *

 "OpenAIServiceOptions": {
    //"ApiKey":"Your api key goes here"
    //,"Organization": "Your Organization Id goes here (optional)"
  },
Program.cs
serviceCollection.AddOpenAIService();

or use it like below but do NOT put your API key directly to your source code.

Program.cs
serviceCollection.AddOpenAIService(settings => { settings.ApiKey = Environment.GetEnvironmentVariable("MY_OPEN_AI_API_KEY"); });

After injecting your service you will be able to get it from service provider

var openAiService = serviceProvider.GetRequiredService<IOpenAIService>();

Without dependcy injection:

var openAiService = new OpenAIService(new OpenAiOptions()
{
    ApiKey =  Environment.GetEnvironmentVariable("MY_OPEN_AI_API_KEY")
});

You can set default engine(optional):

openAiService.SetDefaultEngineId(Engines.Davinci);

Completions Sample

var completionResult = await openAiService.Completions.Create(new CompletionCreateRequest()
{
  Prompt = "Once upon a time",
  MaxTokens = 5
}, Engines.Engine.Davinci);

if (completionResult.Successful)
{
    Console.WriteLine(completionResult.Choices.FirstOrDefault());
} 
else
{
  if (completionResult.Error == null)
  {
    throw new Exception("Unknown Error");
  }
  Console.WriteLine($"{completionResult.Error.Code}: {completionResult.Error.Message}");
 }

Notes: I couldn't find enough time to test all the methods or improve the documentation. My main target was to make fine-tuning available. If you hit any issue please report it or pull request always appreciated.

Changelog

6.1.0

  • Organization id is not a required value anymore, Thanks to @samuelnygaard
  • Removed deprecated Engine Endpoint and replaced it with Models Endpoint. Now Model response have more fields.
  • Regarding OpenAI Engine naming, I had to rename Engine Enum and static fields. They are quite similar but you have to replace them with new ones. Please use Models class instead of Engine class.
  • To support fast engine name changing I have created a new Method, Models.ModelNameBuilder() you may consider using it.

6.2.0

6.3.0

  • Thanks to @c-d and @sarilouis for contributions on this version.
  • Now we support Embedding endpoint. Thanks to @sarilouis
  • Bug fixes and updates for Models
  • Code clean-up

6.4.0

  • I have good news and bad news
  • Moderation feature implemenation is done. Now we support Moderation.
  • Updated some request and response models to catch up with changes in OpenAI api
  • New version has some breaking chnanges. Because we are in the fall season I needed to do some cleanup. Sorry for breaking changes but most of them are just renaming. I believe they can be solved before your coffee finish.
  • I am hoping to support Edit Feature in next version.
Product Versions
.NET net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows
Compatible target framework(s)
Additional computed target framework(s)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
6.4.0 70 9/26/2022
6.3.0 67 9/20/2022
6.2.0 138 8/10/2022
6.1.0 224 6/9/2022
6.0.0 169 3/12/2022
0.0.3 115 1/7/2022
0.0.2 112 1/7/2022
0.0.1 108 12/28/2021