chatgpt开发,如何实现智能会话

  1. ChatGPT AI API:ChatGPT AI 提供了 API,您可以使用该 API 将 ChatGPT AI 集成到您的 Java 代码中。API 可以通过 HTTP 请求和响应进行访问,因此您需要使用 Java 的网络库进行访问。ChatGPT AI API 的细节可以在 OpenAI 的文档中找到。

  1. Java 网络编程:Java 提供了许多网络编程 API,您可以使用这些 API 与远程服务器通信。在与 ChatGPT AI API 进行通信时,您需要使用 Java 的网络编程 API 将 HTTP 请求发送到 ChatGPT AI API,并解析响应以获取 ChatGPT AI 的结果。

  1. Java 应用程序设计:Java 应用程序可以使用许多不同的框架和库进行设计。您需要选择适合您项目需求的框架和库。在与 ChatGPT AI 进行集成时,您需要确保您的 Java 应用程序能够在用户与 ChatGPT AI 进行交互时展示 ChatGPT AI 的响应。

下面是一些可能有用的步骤,以帮助您开始使用 ChatGPT AI API 进行开发:

  1. 注册 OpenAI:首先,您需要注册 OpenAI 帐户并获取 API 密钥,以便您的 Java 应用程序可以访问 ChatGPT AI API。您可以在 OpenAI 网站上完成注册过程。

  1. 创建 Java 项目:接下来,您需要创建一个 Java 项目,并使用 Maven 或 Gradle 等依赖管理工具添加所需的依赖项。您需要添加 Java 网络编程库和 JSON 解析库等依赖项。

  1. 编写 Java 代码:在 Java 项目中编写代码,以使用 ChatGPT AI API。您需要构建 HTTP 请求,并使用 Java 网络库将请求发送到 ChatGPT AI API。然后,您需要解析响应以获取 ChatGPT AI 的结果。最后,您需要在 Java 应用程序中展示 ChatGPT AI 的响应。

package com.unfbx.chatgptsteamoutput.controller;import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.unfbx.chatgpt.OpenAiClient;
import com.unfbx.chatgpt.OpenAiStreamClient;
import com.unfbx.chatgpt.entity.chat.Message;
import com.unfbx.chatgpt.exception.BaseException;
import com.unfbx.chatgpt.exception.CommonError;
import com.unfbx.chatgptsteamoutput.config.LocalCache;
import com.unfbx.chatgptsteamoutput.listener.OpenAIEventSourceListener;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;/*** 描述:** @author * @date 2023-03-01*/
@Controller
@Slf4j
public class ChatController {@Value("${chatgpt.apiKey}")
private String apiKey;
@Value("${chatgpt.apiHost}")private String apiHost;
private OpenAiStreamClient openAiStreamClient;
private static Map<String, OpenAiStreamClient> clientMap = new ConcurrentHashMap<>();
private static Map<String, String> lastChatMap = new ConcurrentHashMap<>();public ChatController(OpenAiStreamClient openAiStreamClient) {this.openAiStreamClient = openAiStreamClient;
}@GetMapping("/chat")
@CrossOrigin
public SseEmitter chat(@RequestParam("message") String msg, @RequestHeader Map<String, String> headers) throws IOException {SseEmitter sseEmitter = new SseEmitter(0L);String uid = headers.get("uid");if (StrUtil.isBlank(uid)) {throw new BaseException(CommonError.SYS_ERROR);}String messageContext = (String) LocalCache.CACHE.get(uid);List<Message> messages = new ArrayList<>();if (StrUtil.isNotBlank(messageContext)) {messages = JSONUtil.toList(messageContext, Message.class);if (messages.size() >= 10) {messages = messages.subList(1, 10);}Message currentMessage = Message.builder().content(msg).role(Message.Role.USER).build();messages.add(currentMessage);} else {Message currentMessage = Message.builder().content(msg).role(Message.Role.USER).build();messages.add(currentMessage);}sseEmitter.send(SseEmitter.event().id(uid).name("连接成功!!!!").data(LocalDateTime.now()).reconnectTime(3000));sseEmitter.onCompletion(() -> {log.info(LocalDateTime.now() + ", uid#" + uid + ", on completion");});
sseEmitter.onTimeout(() -> log.info(LocalDateTime.now() + ", uid#" + uid + ", on timeout#" + sseEmitter.getTimeout()));
sseEmitter.onError(throwable -> {try {log.info(LocalDateTime.now() + ", uid#" + "765431" + ", on error#" + throwable.toString());sseEmitter.send(SseEmitter.event().id("765431").name("发生异常!").data(throwable.getMessage()).reconnectTime(3000));} catch (IOException e) {e.printStackTrace();}}
);
OpenAIEventSourceListener openAIEventSourceListener = new OpenAIEventSourceListener(sseEmitter);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("*.*.*.*", 1221));
openAiStreamClient = clientMap.get(uid);
if(ObjectUtil.isNull(openAiStreamClient)){openAiStreamClient = OpenAiStreamClient.builder().connectTimeout(50).readTimeout(50).writeTimeout(50).apiKey(apiKey).proxy(proxy).apiHost(apiHost).build();
}
openAiStreamClient.streamChatCompletion(messages, openAIEventSourceListener);
LocalCache.CACHE.put(uid, JSONUtil.toJsonStr(messages), LocalCache.TIMEOUT);
return sseEmitter;}
}
  1. 实现效果如下图:

  1. 主要是基于SSE 实现的(可以百度下这个技术)。也是最近在了解到SSE。OpenAI官网在接受Completions接口的时候,有提到过这个技术。 Completion对象本身有一个stream属性,当stream为true时候Api的Response返回就会变成Http长链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/7368.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT正在加速淘汰“伪高管”

