- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Android 应用程序,目前正在使用 chat gpt 3.0 进行补全,并且工作正常。现在,在他们发布 chat gpt 3.5 Turbo 后,我根据他们的请求示例做了一些更改,但抛出了 400 错误,我感谢任何帮助,谢谢
public static void getResponse(Context context, String URL, String Token, TextView mQuestionText, TextInputEditText queryEdt, TextView mResponseText, String query) throws JSONException {
mQuestionText.setText(query);
queryEdt.setText("");
mResponseText.setText("Please wait..");
RequestQueue requestQueue = Volley.newRequestQueue(context);
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "text-davinci-003");
jsonObject.put("prompt", query);
jsonObject.put("temperature", 0);
jsonObject.put("max_tokens", 100);
jsonObject.put("top_p", 1);
jsonObject.put("frequency_penalty", 0.0);
jsonObject.put("presence_penalty", 0.0);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URL ,jsonObject, response -> {
try {
String responseMsg = response.getJSONArray("choices").getJSONObject(0).getString("text");
mResponseText.setText(responseMsg);
// SHUT DOWN TEXT TO SPEECH IN CASE OF QUERY CHANGE
if(textToSpeech != null){
textToSpeech.stop();
textToSpeech.shutdown();
textToSpeech = null;
}
// SPEAK THE RESPONSE FETCHED FROM SERVER
textToSpeech(context,responseMsg);
}catch (Exception e){
// error
Log.d("TAG","Error is " + e.getMessage());
}
}, error -> {
Log.d("TAG","Error " + error.getMessage());
}){
@Override
public Map<String, String> getHeaders() {
Map<String,String> params = new HashMap<>();
params.put("Content-Type","application/json");
params.put("Authorization","Bearer " + Token);
return params;
}
};
requestQueue.add(jsonObjectRequest);
}
public static void getResponse(Context context, String URL, String Token, TextView mQuestionText, TextInputEditText queryEdt, TextView mResponseText, String query) throws JSONException {
mQuestionText.setText(query);
queryEdt.setText("");
mResponseText.setText("Please wait..");
RequestQueue requestQueue = Volley.newRequestQueue(context);
ArrayList<ChatModel> arrayList = new ArrayList<>();
arrayList.add(new ChatModel("user",query));
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "gpt-3.5-turbo");
jsonObject.put("messages",arrayList);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URL ,jsonObject, response -> {
try {
String responseMsg = response.getJSONArray("choices").getJSONObject(0).getString("text");
mResponseText.setText(responseMsg);
// SHUT DOWN TEXT TO SPEECH IN CASE OF QUERY CHANGE
if(textToSpeech != null){
textToSpeech.stop();
textToSpeech.shutdown();
textToSpeech = null;
}
// SPEAK THE RESPONSE FETCHED FROM SERVER
textToSpeech(context,responseMsg);
}catch (Exception e){
// error
Log.d("TAG","Error is " + e.getMessage());
}
}, error -> {
Log.d("TAG","Error " + error.getMessage());
}){
@Override
public Map<String, String> getHeaders() {
Map<String,String> params = new HashMap<>();
params.put("Content-Type","application/json");
params.put("Authorization","Bearer " + Token);
return params;
}
};
requestQueue.add(jsonObjectRequest);
}
E/Volley: [1922] NetworkUtility.shouldRetryException: Unexpected response code 400 for
https://api.openai.com/v1/completions
最佳答案
您使用的是 gpt-3.5-turbo
型号。
Chat Completions API 之间存在三个主要区别(即 GPT-3.5 API)和 Completions API (即 GPT-3 API):
https://api.openai.com/v1/completions
https://api.openai.com/v1/chat/completions
prompt
参数(Completions API)已替换为 messages
参数(Chat Completions API)response.getJSONArray("choices").getJSONObject(0).getString("text")
response.getJSONArray("choices").getJSONObject(0).getString("message")
问题 1:您使用了错误的 API 端点
改变这个...
https://api.openai.com/v1/completions
...对此。
https://api.openai.com/v1/chat/completions
问题 2:确保 messages
参数的 JSON 有效
像这样:
JSONObject jsonObject = new JSONObject();
JSONArray messages = new JSONArray();
JSONObject message = new JSONObject();
message.put("role", "user");
message.put("content", "What are your functionalities?");
messages.put(message);
jsonObject.put("messages", messages);
此代码将创建以下 JSON 对象:
{
"messages": [
{
"role": "user",
"content": "What are your functionalities?"
}
]
}
问题 3:您访问响应的方式不正确
改变这个...
response.getJSONArray("choices").getJSONObject(0).getString("text")
...对此。
response.getJSONArray("choices").getJSONObject(0).getString("message")
注意:如果您仍然收到 API 错误 400
,请确保您已将 Content-Type
header 设置为 application/json
。请注意,application/json、UTF-8
不起作用。
关于java - OpenAI ChatGPT (GPT-3.5) API 错误 400 : "Unexpected response code 400 for https://api.openai.com/v1/completions" (migrating GPT-3 to GPT-3. 5 API),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75616048/
我有一个包含以下内容的简单服务: import { Injectable } from '@angular/core'; import { Http, Response } from '@angula
在我的 Angular-12 应用程序中,我在服务中有以下代码: constructor(private http: HttpClient, private router: Router) {
我是android领域的新手,我想从响应json数组访问每个结果元素,但我无法做到这一点,我试图获取每个元素,但我只得到一个值“rohit1”是第一个元素。请帮助我。 我是 rohit parmar,
我正在用 java 编写 RESTful 服务,但是当我尝试使用 Resource 类时,显示以下错误:类型 Response.Response 构建器不可见。我不明白问题可能是什么,因为我已经导入了
在 Spring 应用程序中,我正在调用第三方服务,我正在发送 XML 请求并获取 XML 响应,当无法将该响应解析为 Java 对象时,我正确地获得了 XML 响应,我收到以下错误: org.spr
我正在发布一个页面 URL 例如 mysite.com/disclaimer/someinfo 此页面显示协议(protocol),如果用户单击同意按钮,则 PDF 文件将作为附件流式传输。 这样做的
我是 Camel 的新手。我一直在尝试将数据(文件中的 Json)提交到网络服务。这是我的代码: public static void main(String args[]) throws E
我有一个 HTTP 执行器类: Future future = service.apply(request).toJavaFuture(); 现在我想删除 ? extends其中的一部分,因为我不想让
我想将我所有的 http header 响应设置为这样的: response.headers["X-Frame-Options"] = "SAMEORIGIN" 我检查了this question ,
我们有两个 channel ,分别是 channelA 和 channelB。 在 channel A中我们有两个目的地 一个。第一个目的地将使用 XML 数据作为输入调用 channelB,并从 c
以下有什么区别 response.status(200).send('Hello World!'); 和这个 response.writeHead(200, {'content-type':'appl
我试图让Foundation在iPhone的浏览器上响应。我已经在手机上尝试过Safari和Chrome,它们都显示了 table 面布局。 但是,在 table 面上,如果缩小浏览器窗口,则会看到布
您好,当我在云代码中运行此作业时,我收到一条错误日志:Failed with: success/error was not called. 定义功能运行良好,但在作业日志中我有此错误日志。请协助我解决
我正在使用ozeki ng短信网关。我无法将任何短信发送到任何手机。请帮助我通过网络发送短信到手机 从客户端检测到一个潜在危险的Request.Form值(textboxError =“。设置此值之后
今天我在 WordPress 中遇到了问题。当我尝试创建一个新页面并在 WordPress 管理部分上传新图像时,我尝试找出解决方案,但我没有得到它......所以经过一个小时的打磨后我得到了一个解决
我过去常常通过刷新和结束来结束对客户端的传输,如下面的代码所示。 Response.Flush(); Response.End(); 但是,Response.End() 将缓冲内容刷新到客户端让我印象
我正在编写一个在单击按钮时显示对话框窗口的函数:这里是与状态和 statusCode 相关的代码段。 if(response.status>300){
从资源清理的角度,为什么会有Response.Close()和Response.Dispose(),哪个更全面(调用另一个)? 最佳答案 在提供这两种方法的情况下,Dispose 的实现应该调用 Cl
在我注意到我的代码可能在以经典模式设置的服务器上运行之前,我一直在使用 Response.Header.Add()。在这种情况下,异常“此操作需要 IIS 集成管道模式”。被提出。 我切换到 Resp
Response.End() 生成 ThreadAbortException。 使用 HttpContext.Current.ApplicationInstance.CompleteRequest 代
我是一名优秀的程序员,十分优秀!