一个用于访问 OpenAI GPT-3 API的​.NET SDK

大家好,我是宝弟!

今天给大家分享一个用于访问 OpenAI GPT-3 API的.NET SDK。此SDK包装了OpenAI原始的RestAPI。.

快速开始
1安装依赖
PM> NuGet\Install-Package OpenAI -Version 1.3.0
2示例代码
var api = new OpenAI_API.OpenAIAPI();var result = await api.Completions.CreateCompletionAsync("One Two Three One Two", temperature: 0.1);Console.WriteLine(result.ToString());// should print something starting with "Three"
环境要求

此库基于 .NET Standard 2.0,因此它应该适用于 .NET Framework >=4.7.2 和 .NET Core >= 3.0。所以此库支持winforms,wpf,asp.net 等,可以工作在Windows,Linux和Mac上。

认证

使用OpenAI API,需要提供API密匙,密匙的获取不在本文的讨论范围内,搜索引擎一搜有很多解决办法。


按优先级顺序,可通过 3 种方式提供 API 密钥:

  1. 将键直接传递给构造函数APIAuthentication(string key)

  2. 为OPENAI_API_KEY设置环境变量(或OPENAI_KEY用于向后兼容)

  3. 在本地目录或用户目录中包含一个配置文件,命名并包含以下行:.openai

OPENAI_API_KEY=sk-aaaabbbbbccccddddd


初始化 API 时,可以使用如下所示:APIAuthentication

// for exampleOpenAIAPI api = new OpenAIAPI("YOUR_API_KEY"); // shorthand// orOpenAIAPI api = new OpenAIAPI(new APIAuthentication("YOUR_API_KEY")); // create object manually// orOpenAIAPI api = new OpenAIAPI(APIAuthentication LoadFromEnv()); // use env vars// orOpenAIAPI api = new OpenAIAPI(APIAuthentication LoadFromPath()); // use config file (can optionally specify where to look)// orOpenAIAPI api = new OpenAIAPI(); // uses default, env, or config file

您可以选择包含一个 openAIOrganization(OPENAI_ORGANIZATION 在 env 或配置文件中),指定用于 API 请求的组织。这些 API 请求的使用量将计入指定组织的订阅配额。可以在OpenAI的组织设置页面上找到组织 ID。

// for exampleOpenAIAPI api = new OpenAIAPI(new APIAuthentication("YOUR_API_KEY","org-yourOrgHere"));

通过api获取Completions

CreateCompletionAsync(CompletionRequest request)// for examplevar result = await api.Completions.CreateCompletionAsync(new CompletionRequest("One Two Three One Two", model: Model.CurieText, temperature: 0.1));// orvar result = await api.Completions.CreateCompletionAsync("One Two Three One Two", temperature: 0.1);// or other convenience overloads

可以创建一个帮助类来返回Completions,因为SDK访问api获取的是元数据,因此要访问结果,可以使用CompletionRequestCompletionResult.ToString()

流式处理允许您在生成结果时获得结果,这可以帮助您的应用程序感觉响应更快,尤其是在像 Davinci 这样的慢速模型上。

使用新的 C# 8.0 异步迭代器:

IAsyncEnumerable<CompletionResult> StreamCompletionEnumerableAsync(CompletionRequest request)// for exampleawait foreach (var token in api.Completions.StreamCompletionEnumerableAsync(new CompletionRequest("My name is Roger and I am a principal software engineer at Salesforce.  This is my resume:", Model.DavinciText, 200, 0.5, presencePenalty: 0.1, frequencyPenalty: 0.1))){  Console.Write(token);}

由于OpenAI的API文档搜索已在2022年12月3日删除掉了。因此SKD包含了大量的智能提示。所以,此SDK应该是目前OpenAI比较好用的API SDK了。

 资源获取方式 

https://github.com/OkGoDoIt/OpenAI-API-dotnet