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

问题描述 投票:0回答:1

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

image
mask
参数?

对于背景,类似以下的内容适用于其他参数,例如

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();

当使用

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

c# unity3d openai-api text2image
1个回答
1
投票

UnityWebRequest.Post
-> 需要
List<IMultipartFormSection>
的重载将自动使用此内容类型标题,您可以在其中提供
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!");
     }
 }
© www.soinside.com 2019 - 2024. All rights reserved.