Devextremeai - это библиотека с полной и полной реализацией всех API Openai. Эта библиотека полностью соответствует спецификациям OpenAI, а также реализует ответ на ошибку OpenAI. Он очень прост в использовании с Core ASP.NET и имеет полную поддержку инъекции зависимости (с одной строкой кода в качестве стандартного шаблона ASP.NET). Это также легко использовать в библиотеках без инъекции зависимости (см. Образцы ниже).
Обратите внимание, что это неофициальная библиотека OpenAPI (она не командована компанией Openai).
| Строить | Статус | Текущая версия |
|---|---|---|
| CI |
Чтобы использовать эту библиотеку, вам нужен ключ API OpenAI (и, необязательно идентификатор организации). Чтобы получить ключ API, вы должны зарегистрировать свою учетную запись на OpenAI.com. После зарегистрированных перейдите в свою учетную запись Openai и найдите «Просмотр клавиш API», на этой странице вы можете создать свой Apikey. На странице вашей учетной записи вы можете найти страницу «Настройки», где размещена идентификатор вашей организации.
Вы можете использовать эту библиотеку через Nuget Package DeVextremeai
Важно отметить, что эта библиотечная поддержка точечной чистой иконфигурации и инъекции зависимости, чтобы она могла прочитать от них Apikey и организацию вместо жесткого кодирования в исходном коде. (Пожалуйста, не жесткий код apikey и идентификатор организации в исходном коде и не подталкивайте их к GIT или в любом хранилище источника).
Эта библиотека полностью придерживается спецификаций Openai, а ее объектная модель - это то же самое от Openai (с особенностями dotnet). Эта библиотека также реализует коды ошибок OpenAI, которые не задокументированы в ссылке на APIS OpenAI.
Установите Nuget Package dextremeai в программе. CS Добавьте это с помощью:
using DevExtremeAI . AspNet ; Это использует вас использовать расширение службы ASP.NET. С помощью Builder WebApplication теперь вы можете использовать метод AddDevExtremeAI() , который зарегистрирует все, что вам нужно, с помощью впрыскивания зависимостей.
var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddDevExtremeAI ( ) ; Эта перегрузка AddDevExtremeAI() ищет Apikey в appsettings.json или appsettings.development.json, чтобы вы могли избежать хардкодирования их в исходном коде. Я предлагаю вам использовать секреты действия GitHub.
var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddDevExtremeAI < DevExtremeAI . Settings . CurrentEnvironmentData > ( ) ;Таким образом, ключ API и идентификатор организации читается из переменных среды с именем openai_organization и openai_api_key.
var builder = WebApplication . CreateBuilder ( args ) ;
// Add services to the container.
builder . Services . AddDevExtremeAI < MyEnvironmentReader > ( ) ; В приведенном выше примере вы можете использовать перегрузку AddDevExtremeAI<TEnvironment> , который требует типа объекта, который реализует интерфейс DevExtremeAI.Settings.IAIEnvironment , чтобы вы могли прочитать Apikey или идентификатор организации, откуда вы хотите. (Ваша реализация IAIEnvironment будет использоваться в Синглтон -пути).
Наконец, вы можете использовать перегрузку AddDevExtremeAI(string apiKey, string? organization) и пройти Apikey и значения идентификатора организации, считываемые от того, где вы хотите (пожалуйста, прочитайте их от того места, где вы хотите, но не HardCode в любом исходном коде).
Вот и все! Отныне вы можете использовать OpenAI в своем проекте ASP.NET через инъекцию зависимости.
Теперь вы можете объявить конструктор своего контроллера и друзей с DevExtremeAI.OpenAIClient.IOpenAIAPIClient
private DevExtremeAI . OpenAIClient . IOpenAIAPIClient _openAIApiClient ;
public TestAIController ( DevExtremeAI . OpenAIClient . IOpenAIAPIClient openAIApiClient )
{
_openAIApiClient = openAIApiClient ;
}Примером использования iopenaipiclient в контроллере или Apicontroller может быть:
// GET api/<TestAIController>/5
[ HttpGet ( " {id} " ) ]
public async Task < string > Get ( int id )
{
var chat = new CreateChatCompletionRequest ( ) ;
chat . Model = " gpt-3.5-turbo-1106 " ;
string prompt = $" Is the number { id } even or odd? " ;
chat . AddMessage ( new ChatCompletionUserContentMessage ( ) { Content = prompt } ) ;
var response = await _openAIApiClient . CreateChatCompletionAsync ( chat ) ;
return $" { prompt } -> { response ? . OpenAIResponse ? . Choices [ 0 ] ? . Message ? . Content } " ;
}ПРИМЕЧАНИЕ Вы можете найти полную документацию API и DTO в Intellisense, примеры ниже или официальные ссылки на API OpenAI, потому что они одинаковы.
Если вы используете внешнее ядро ASP.NET или без HostBuilder или инъекции зависимостей, как в приложении консоли или библиотеки Dotnet, вы можете использовать заводские методы.
В этом сценарии вам нужен тот же пакет Nuget Package dextremeai
После установки этого пакета вы можете использовать библиотеку DeVextremeai.
В программе.
using DevExtremeAI . OpenAIClient ; Теперь вы можете использовать OpenAIClientFactory
Внутри вашей библиотеки или основного метода приложения консоли вы можете создать инстанцию IOpenAIAPIClient , как в этом примере:
internal class Program
{
static async Task Main ( string [ ] args )
{
var openAIClient = OpenAIClientFactory . CreateInstance ( ) ; //create an instance o IOpenAIAPIClient
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo-1106 " ;
createCompletionRequest . Messages . Add ( new ChatCompletionRoleStringContentMessage ( )
{
Role = ChatCompletionMessageRoleEnum . User ,
Content = " Hello! " ,
} ) ;
var response = await openAIClient . CreateChatCompletionAsync ( createCompletionRequest ) ;
Console . WriteLine ( response . OpenAIResponse . Choices [ 0 ] . Message . Content ) ;
}
} Метод завода ( CreateInstance ) В примере выше используйте перегрузку без аргументов, эта перегрузка ищет ApikeyValue и организацию Ind в Appsettings.json или Appsettings.development.json. Имена ключей приложений должны быть OpenAI_API_KEY и OPENAI_ORGANIGAIL.
var openAIClient = OpenAIClientFactory . CreateInstance < CurrentEnvironmentData > ( ) ; //create an instance o IOpenAIAPIClient var openAIClient = OpenAIClientFactory . CreateInstance ( new CurrentEnvironmentData ( ) ) ; //create an instance o IOpenAIAPIClient Таким образом, ключ API и идентификатор организации читается из переменных среды с именем openai_organization и openai_api_key.
var openAIClient = OpenAIClientFactory . CreateInstance < MyEnvironmentValueReader > ( ) ; //create an instance o IOpenAIAPIClient Вы можете использовать перегрузку, которая требует экземпляра DevExtremeAI.Settings.IAIEnvironment , реализованного вы сами, чтобы вы могли прочитать ценность Apikey и идентификатор организации, откуда вы хотите.
Кроме того, вы можете использовать перегрузку, которая требует значения Apikey и идентификатор организации в качестве аргументов (но просьбы не жестко их в исходном коде).
Однако не в жестком коде и идентификатор организации в любом файле (исходный код или файлы приложений), не вступайте в хранилище исходного репозитория.
Каждое методы DevExtremeAI.OpenAIClient.IOpenAIAPIClient одинаковы от Openai, так что вы можете использовать
Официальная ссылка на API Openai. Объекты запроса DTO также описаны со стандартной документацией .NET, поэтому вы можете использовать Intellisese. Каждое методы IOpenAIAPIClient присутствуют в тестах интеграции XUNIT, поэтому вы можете посмотреть на них там (DeVexTremeaILibtest Directory).
Каждый ответ имеет DevExtremeAI.OpenAIDTO.ResponseDTO<T> тип. Этот тип имеет три свойства:
ErrorResponse , содержащий данные об ошибке, возвращенные API OpenAI в случае проблемы.HasError , который правда, если ошибка произошла иначе, является ложной.OpenAIResponse то же самое из ответа OpenAI.Этот релиз поддерживает API API и модели объектов OpenAI и объектных моделей GPT-4 и GPT-3.5-Turbo. В этой версии API OpenAI некоторые API устарели, и некоторая объектная модель изменилась. Вы можете увидеть обновленную модель объекта в схеме UML. Для чата API теперь вы можете использовать объекты, которые наследуют от базового класса «ChatCompletionRoLereQuestMessage».
Object ChatcompletionroLestringContentMessage предназначена только для обратной совместимости. С помощью этого объекта вы можете установить свойство роли, как версию Old Object Model.
Например, старый код, как это:
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo " ;
createCompletionRequest . Messages . Add ( new ChatCompletionRequestMessage ( )
{
Role = ChatCompletionMessageRoleEnum . User ,
Content = " Who are you? "
} ) ;Может быть обновленным таким образом:
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo-1106 " ;
createCompletionRequest . Messages . Add ( new ChatCompletionRoleStringContentMessage ( )
{
Role = ChatCompletionMessageRoleEnum . User ,
Content = " Who are you? "
} ) ;Изменения:
Для полного обновления до последнего обновления версии должно быть сделано таким образом:
CreateChatCompletionRequest createCompletionRequest = new CreateChatCompletionRequest ( ) ;
createCompletionRequest . Model = " gpt-3.5-turbo-1106 " ;
createCompletionRequest . Messages . Add ( new ChatCompletionUserContentMessage ( )
{
Content = " Who are you? "
} ) ;Изменения:
Покрыты все типы API Openai:
Вы можете найти примеры каждого проекта API в тестовом блоке. Если вы хотите, вы можете внести свой вклад в расширение этого файла Readme с примерами;)
Авторские права (C) 2023 Андреа Пикчиони
Настоящим дается разрешение, бесплатно, любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), чтобы иметь дело в программном обеспечении без ограничений, включая, без ограничения, права на использование, копирование, изменение, объединение, публикацию, распределение, сублиценность и/или продавать копии программного обеспечения и разрешения лиц, на которые программное обеспечение подходит для того, чтобы поступить так, чтобы поступить на следующие условия: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: на следующие условия: к следующим условиям: на следующие условия: на следующие условия.
Вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть включено во все копии или существенные части программного обеспечения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае авторы или владельцы авторских прав не будут нести ответственность за любые претензии, убытки или другую ответственность, будь то в действии контракта, деликт или иным образом, возникающие из или в связи с программным обеспечением или использованием или другими сделками в программном обеспечении.