我正在学习将聊天 GPT 集成到我的 Android 应用程序中。然而,即使遵循教程中的相同代码并使用正确的 API 密钥,也无法获得响应。
代码如下:
public static final MediaType JSON = MediaType.get("application/json");
OkHttpClient client = new OkHttpClient();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
callAPI();
}
void callAPI(){
JSONObject jsonBody = new JSONObject();
try {
jsonBody.put("model","text-davinci-003");
jsonBody.put("prompt","for testing, say hii...");
jsonBody.put("max_tokens",4000);
jsonBody.put("temperature",0);
} catch (JSONException e) {
e.printStackTrace();
}
RequestBody requestBody = RequestBody.create(jsonBody.toString(),JSON);
// Replace 'YOUR_API_KEY' with your actual API key obtained from OpenAI
String apiKey = "sk-proj-5RU4XAKQXXXXXXXX";
Request request = new Request.Builder()
.url("https://api.openai.com/v1/completions")
.header("Authorization","Bearer " + apiKey)
.post(requestBody)
.build();
Log.d("APIApp", "callAPI: ==============");
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(@NonNull Call call, @NonNull IOException e) {
Log.d("APIApp", "onFailure: " + e);
}
@Override
public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
if(response.isSuccessful()){
Log.d("APIApp", "onResponse: " + response.toString());
}else{
Log.d("APIApp", "onResponseFail: " + response.toString());
}
}
});
}
控制台日志:
onResponseFail:响应{协议=h2,代码=404,消息=, url=https://api.openai.com/v1/completions}
点击网址:
{ “错误”: { "message": "您没有提供 API 密钥。您需要使用 Bearer auth 在授权标头中提供 API 密钥(即 授权:承载 YOUR_KEY),或作为密码字段(空白 用户名)如果您从浏览器访问 API 并且是 提示输入用户名和密码。您可以从以下位置获取 API 密钥 https://platform.openai.com/account/api-keys。”, “类型”:“无效请求错误”, “参数”:空, “代码”:空 } }
我建议使用现成的库来使用 OpenAi API。其中很少有相当不错的。几个例子:https://github.com/bay73/generic-ai/blob/main/README.md或https://github.com/aallam/openai-kotlin/blob/main/README.md