作者| Mr.K 编辑| Emma 来源| AI新猿人(ID&#xff1a;aixyr2023) “整个京东零售&#xff0c;只有 1.5 个人在会上说真话、提问题…很多拿 PPT 和假大空词汇忽悠自己的人&#xff0c;&#xff08;这些高管&#xff09;就是骗子…”&#xff0c;这是刘强东在去年年底京东内部…

You Only Look Once: 革命性目标检测算法论文解析

You Only Look Once 全论文完整翻译 You Only Look Once: Unified, Real-Time Object Detection 摘要 我们介绍了一种名为YOLO的新型目标检测方法。在目标检测的先前工作中&#xff0c;人们将分类器重新应用于执行检测任务。相反&#xff0c;我们将目标检测视为一个回归问题&a…

【原创】理解ChatGPT之GPT工作原理

作者&#xff1a;黑夜路人 时间&#xff1a;2023年4月25日 想要连贯学习本内容请阅读之前文章&#xff1a; 【原创】理解ChatGPT之机器学习入门 【原创】AIGC之 ChatGPT 高级使用技巧 GPT是什么意思 GPT的全称是 Generative Pre-trained Transformer&#xff08;生成型预训练…

关于AI和ChatGPT的使用,AI编程(AIGC),AI绘画(3)

使用AI绘画要注意哪些问题 1.版权和知识产权&#xff1a;使用别人的AI模型进行绘画可能会侵犯其版权和知识产权&#xff0c;需遵守相关法律法规。 2.数据隐私&#xff1a;在使用AI绘画应用时&#xff0c;可能需要提供个人图像或图片等数据&#xff0c;要谨慎保护数据隐私&…

chatGPT的爆火,是计算机行业这次真的“饱和”了?

近日&#xff0c;chatGPT这一生成式AI爆火&#xff0c;这款号称神仙级别的自动语言生成式AI发布短短5天内&#xff0c;就吸引了100万用户&#xff0c;在官方描述中&#xff0c;chatGPT是一个“可以连续回答问题、承认自己的错误、挑战不正确的前提并拒绝不适当的要求”的对话模…

LLMs之ChatGLM2:ChatGLM2-6B的简介、安装、使用方法之详细攻略

LLMs之ChatGLM2&#xff1a;ChatGLM2-6B的简介、安装、使用方法之详细攻略 导读&#xff1a;2023年06月25日&#xff0c;清华大学开源了 ChatGLM2-6B 模型&#xff0c;是 ChatGLM 模型的升级版本。ChatGLM2-6B 在多个方面有显著提升&#xff1a;模型性能更强&#xff0c;在各种…

Mac电脑启动出现空白屏幕的解决办法

Mac电脑启动的时候出现空白屏幕该怎么办&#xff1f;怎么解决Mac电脑出现空白屏幕的情况?macw小编为大家带来解决办法&#xff0c;遇到这种情况的朋友可以一试。 尝试从 macOS 恢复功能启动 如果您的 Mac 似乎已开启&#xff0c;但显示屏上没有显示任何内容&#xff0c;请确…

MAC安装ChatGLM-6B报错:Unknown platform: darwin

安装启动后报错如下&#xff1a; 翻一下issue&#xff0c;找到解决方法&#xff1a; RuntimeError: Unknown platform: darwin Issue #6 THUDM/ChatGLM-6B GitHub

在M1芯片的Macbook上使用docker-compose启动mysql,并利用 NaviCat Premium 客户端进行连接

在M1芯片的Macbook上使用docker-compose启动mysql&#xff0c;并利用 NaviCat Premium 客户端进行连接 1、查看芯片版本 先打开控制台&#xff0c;使用 uname -m 来查看自己CPU芯片的架构 yourPrj % uname -marm64 苹果的M系列芯片使用的是ARM64架构&#xff0c;因此&#xff0…

GPT4All 一个开源 ChatGPT

ChatGPT 正在迅速发展与传播&#xff0c;新的大型语言模型 (LLM) 正在以越来越快的速度开发。就在过去几个月&#xff0c;有了颠覆性的 ChatGPT 和现在的 GPT-4。明确定义&#xff0c;GPT 代表&#xff08;Generative Pre-trained Transformer&#xff09;&#xff0c;是底层语…

PrivateGPT(如何部署及使用感受)

前言 最近在GitHub上出现了一个名为PrivateGPT的开源项目。该项目旨在为面临敏感数据、涉密信息或个人隐私问题的用户提供一种新的聊天工具。PrivateGPT具备完整的数据控制能力&#xff0c;使用户能够在本地环境中与强大的语言模型进行交互&#xff0c;无需上传数据到互联网或…

LLaMA的解读与其微调:Alpaca-LoRA/Vicuna/BELLE/中文LLaMA/姜子牙/LLaMA 2

前言 近期&#xff0c;除了研究ChatGPT背后的各种技术细节 不断看论文(至少100篇&#xff0c;100篇目录见此&#xff1a;ChatGPT相关技术必读论文100篇)&#xff0c;还开始研究一系列开源模型(包括各自对应的模型架构、训练方法、训练数据、本地私有化部署、硬件配置要求、微调…

M1 Macbook Pro编译vim插件YouCompleteMe指南

M1 Macbook Pro编译vim插件YouCompleteMe指南&#xff08;亲测有效!&#xff09; 1.前言 (系统Monterey 12.6.5) 之前一直按照网上的教程&#xff0c;通过执行python3 install.py 加–clang-completer或–all等后缀来编译&#xff0c;但最后都失败了。后来发现是python的版本…

《微SaaS创富周刊》第3期:GPT-3\ChatGPT、Stable Diffusion等AI模型驱动的微SaaS创意盘点

大家新年好&#xff01;第3期《微SaaS创富周刊》问世啦&#xff01;本周刊面向独立开发者、早期创业团队&#xff0c;报道他们主要的产品形态——微SaaS如何变现的最新资讯和经验分享等。所谓微SaaS&#xff0c;就是“针对利基市场的SaaS”&#xff0c;特点是一般由个人或者小团…

chatgpt赋能python:Python如何在MacBook上打开shell窗口

Python如何在MacBook上打开shell窗口 作为一名有10年Python编程经验的工程师&#xff0c;我认为了解基本的命令行工具是非常重要的。在MacBook上&#xff0c;您可以使用终端打开shell窗口&#xff0c;执行Python代码并运行脚本。 这篇文章将介绍如何打开shell窗口&#xff0c;…

和ChatGPT-4聊完后,我觉得一切可能已经来不及了

了然无味&#xff0c;晴空万里&#xff01;和ChatGPT-4开始了一场坦诚的沟通&#xff0c;它全程都表现出高情商&#xff0c;以及不断尽量安抚我的情绪&#xff0c;而这&#xff0c;恰恰令我脊背发凉。 部分文字截取 ZM&#xff1a;我能不能理解每次对话就是一次你的“生命” G&…

目录导航《100天精通Python丨快速入门到黑科技》

文章目录 一、100 天精通 Python 丨基础知识篇基础知识篇 —— 01、C 站最全 Python 标准库总结基础知识篇 —— 02、Python 和 Pycharm&#xff08;语言特点、学习方法、工具安装&#xff09;基础知识篇 —— 03、Pycharm 快捷操作和配置指南&#xff08;磨刀不误砍柴工&#…

Autogpt手把手安装配置与使用超详细,使用云托管平台,轻量不会污染本地环境,10分钟带你完成傻瓜式超简单安装!!!

文章目录 AutoGPT简介一、安装流程fork项目注册登录gitpod.io平台开始配置 二、Auto-gpt的使用测试1.初始化使用重要参数讲解及扩展正确的使用Auto-GPT演示启动Auto-gpt 注意事项 总结 本文将采用超详细的步骤&#xff0c;即使小白也可以配置使用。 记录一下中间踩过的坑&#…

ChatGPT 速通手册——文本生成及概要提取,让 ChatGPT 自动总结中心大意

文本生成 文本生成任务&#xff0c;是大语言模型最基础的功能&#xff0c;自然也是 ChatGPT 的最基础功能。我们从这里开始&#xff0c;尝试第一个独立的 ChatGPT 对话。再强调一次&#xff1a;ChatGPT 生成的结果有随机性&#xff0c;每次运行未必一样。因此&#xff0c;本书…

百度版ChatGPT:文心一言发布会盛大召开!

今天下午2点&#xff0c;万众期待的百度版ChatGPT&#xff1a;文心一言发布会召开了。&#xff08;图一&#xff09; 投资者对这个发布会的反应非常直接&#xff1a;股价当场断崖式下跌。&#xff08;图二&#xff09; 和ChatGPT发布会上现场功能演示不同&#xff0c;百度发布会…