编写java版本的http流式返回访问GPT

这篇具有很好参考价值的文章主要介绍了编写java版本的http流式返回访问GPT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编写java版本的http流式返回访问GPT

  • 既然测试python可以实现http流式返回,那么java也可以实现。
  • 使用okHttp3库,实现。

gradle依赖

 // okhttp3
    implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.9.1'
    // org.json
    implementation group: 'org.json', name: 'json', version: '20210307'

代码

package org.jow.http.stream;

import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import org.json.JSONArray;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class OKStream {
    public static void main(String[] args) throws IOException {
        // 循环聊天,直到输入“再见”
        while (true) {
            // 控制台输入
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("输入问题:");
            String str = reader.readLine();
            if ("bye".equals(str)) {
                break;
            }
            OKStream okStream = new OKStream();
            okStream.chatWithGPT(str);
        }
    }

    private void chatWithGPT(String message) throws IOException {
        OkHttpClient client = new OkHttpClient();
        MediaType mediaType = MediaType.parse("application/json");
        JSONObject data = new JSONObject();
        data.put("messages", new JSONArray()
                .put(new JSONObject()
                        .put("role", "system")
                        .put("content", "You are an AI assistant that helps people find information."))
                .put(new JSONObject()
                        .put("role", "user")
                        .put("content", message)));
        data.put("temperature", 0.5);
        data.put("top_p", 0.95);
        data.put("frequency_penalty", 0);
        data.put("presence_penalty", 0);
        data.put("max_tokens", 800);
        data.put("stop", "null");
        data.put("stream", true);
        RequestBody body = RequestBody.create(mediaType, data.toString());
        Request request = new Request.Builder()
                .url("https://xxxx.openai.azure.com/openai/deployments/gpt-35-turbo-xxx/chat/completions?api-version=2023-03-15-preview")
                .post(body)
                .addHeader("Content-Type", "application/json")
                .addHeader("api-key", "************************")
                .build();
        Response response = client.newCall(request).execute();
        String line;
        while ((line = response.body().source().readUtf8Line()) != null) {
            if (line.equals("data: [DONE]")) {
                System.out.println("\n[DONE]");
                break;
            } else if (line.startsWith("data: ")) {
                line = line.substring(6);
                JSONObject responseJson = new JSONObject(line);
                if (responseJson.getJSONArray("choices").getJSONObject(0).getJSONObject("delta").has("content")) {
                    System.out.print(responseJson.getJSONArray("choices").getJSONObject(0).getJSONObject("delta").getString("content"));
                }
            }
        }
    }
}

文章来源地址https://www.toymoban.com/news/detail-684529.html

到了这里,关于编写java版本的http流式返回访问GPT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot上传文件到本地,并且返回一个http访问路径

    直接上代码,controller层代码: 然后配置和工具类: 上传工具类: 常量类  接下来讲一下思路: 1、首先我们是要把文件上传到项目的目录中,获取项目路径的方法是这个: 假如我们项目的路径是:D:/project/crm/admin,我们这里返回的路径就是D:/project/crm/admin/upload 2、文件上传

    2024年02月16日
    浏览(31)
  • OpenAi最简洁的Java流式返回接入方式,没有第三方依赖,只需要使用Spring Boot即可!轻松构建你的带有聊天记忆、画图功能的chatgpt!

    OpenAi最简洁的Java流式返回接入方式,没有第三方依赖,只需要使用Spring Boot即可!轻松构建你的带有聊天记忆、画图功能的chatgpt! GitHub - NiuXiangQian/chatgpt-stream: OpenAi最简洁的Java流式返回接入方式,没有第三方依赖,只需要使用Spring Boot即可!轻松构建你的带有聊天记忆、画图

    2024年02月12日
    浏览(42)
  • Android9.0及以上版本,开启Http的访问权限

    前言: 在android 9.0及以上版本中,cleartextTrafficPermitted默认设置为false阻止了从应用程序发送的任何http请求,官方说明:行为变更:以 API 级别 28 及更高级别为目标的应用  |  Android 开发者  |  Android Developers 1.在res新增xml文件:network_security_config.xml,内容如下: 全部: 过滤:

    2024年02月13日
    浏览(35)
  • java Spring Boot 2 /actuator/health 返回 HTTP 404

    spring-boot-starter-actuator官方文档 Spring Boot 包含许多附加功能,可帮助您在将应用程序投入生产时监控和管理应用程序。您可以选择使用 HTTP 端点或 JMX 来管理和监控您的应用程序。审核、运行状况和指标收集也可以自动应用于您的应用程序。 该spring-boot-actuator模块提供了 Spri

    2024年01月18日
    浏览(32)
  • Java调用WebService接口,SOAP协议HTTP请求返回XML对象

    Java调用Web service接口SOAP协议HTTP请求,解析返回的XML字符串: 1. 使用Java的HTTP库发送SOAP请求,并接收返回的响应。 可以使用Java的HttpURLConnection、Apache HttpClient等库。 2. 将返回的响应转换为字符串。 3. 解析XML字符串 ,可以使用Java的DOM解析器或者其他第三方库,如JDOM、DOM4J等。

    2024年01月19日
    浏览(38)
  • ASP.NET Core Web API 流式返回,逐字显示

    Websocket、SSE(Server-Sent Events)和长轮询(Long Polling)都是用于网页和服务端通信的技术。 Websocket是一种全双工通信协议,能够实现客户端和服务端之间的实时通信。它基于TCP协议,并且允许服务器主动向客户端推送数据,同时也允许客户端向服务器发送数据。 SSE是一种单向

    2023年04月23日
    浏览(42)
  • 非流式HTTP和流式的Websocket区别

    Websocket 是一种在 Web 应用程序中实现全双工、持久性连接的通信协议。它是基于 HTTP 协议构建的,但与传统的 HTTP 请求-响应模型不同。下面详细解释 Websocket 是如何实现的: 1.HTTP 握手: 当客户端想要与服务器建立 WebSocket 连接时,它首先发送一个普通的 HTTP 请求到服务器。

    2024年02月11日
    浏览(26)
  • ASP.NET Core Web API 流式返回,实现ChatGPT逐字显示

    🏆作者:科技、互联网行业优质创作者 🏆专注领域:.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 🏆欢迎关注我(Net数字智慧化基地),里面有很多 高价值 技术文章, 是你刻苦努力也积累不到的经验 ,能助你快速成长。升职

    2024年02月22日
    浏览(44)
  • PHP实现chatGPT流式输出代码,OpenAI对接,支持GPT3.5/GPT4

     源码下载地址:https://gitee.com/haoyachengge/chatgpt-speed.git 本文是sse实现方式,非常的简单。当然也可以用websocket方式实现,我也会继续更新

    2024年02月14日
    浏览(29)
  • 使用OkHttp流式请求OpenAI API(GPT API)接口

    因为 GPT 流式请求的出色交互体验,我们打算做一个开源基础应用,方便开发者快速集成项目。 本应用集成 ChatGPT API,使用模型为 gpt-3.5-turbo,项目代码为 Kotlin 语言开发的安卓应用。 人机交互的趋势已经到来,本应用框架也希望能帮助更多开发者快速集成 ChatGPT 体验到人机

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包