我目前正在尝试使用 C# 将 ChatGPT 的功能实现到我的统一项目中。
我有一个 JSON 类用于包装我的请求和解包它,我成功地实现了它,所以每当我发送请求时我都会得到响应。问题是我得到的回应完全是随机的。例如,我会问它“什么是动词?”它会给我一个回复,告诉我促成播客成功的因素。不确定我的配置是否错误或到底发生了什么,所以我将在下面发布课程。
请求类:
namespace OpenAIAPIManagement
{
[Serializable]
public class OpenAIAPIRequest
{
public string model = "gpt-3.5-turbo";
public Message[] messages;
public float temperature = 0.5f;
public int max_tokens = 50;
public float top_p = 1f;
public float presence_penalty = 0f;
public float frequency_penalty = 0f;
public OpenAIAPIRequest(string model_, Message[] messages_, float temperature_, int max_tokens_, float top_p_, float presence_penalty_, float frequency_penalty_)
{
this.model = model_;
this.messages = messages_;
this.temperature = temperature_;
this.max_tokens = max_tokens_;
this.top_p = top_p_;
this.presence_penalty = presence_penalty_;
this.frequency_penalty = frequency_penalty_;
}
}
[Serializable]
public class Message
{
public string role = "user";
public string content = "What is your purpose?";
public Message(string role_, string content_)
{
this.role = role_;
this.content = content_;
}
}
}
我发送回复的方式:
public static async Task<Message> SendMessageToChatGPT(Message[] message, float temperature, int max_tokens, float top_p, float presence_penalty, float frequency_penalty)
{
string request = OpenAIAPIManager.SerializeAPIRequest("gpt-4", message, temperature, max_tokens, top_p, presence_penalty, frequency_penalty);
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {_apiKey}");
HttpResponseMessage response = await client.PostAsync(_apiURL, new StringContent(request, System.Text.Encoding.UTF8, "application/json"));
if (response.IsSuccessStatusCode)
{
Message responseMessage = OpenAIAPIManager.DeserializeAPIResponse(await response.Content.ReadAsStringAsync()).choices[0].message;
Debug.Log("ChatGPT: " + responseMessage.content);
return await Task.FromResult<Message>(responseMessage);
}
else
{
return await Task.FromResult<Message>(new Message("Error", "Status" + response.StatusCode));
}
}
,最后从文本字段中取出字符串:
public async void ProcessMessageFromInputField()
{
if (_userInput && !string.IsNullOrWhiteSpace(_userInput.text))
{
_chatData.Clear();
_chatData.Add(_userInput.text + _userPostfix);
PostMessageToContentPanel(_chatData[0]);
_userInput.text = "";
Message userMessage = new Message("user", _userInput.text);
Message chatAgentResponse = await OpenAIAPIManager.SendMessageToChatGPT(new Message[]{userMessage}, 0.7f, 256, 1f, 0f, 0f);
PostMessageToContentPanel(chatAgentResponse.content + _aiPostfix);
}
}
我已经阅读了 API,并尽我所能配置它,但如果我遗漏了什么,我真的很感激任何帮助
谢谢。
• 使用 firebase 云函数作为后端时,有没有办法流式传输 OpenAI(chatGPT)响应? [重复]
• 是否有 [chatGPT-prompt] 标签来讨论提示写作以向 chatGPT 提出适当的问题?
• Excel VBA ChatGPT 3.5-turbo API 为同一问题返回不同的结果
• 如何修复 python 上的 ChatGPT API 密钥错误
• OpenAI ChatGPT (GPT-3.5) API 错误:“这是一个聊天模型,v1/completions 端点不支持”
• 在 JSON flutter 中解析 ChatGPT API 请求
• 如何将 chatgpt 连接到 mysql 数据库并让它能够解析数据并给我一个连贯的响应?
• Relative Import的问题(ChatGPT无法帮助回答)
• 如何在 python 中使用 chatGPT 函数来分析 CSV 文件
• 使用 Emoji Mart 设置 emoji 按钮时出现问题
• 如何在 python 中使用 chatgpt 从“text-davinci-003”更新我的聊天机器人到“gpt-3.5-turbo”