unity+ chatgptをwebglでできるようにする方法についての考察
gpt-3.5-turboをそのままunity内で動かす事はできるが、webglに組み込んだ上で、動かす事はできない。何故か?
- Responseを受け取る前に次の動作に移動してしまう。
- request responseの書式がwebglだと違う
が考えられそう。
前者についてはunitask
後者はまだわからない
前者でunitaskを簡易的に実装したら上手く行った。
{
Debug.Log(newMessage);
communicationHistory.Add(new MessageModel()
{
role = "user",
content = newMessage
});
var apiUrl = "https://api.openai.com/v1/chat/completions";
var jsonOptions = JsonUtility.ToJson(
new CompletionRequestModel()
{
model = "gpt-3.5-turbo-0301",
messages = communicationHistory
}, true);
var headers = new Dictionary<string, string>
{
{"Authorization", "Bearer " + apiKey},
{"Content-type", "application/json"},
{"X-Slack-No-Retry", "1"}
};
var request = new UnityWebRequest(apiUrl, "POST")
{
uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(jsonOptions)),
downloadHandler = new DownloadHandlerBuffer()
};
foreach (var header in headers)
{
request.SetRequestHeader(header.Key, header.Value);
}
var operation = request.SendWebRequest();
await operation;```
ただ、ここには膨大な数のエラーが現れるので、修正が必要になる。
主に起きるエラーはこの二つ
runntimeError: null function or function signature mismatch,RuntimeError: null function or function signature mismatch
abnormal situation has occurred: the PlayerLoop internal function has been called recursively. Please contact Customer Support with a sample project so that we can reproduce the problem and troubleshoot it.
unitaskの実装で使った記事
今回はoperation変数
github pagesを使って webglをアップロードしようとしてみたところ、次のようなエラーが出た
'''Unable to parse Build/docs.framework.js.gz! This can happen if build compression was enabled but web server hosting the content was misconfigured to not serve the file with HTTP Response Header "Content-Encoding: gzip" present. Check browser Console and Devtools Network tab to debug.'''
これをみるに、サーバーがまずいらしいのだが、githubは直せない、何かこちらの原因のはずだが。
判明、
この設定のdisableとなっているところがgzipだったかららしい。
これだけでは修正が効かない模様。ほかにも原因があるのかも。