admin管理员组文章数量:1631700
数据类
发送的数据
[Serializable]
public class PostData
{
public string model;
public List<PostMessage> messages;
}
[Serializable]
public class PostMessage
{
public string role;
public string content;
public PostMessage() { }
public PostMessage(string role, string content)
{
this.role = role;
this.content = content;
}
}
接收的数据
[Serializable]
public class RespondedData
{
public string id;
public string created;
public string model;
public List<Choice> choices;
}
[Serializable]
public class Choice
{
public RespondedMessage message;
public string finish_reason;
public int index;
}
[Serializable]
public class RespondedMessage
{
public string role;
public string content;
}
role 的可选值:system || user || assistant
system:AI的角色设定,可在初始化时设置
user:用户发送的数据角色
assistant:返回信息的角色
管理类
private string url = "https://api.openai/v1/chat/completions";
private string model = "gpt-3.5-turbo";
private string apiKey = "*************";
private List<PostMessage> postMessages = new List<PostMessage>();
public void SendMessage(string message, Action<bool, string> callBack)
{
postMessages.Add(new PostMessage("user", message));
PostData postData = new PostData
{
model = model,
messages = postMessages
};
StartCoroutine(PostDataByJson(postData, callBack));
}
IEnumerator PostDataByJson(PostData postData, Action<bool, string> callBack)
{
UnityWebRequest request = new UnityWebRequest(url, "POST");
string postJson = JsonUtility.ToJson(postData);
byte[] dataBytes = Encoding.UTF8.GetBytes(postJson);
request.uploadHandler = new UploadHandlerRaw(dataBytes);
request.downloadHandler = new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
request.SetRequestHeader("Authorization", string.Format("Bearer {0}", apiKey));
yield return request.SendWebRequest();
if (request.responseCode.Equals(200))
{
string responded = request.downloadHandler.text;
Debug.Log(responded);
RespondedData respondedData = JsonUtility.FromJson<RespondedData>(responded);
if (respondedData != null && respondedData.choices.Count > 0)
{
string message = respondedData.choices[0].message.content;
callBack?.Invoke(true, message);
}
else
{
callBack?.Invoke(false, "获取失败");
}
}
else if (request.responseCode.Equals(404))
{
callBack?.Invoke(false, "未找到");
}
else if (request.responseCode.Equals(500))
{
callBack?.Invoke(false, "服务器内部错误");
}
else
{
Debug.Log(request.downloadHandler.text);
callBack?.Invoke(false, "获取失败");
}
}
版权声明:本文标题:Unity 对接Chat GPT 3.5 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729104447a1186837.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论