OpenAIのAPIをC# Unityでやるためのスニペット


4月になったのでGithub copilotとchatGPTに課金してみた。chatGPTのAPIがあるというのでチラ見。リファレンスみてたら platform.openai.com/docs/libraries に Unityがあるので入れてみたりしたのだが、入力にInputを使っていたり嫌な予感。2年まえのだった。APIもリファレンスとずれてて通らない。なんとなく昔はmodelsとかcompletionsがなかったのかな?json組むところを追ってたんだけど250ぐらいファイルがあってしかもパッケージなので嫌になった。素体にしているjsonをちょいと書き換えるぐらいのもんだとおもったんだよ。というかちょいと動かしてみたかっただけなんだ。使う予定もない。ローカルにnode.jsとかpythonとかを動かせる環境をつくる気力と能力がない。いま動くのはunityとそれにつかってるC#ぐらい。

というわけで、curlコマンドで書かれてる内容をhttpClientで投げてけるやり方で動かしてみた。公式のライブラリから紹介されていたひとは UnityEngine.Networking; つかってたけど、使い方がよくわからないのでSystemのHttpにしてしまった。ベタがきで蹴ってるだけなのでよしなに書き換えて自分で実装してみてください。まあほんとにほんとのご参考までに。他のかたの15分ぐらいの労力節約のためにネットの海に放流しておく。技術ブログとかもってないんだ・・・。


using System;   // Uri
using System.Text;   // Ascii
using System.Net.Http;
using System.Net.Http.Headers;    //AuthenticationHeaderValue 
using UnityEngine;

public class UnitCurl : MonoBehaviour
{
    private static async void postOpenAIAPI()
    {
        using HttpClient client = new HttpClient();
        string uri = "https://api.openai.com/v1/chat/completions";
        var request = new HttpRequestMessage(HttpMethod.Post, uri);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "ひみつかぎ");
        client.DefaultRequestHeaders.Add("User-Agent", $"testKui/openai_api_fromunity");
        client.DefaultRequestHeaders.Add("OpenAI-Organization", $"あれば、そしきID");

        string json = "{" 
            + "\"model\": \"gpt-3.5-turbo\","
            // + "\"messages\": [{\"role\": \"user\", \"content\": \"Say this is a test!\"}],"
            + "\"messages\": [{\"role\": \"assistant\", \"content\": \"hello!\"}],"
            + "\"temperature\": 0.7"
            + "}";
        HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
        var httpsResponse = await client.PostAsync(uri, content);
        var responseContent = await httpsResponse.Content.ReadAsStringAsync();

        Console.WriteLine($"{responseContent}");
        Debug.Log(responseContent);
    }

    void Awake()
    {
        postOpenAIAPI();

    }
}

最近は、UnityとPlateauで簡単なタワーディフェンスゲームをつくろうとおもっている。chatGPTを使う予定はないのだけど、流行りに流された。流行りに流されると苦労するな?


コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください