😽
UnityでOpenAIのEmbedding APIを使う方法
はじめに
OpenAIのEmbedding APIは、文章を数値的なベクトルとして表現することで、テキストの意味内容を捉えることが可能です。Unityでこの技術を使えば、ゲーム内のアイテム検索やユーザーテキストの感情分析などが可能になります。APIの詳細は、OpenAIの公式ドキュメントを参照してください。
Embeddingの基本
Embeddingは、単語や文章をベクトル空間にマッピングする技術です。この変換により、テキストの意味を数値的に表現できます。検索エンジンや文章分類、推薦システムなど、多くの応用例が存在します。詳細は次のリンクから参照できます。
ゲームへの応用例
ゲームでは以下のような方法でEmbedding APIを利用できます:
-
ゲーム内アイテム検索:
ユーザーが「日本の歴史的な刀」と入力した場合、その文章と類似する「日本刀」を検索結果として提案できます。 -
感情分析:
ユーザーの文章と「positive」「negative」という埋め込みとの類似度を計算することで、感情を分析できます。
Unityで実際に使う
UnityでEmbedding APIを利用するコード例は以下の通りです。このコードでは、ユーザーからの入力に基づき、その埋め込みをログに出力します。埋め込みはfloat型の配列なので特に数字が表示されるわけではないです。
using System;
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using System.Text;
public class Embedding : MonoBehaviour
{
private string apiUrl = "https://api.openai.com/v1/embeddings"; // OpenAIのEmbedding APIのURL
private string apiKey = "YOUR_API_KEY"; // OpenAIのAPIキー。実際のAPIキーに置き換える必要があります。
// 文章のEmbeddingを取得するためのWebリクエストを送信するコルーチン
private IEnumerator SendRequest(string text)
{
var requestBody = new Property()
{
input = text, // リクエストの入力として使用されるテキスト
model = "text-embedding-ada-002" // 使用するEmbeddingモデル
};
// リクエストの本文をJSON形式に変換
string jsonData = JsonUtility.ToJson(requestBody);
byte[] postData = Encoding.UTF8.GetBytes(jsonData);
using (UnityWebRequest request = new UnityWebRequest(apiUrl, "POST"))
{
request.uploadHandler = new UploadHandlerRaw(postData);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Authorization", $"Bearer {apiKey}"); // 認証ヘッダーの設定
request.SetRequestHeader("Content-Type", "application/json"); // コンテントタイプの設定
// リクエストの送信とレスポンスの待機
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.Log($"Error: {request.error}"); // エラーが発生した場合のログ出力
}
else
{
// 成功した場合はレスポンスをEmbeddingDataオブジェクトに変換
EmbeddingData embeddingData = JsonUtility.FromJson<EmbeddingData>(request.downloadHandler.text);
Debug.Log(embeddingData.data[0].embedding);
}
}
}
}
[Serializable]
public class EmbeddingData
{
public string objectType; // レスポンスのオブジェクトタイプ
public EmbeddingJson[] data; // Embeddingのデータ配列
public string model; // 使用されたモデル
public Usage usage; // API使用状況
}
[Serializable]
public class EmbeddingJson
{
public string embeddingType; // 埋め込みタイプ
public int index; // 埋め込みのインデックス
public float[] embedding; // 実際の埋め込みベクトル
}
[Serializable]
public class Usage
{
public int prompt_tokens; // プロンプトのトークン数
public int total_tokens; // 合計のトークン数
}
[System.Serializable]
public class Property
{
public string input; // リクエストの入力
public string model; // 使用するモデル
}
まとめ
UnityでOpenAIのEmbedding APIを使用する方法を紹介しました。埋め込みを用いて、ゲーム内のアイテム検索や感情分析などの機能を実装できます。これからの記事で、これらのタスクに関する詳細な解説も予定しています。この記事が役立つと思ったら、ぜひフォローをお願いします。
Discussion