使用OkHttp然后编辑RequestBody无法发送ChatGPT的chat请求并且显示没有选择model

概念

如果你使用的是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的时候你的请求格式是加载不进去的,那么有可能就会显示错误或者请求参数有问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

堕落年代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值