유니티 C# ChatGPT 연동하는 방법 간단 구현 코드 예시

반응형

유니티 C# ChatGPT 연동하는 방법 간단 구현 코드 예시

먼저 OpenAI 웹사이트에서 API 키를 발급받아야 합니다. OpenAI API 키 발급 페이지에 접속하여 회원가입 후 API 키를 발급받습니다.

 

코드 작성

using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using Newtonsoft.Json.Linq;

public class OpenAIChat : MonoBehaviour
{
    // OpenAI API 키를 입력하세요
    private string apiKey = "YOUR_OPENAI_API_KEY";
    // OpenAI API URL 설정
    private string apiUrl = "https://api.openai.com/v1/engines/davinci-codex/completions";

    // 시작할 때 호출되는 함수
    void Start()
    {
        // 예시로 사용할 프롬프트
        string prompt = "Translate the following English text to French: 'Hello, how are you?'";
        // 요청을 보내는 코루틴 시작
        StartCoroutine(SendRequest(prompt));
    }

    // OpenAI API에 요청을 보내는 함수
    IEnumerator SendRequest(string prompt)
    {
        // 새로운 웹 요청 생성
        UnityWebRequest request = new UnityWebRequest(apiUrl, "POST");

        // JSON 페이로드 생성
        JObject payload = new JObject
        {
            { "prompt", prompt },
            { "max_tokens", 60 }
        };

        // JSON 페이로드를 바이트 배열로 변환
        byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(payload.ToString());

        // 요청 헤더 설정
        request.uploadHandler = new UploadHandlerRaw(bodyRaw);
        request.downloadHandler = new DownloadHandlerBuffer();
        request.SetRequestHeader("Content-Type", "application/json");
        request.SetRequestHeader("Authorization", "Bearer " + apiKey);

        // 요청을 보내고 응답을 기다림
        yield return request.SendWebRequest();

        // 요청 결과 확인
        if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
        {
            Debug.LogError("Error: " + request.error);
        }
        else
        {
            // JSON 응답 파싱
            JObject jsonResponse = JObject.Parse(request.downloadHandler.text);
            string responseText = jsonResponse["choices"][0]["text"].ToString();
            Debug.Log("Response: " + responseText);
        }
    }
}
반응형