c# - 使用图像参数时 Unity 连接到 Dall-E API?

标签 c# unity3d openai-api text2image

如何在 Unity C# 中使用 Dall-E 文本到图像 API 的 imagemask 参数?

对于背景,类似下面的内容适用于其他参数,如 prompt(完整代码在 GitHub 上):

string apiMode = "generations";
string apiUrl = "https://api.openai.com/v1/images/" + apiMode;

UnityWebRequest www = UnityWebRequest.Post(apiUrl, "");
www.SetRequestHeader("Content-Type", "application/json");
www.SetRequestHeader("Authorization", "Bearer " + key);

string jsonString = JsonConvert.SerializeObject(aiParams, Formatting.None, serializerSettings);

www.uploadHandler = new UploadHandlerRaw(System.Text.Encoding.UTF8.GetBytes(jsonString));
www.downloadHandler = new DownloadHandlerBuffer();
yield return www.SendWebRequest();

不过,根据 Dall-E's documentation,当使用 apiMode 时,“编辑”或“变体” ,它将返回一个 API 错误,建议切换到内容类型“multipart/form-data”。给定 png 的一些 byte[],如何使用它并为 imagemask 添加二进制数据?谢谢!

最佳答案

UnityWebRequest.Post -> 需要 List<IMultipartFormSection> 的重载将自动使用此内容类型 header ,您可以在那里提供 MultipartFormFileSection MultipartFormDataSection 部分。

不幸的是,这个例子没有用,但它可能看起来有点像

 var jsonString = JsonConvert.SerializeObject(aiParams, Formatting.None, serializerSettings);
 var jsonBytes = Encoding.UTF8.GetBytes(jsonString);
 var formParts = new List<IMultipartFormSection>();
 formParts.Add(new MultipartFormDataSection("data", jsonBytes, "application/json"));
 formParts.Add(new MultipartFormFileSection("image", yourFileContentBytes, "YourFileName.png", "image/png"));

 using (UnityWebRequest www = UnityWebRequest.Post("https://www.my-server.com/myform", formParts))
 {
     www.SetRequestHeader("Authorization", "Bearer " + key);
     yield return www.SendWebRequest();

     if (www.result != UnityWebRequest.Result.Success)
     {
         Debug.Log(www.error);
     }
     else
     {
         Debug.Log("Form upload complete!");
     }
 }

关于c# - 使用图像参数时 Unity 连接到 Dall-E API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74345615/

相关文章:

.net - 来自 .net API 的 OpenAI 调用

php - 如何向 OpenAI PHP 库提供 RGBA png 文件

c# - 集合作为基类型的集合 C# 2.0

c# - 动态+linq编译报错

c# - 我将如何在一列数据库设计中创建多个类型ID

audio - Unity3D中音频信号谐波的幅度

c# - 与 TransactionScope 一起使用时 MVC 5 Identity 抛出超时异常

c# - 在 C# 中通过串口访问蓝牙数据

c# - 有没有办法在 Unity 的控制台中使用超链接?

python - 将 GPT3 与 RASA 相结合