题意:"OpenAI GPT-3.5 的 `prompt` 参数不起作用"
问题背景:
I am trying to make a flutter app with the openAI api that works like a chatbot, and I want to add a prompt so that the responses are more specialized, like in the openAI playground on their website.
"我正在尝试使用 OpenAI API 制作一个类似聊天机器人的 Flutter 应用,并且我想添加一个提示,以便响应更加专业化,就像在他们网站上的 OpenAI Playground 一样。"
I am testing the API post function with postman and it worked perfectly fine for me before I tried adding a prompt. I assumed that to add a prompt you just have to add a "prompt": line in the body like when you work with the text-davinci model, but when I do that I get this message returned:
"我正在使用 Postman 测试 API 的 POST 功能,它在我尝试添加提示之前一直运行得非常好。我以为要添加提示,只需要像在使用 text-davinci 模型时那样在请求体中添加一行 `"prompt":` 即可,但当我这样做时,我收到了以下消息:"
{
"error": {
"message": "Unrecognized request argument supplied: prompt",
"type": "invalid_request_error",
"param": null,
"code": null
}
}
Is there a different way you need to do this with the gpt models, or does the prompt argument just not exist for them?
"使用 GPT 模型时需要采用不同的方法吗,还是说这些模型根本不存在 `prompt` 参数?"
问题解决:
The OPEN AI 3.5-turbo model only supports the newer chat completion API which does not have a 'prompt' json body field.
"OPEN AI 3.5-turbo 模型仅支持较新的聊天完成 API,该 API 没有 `prompt` JSON 请求体字段。"
I would assume you are using the older competion API json body format aginst the newer chat completion API endpoint and that is the reason for your error.
"我认为你可能是使用了较旧的 completion API JSON 请求体格式来访问较新的聊天完成 API 端点,这就是你遇到错误的原因。"
--- update ---
I can reproduce your exact error response with:
"我可以通过以下方式重现你的确切错误响应:"
curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer $OPENAI_API_KEY" -d '{ "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Hello!"}], "prompt": "testing" }'
This is just a modified example from the api link above. Removing the added "prompt" field from the json makes it work fine.
"这只是上述 API 链接中的一个修改示例。移除 JSON 中添加的 `prompt` 字段后,它就能正常工作了。"
So my advice in the comment stands. Figure out what you are sending in the body of your http GET request. It will have a "prompt" field, remove it and any other field that should not be there and it should work.
"所以我在评论中的建议仍然适用。查明你在 HTTP GET 请求的请求体中发送了什么内容。它会有一个 `prompt` 字段,移除它以及任何其他不应该存在的字段,然后它应该就能正常工作了。"