本日はUnity,AI枠です。
以前BlenderでChatGPTのAPIを使用して通信を行いアドオン内にChatGPTの機能を埋め込みました。
今回はUnityで動かしていきます。
〇環境
・Windows11PC
・Unity6000.0.2f
〇OpenAI APIの取得
OpenAIのAPI取得は以下の記事を参考にしてください。
〇GPT4o-miniを使用したUnityコード
Unity側ではエンドポイントとAPIキーを使用してJsonファイル形式で質問内容を投げます。
具体的なJsonは以下のようになります。
string _inputText;
string jsonContent = $@"
{{
""model"": ""gpt-4o-mini"",
""messages"": [
{{""role"": ""system"", ""content"": ""You are a helpful assistant."" }},
{{""role"": ""user"", ""content"": ""{_inputText}"" }}
],
""max_tokens"": 100
}}";
このJsonを投げるエンドポイントはhttps://api.openai.com/v1/chat/completionsになります。
これによってJson形式でレスポンスが返されます。

・入力
おすすめのリラックス音楽を教えて、出来れば声の入っていない楽器のみの曲で、ヒーリング系の曲でお願い
・レスポンス
リラックスできるヒーリング系の音楽で、声の入っていない楽器のみの曲をいくつかご紹介します。\n\n1. マックス・リヒター(Max Richter) - 特に「Sleep」というアルバムは、クラシックと現代音楽を組み合わせた心地よいトラックが特徴です。\n\n2. **ラージ・アブシャー
以上でUnityでOpenAI APIを使用した基礎的なスクリプトができました。
本日は以上です。
〇コード全文
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
public class ChatGPTIntegration : MonoBehaviour
{
[SerializeField] private string _inputText = "Your input text here";
private const string ChatGPTApiUrl = "https://api.openai.com/v1/chat/completions"; // Replace with your API endpoint
private const string ApiKey = "sk-\"; // OpenAI API keyを入れてください。
public async void ProcessInputText()
{
try
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {ApiKey}");
// 正しいJSON形式のリクエストデータ
string jsonContent = $@"
{{
""model"": ""gpt-4"",
""messages"": [
{{""role"": ""system"", ""content"": ""You are a helpful assistant."" }},
{{""role"": ""user"", ""content"": ""{_inputText}"" }}
],
""max_tokens"": 100
}}";
var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");
var response = await client.PostAsync(ChatGPTApiUrl, content);
if (response.IsSuccessStatusCode)
{
string responseContent = await response.Content.ReadAsStringAsync();
Debug.Log("ChatGPT response: " + responseContent);
}
else
{
Debug.LogError($"Failed to request ChatGPT API. Status code: {response.StatusCode}");
string errorContent = await response.Content.ReadAsStringAsync();
Debug.LogError("Error details: " + errorContent); // 追加でエラー内容をログに表示
}
}
catch (Exception e)
{
Debug.LogError("Error processing request to ChatGPT API: " + e.Message);
}
}
// For demonstration purposes, trigger the request in Update()
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
ProcessInputText();
}
}
}