- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的代码中,第一次总是工作正常。正如您所看到的,我正在尝试保留以前的问题和答案的列表,以便与 _items
列表保持上下文。
所以第二次它失败并出现错误 400 bad request,但为了测试我尝试添加两个注释行来开始我的第一个问题,输入“他多大了?”所以它有上下文,并且也会失败并出现错误 400,因此它不能是其余代码的任何部分!我不明白为什么它不允许我添加更多上下文,因为我在网上看到的所有示例都说您可以添加多条消息以保留上下文。
private List<RequestMessage> _items = new();
// Method to send a message to the ChatGPT API and return the response
async public Task<string> SendMessage(string message)
{
Request request = new Request();
List<RequestMessage> requestMessages = new();
requestMessages.Add(
new RequestMessage()
{
Role = "system",
Content = $"You are ChatGPT, a large language model trained by OpenAI. Answer as concisely as possible.\nKnowledge cutoff: 2021-09-01\nCurrent date: {DateTime.Now.ToString("yyyy-MM-dd")}",
});
requestMessages.Add(
new RequestMessage()
{
Role = "user",
Content = "How are you?",
});
requestMessages.Add(
new RequestMessage()
{
Role = "assistant",
Content = "I am doing well",
});
/*
requestMessages.Add(
new RequestMessage()
{
Role = "user",
Content = "Who is Brendan Fraser?",
});
requestMessages.Add(
new RequestMessage()
{
Role = "assistant",
Content = "Brendan Fraser is a Canadian American actor",
});
*/
requestMessages.AddRange(_items);
requestMessages.Add(
new RequestMessage()
{
Role = "user",
Content = message,
});
request.Messages = requestMessages.ToArray();
string requestData = JsonSerializer.Serialize(request);
StringContent content = new StringContent(requestData, Encoding.UTF8, "application/json");
using (HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _apiKey);
httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
HttpResponseMessage httpResponseMessage = await httpClient.PostAsync(_apiUrl, content);
if (httpResponseMessage.IsSuccessStatusCode)
{
string responseString = await httpResponseMessage.Content.ReadAsStringAsync();
Response response = JsonSerializer.Deserialize<Response>(responseString);
string responseText = response.Choices[0].Message.Content;
_items.Add(new RequestMessage() { Role = "user", Content = message });
_items.Add(new RequestMessage() { Role = "assistant", Content = responseText });
return responseText;
}
else
{
return $"Error: {httpResponseMessage.StatusCode} - {httpResponseMessage.ReasonPhrase}";
}
}
}
最佳答案
问题出在我使用的所有精美的 Json 对象上。我没有费心正确地调试它来查看为什么会出错,但我对此进行了更改:
public class Request
{
[JsonPropertyName("model")]
public string Model { get; set; } = "gpt-3.5-turbo";
[JsonPropertyName("max_tokens")]
public int MaxTokens { get; set; } = 4000;
[JsonPropertyName("messages")]
public RequestMessage[] Messages { get; set; }
}
public class RequestMessage
{
[JsonPropertyName("role")]
public string Role { get; set; }
[JsonPropertyName("content")]
public string Content { get; set; }
}
public class Response
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("created")]
public int Created { get; set; }
[JsonPropertyName("model")]
public string Model { get; set; }
[JsonPropertyName("usage")]
public ResponseUsage Usage { get; set; }
[JsonPropertyName("choices")]
public ResponseChoice[] Choices { get; set; }
}
public class ResponseUsage
{
[JsonPropertyName("prompt_tokens")]
public int PromptTokens { get; set; }
[JsonPropertyName("completion_tokens")]
public int CompletionTokens { get; set; }
[JsonPropertyName("total_tokens")]
public int TotalTokens { get; set; }
}
public class ResponseChoice
{
[JsonPropertyName("message")]
public ResponseMessage Message { get; set; }
[JsonPropertyName("finish_reason")]
public string FinishReason { get; set; }
[JsonPropertyName("index")]
public int Index { get; set; }
}
public class ResponseMessage
{
[JsonPropertyName("role")]
public string Role { get; set; }
[JsonPropertyName("content")]
public string Content { get; set; }
}
使用直接json
private List<dynamic> messages = new List<dynamic>
{
new {role = "system",
content = "You are ChatGPT, a large language " +
"model trained by OpenAI. " +
"Answer as concisely as possible. " +
"Make a joke every few lines just to spice things up."},
new {role = "assistant",
content = "How can I help you?"}
};
messages.Add(new { role = "user", content = message });
var request = new
{
messages,
model = "gpt-3.5-turbo",
max_tokens = 300,
};
然后是一个更简单的responseObject
var responseObject = JsonConvert.DeserializeAnonymousType(responseString, new
{
choices = new[] { new { message = new { role = string.Empty, content = string.Empty } } },
error = new { message = string.Empty }
});
var messageObject = responseObject?.choices[0].message;
messages.Add(messageObject);
关于c# - OpenAI ChatGPT (GPT-3.5) API 错误 400 : "Bad Request" when adding multiple questions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76945543/
我收到以下错误:模块“openai”没有属性“ChatCompletion” 我检查了其他帖子。都在说升级OpenAI Python包或者升级Python。我都做了,但没有修复它。 Python:3.
我收到以下错误:模块“openai”没有属性“ChatCompletion” 我检查了其他帖子。都在说升级OpenAI Python包或者升级Python。我都做了,但没有修复它。 Python:3.
我有一个用例,非常需要来自 OpenAI API 的完全确定性响应。然而,玩弄温度似乎无法产生完全的决定论。 import openai openai.organization = "org-..."
OpenAI api 包含一个微调服务,将任务分为“提示”和“完成” https://platform.openai.com/docs/guides/fine-tuning 文档说准确度指标是根据完成
我通过openai的text-davinci-003可以正常返回对话信息,但是目前无法实现上下文关联功能。我搜索了一下,发现有一个“conversation_id”参数,但是添加该参数后,API返回“
我有一个用例,非常需要来自 OpenAI API 的完全确定性响应。然而,玩弄温度似乎无法产生完全的决定论。 import openai openai.organization = "org-..."
OpenAI api 包含一个微调服务,将任务分为“提示”和“完成” https://platform.openai.com/docs/guides/fine-tuning 文档说准确度指标是根据完成
我通过openai的text-davinci-003可以正常返回对话信息,但是目前无法实现上下文关联功能。我搜索了一下,发现有一个“conversation_id”参数,但是添加该参数后,API返回“
我想使用 openai.embeddings_utils import get_embeddings所以已经安装了openai Name: openai Version: 0.26.5 Summary
当我使用 GPT3 的 playground 时,我经常得到带有编号列表和段落格式的结果,如下所示: Here's what the above class is doing: 1. It creat
当我使用 GPT3 的 playground 时,我经常得到带有编号列表和段落格式的结果,如下所示: Here's what the above class is doing: 1. It creat
我想使用 openai.embeddings_utils import get_embeddings所以已经安装了openai Name: openai Version: 0.26.5 Summary
OpenAI/chat GPT也支持docx/pdf文件上传吗?。我想上传多个文件到openAI/chatGPT。我在https://platform.openai.com/docs/api-refe
openAI/chatGPT也支持docx/pdf文件上传吗? 我想上传多个文件到 openAI/chatGPT。我尝试了 https://platform.openai.com/docs/api-r
openAI/chatGPT也支持docx/pdf文件上传吗? 我想上传多个文件到 openAI/chatGPT。我尝试了 https://platform.openai.com/docs/api-r
如果我们查看环境的预览,它们会在右下角的动画中显示剧集的增加。 https://gym.openai.com/envs/CartPole-v1/ .是否有明确显示的命令? 最佳答案 我认为 Ope
是否有人从使用 text-embedding-ada-002 的 Azure OpenAI 嵌入部署中获得的结果与 OpenAI 的结果不同?相同的文本,相同的模型,结果在向量空间中相差相当远。 对于
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在学习gpt微调 我成功运行了这个命令:pip install --upgrade openai 我无法运行此命令:export OPENAI_API_KEY="sk-xxxxxxxxxxxxxx
如何解决Openai API 不断输出的问题,比如让gpt api 写一篇文章。如果内容中断,可以继续提问,从而继续输出以上内容。这在ChatGPT中很容易做到,但是Openai API加上上面的提示
我是一名优秀的程序员,十分优秀!