Неофициальный пакет единства, который позволяет вам использовать API OpenAI непосредственно в игровом двигателе Unity.
Вы можете найти выделенные видеоуроки для использования этого пакета в этом плейлисте YouTube.
https://www.youtube.com/playlist?list=plre-fzieels1-c7qifzyzeq50id08fcjo

Чтобы импортировать пакет, выполните следующие действия:
Window > Package Manager+ и выберите Add package from git URLAddЧтобы использовать API OpenAI, вам нужно иметь аккаунт OpenAI. Следуйте этим шагам, чтобы создать учетную запись и создать ключ API:
Чтобы сделать запросы в API OpenAI, вам необходимо использовать свой ключ API и имя организации (если применимо). Чтобы избежать разоблачения ключа API в вашем проекте Unity, вы можете сохранить его в локальном хранилище вашего устройства.
Для этого следуйте этим шагам:
C:UserUserName для windows или ~ for linux или mac)auth.json в папке .openai{
"api_key" : " sk-...W6yi " ,
"organization" : " org-...L7W "
} Вы также можете передать свой ключ API в CTOR OpenAIApi при создании его экземпляра, но опять же, это не рекомендуется!
var openai = new OpenAIApi ( " sk-Me8...6yi " ) ;Важно: ваш ключ API - секрет. Не делитесь им с другими и не подвергайте его ни в любом коде клиента (например, браузеры, приложения). Если вы используете OpenAI для производства, обязательно запустите его на стороне сервера, где ваш ключ API может быть надежно загружен из переменной среды или службы управления ключами.
Вы можете использовать класс OpenAIApi , чтобы сделать асинхронные запросы в API OpenAI.
Все методы являются асинхронными и могут быть доступны непосредственно из экземпляра класса OpenAIApi .
Вот пример того, как сделать запрос:
private async void SendRequest ( )
{
var req = new CreateChatCompletionRequest
{
Model = " gpt-3.5-turbo " ,
Messages = new List < ChatMessage > ( )
{
new ChatMessage ( )
{
Role = " user " ,
Content = " Hello! "
}
}
} ;
var res = await openai . CreateChatCompletion ( req ) ;
} Чтобы сделать запрос потока, вы можете использовать методы CreateCompletionAsync и CreateChatCompletionAsync . Эти методы будут устанавливать свойство Stream запроса на true и возвращать ответы через обратный вызов On -ответа. В этом случае текстовые ответы хранятся в Delta Property поля Choices в завершении чата.
var req = new CreateChatCompletionRequest {
Model = " gpt-3.5-turbo " ,
Messages = new List < ChatMessage >
{
new ChatMessage ( )
{
Role = " user " ,
Content = " Write a 100 word long short story in La Fontaine style. "
}
} ,
Temperature = 0.7f ,
} ;
openai . CreateChatCompletionAsync ( req ,
( responses ) => {
var result = string . Join ( " " , responses . Select ( response => response . Choices [ 0 ] . Delta . Content ) ) ;
Debug . Log ( result ) ;
} ,
( ) => {
Debug . Log ( " completed " ) ;
} ,
new CancellationTokenSource ( )
) ;Этот пакет включает в себя две примеры сцены, которые вы можете импортировать через диспетчер пакетов:
Невозможно увидеть результат изображения в сборках WebGL: из -за политики CORS в складке изображений OpenAI в локальных сборках WebGL вы получите URL -адрес сгенерированного изображения, однако его не будут загружены с использованием UnityWebRequest, пока вы не запустите его из LocalHost на сервере.
Потоковой ответ просто пуст в Build Webgl: Unity 2020 Webgl имеет ошибку, когда ответы потока возвращаются пустыми. Вы можете обновить и попробовать с более новой версией Unity.
В следующей таблице показаны поддерживаемые версии Unity для Builds WebGL:
| Версия единства | Окна | Linux | MacOS | Webgl | Android | Ios | Oculus 2 |
|---|---|---|---|---|---|---|---|
| 2022.3.x | ✅ | ✅ | ✅ | ✅ | |||
| 2021.3.x | ✅ | ✅ | ✅ | ✅ | |||
| 2020.3.x | ✅ | ✅ | ✅ | ✅ | |||
| 2019.4.x | ✅ |
| ✅ = поддерживается | ⛔ = не поддерживается |
Пожалуйста, сообщите о любых вопросах, с которыми вы сталкиваетесь со сборками.
Для получения дополнительной информации о том, как использовать различные параметры запроса, пожалуйста, см.