概念

如果你使用的是OkHttp的化,然后保证所有的ChatGPT的Request请求参数都是正确的话,然后ChatGPT那边返回的状态是400然后显示的错误是model没有选择的话,就像下面一样:

400
{
    "error": {
        "message": "you must provide a model parameter",
        "type": "invalid_request_error",
        "param": null,
        "code": null
    }
}

错误的请求格式

    
    Proxy proxy = new Proxy(Proxy.Type.HTTP,new InetSocketAddress("127.0.0.1",7890));

    RequestBody requestBody =new FormBody.Builder()
             .add("model","gpt-3.5-turbo")
             .add("messages","[{'role': 'user', 'content': 'ChatGPT是什么'}]")
             .add("temperature","0.7")
             .build();

     log.info(requestBodyToString(requestBody));

     Request request = new Request.Builder()
             .addHeader("Content-Type","application/json")
             .addHeader("Authorization","Bearer keys")//对应的api keys
             .post(requestBody)
             .url("https://api.openai.com/v1/chat/completions")
             .build();

     log.info(request.toString());

     OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
             .proxy(proxy)
             .build();


     Response execute = okHttpClient.newCall(request).execute();

     System.out.println(execute.code());

     String string = execute.body().string();
     System.out.println(string);

可以发送请求的方式


   String API_URL = "https://api.openai.com/v1/chat/completions";

   OkHttpClient client = new OkHttpClient.Builder()
           .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 7890)))
           .build();

   MediaType mediaType = MediaType.parse("application/json");
   String requestBody = "{\n" +
           "     \"model\": \"gpt-3.5-turbo\",\n" +
           "     \"messages\": [{\"role\": \"user\", \"content\": \"解释下什么是ChatGPT\"}],\n" +
           "     \"temperature\": 0.7\n" +
           "   }";

   Request request = new Request.Builder()
           .url(API_URL)
           .post(RequestBody.create(mediaType, requestBody))
           .addHeader("Authorization", "Bearer keys")
           .build();

   Response response = client.newCall(request).execute();
   System.out.println(response.body().string());
   

请求成功之后的结果为

{
	"id":"chatcmpl-7HO55p4na7a2P5Lh9Now2MWeJpANU",
	"object":"chat.completion",
	"created":1684378499,
	"model":"gpt-3.5-turbo-0301",
	"usage":{"prompt_tokens":18,"completion_tokens":183,"total_tokens":201},
	"choices":[
		{
			"message":{
				"role":"assistant",
				"content":"ChatGPT是一个基于人工智能技术的聊天机器人,可以与用户进行自然语言交互。它可以回答各种问题,提供各种信息和服务,包括天气、新闻、娱乐、旅游、健康等等。ChatGPT使用了先进的自然语言处理技术,可以理解人类语言的含义和意图,同时还可以学习和改进自己的回答,以提供更准确、更有帮助的答案。ChatGPT可以在多个平台上使用,包括网站、移动应用程序和社交媒体平台。"
			},
			"finish_reason":"stop","index":0
		}
	]
}

结论

就是使用RequestBody的时候你的请求格式是加载不进去的,那么有可能就会显示错误或者请求参数有问题

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