外链论坛

 找回密码
 立即注册
搜索
查看: 57|回复: 6

没人陪你聊天?教你运用java制作专属智能陪聊设备人

[复制链接]

3042

主题

3万

回帖

9606万

积分

论坛元老

Rank: 8Rank: 8

积分
96065868
发表于 2024-9-28 21:17:52 | 显示全部楼层 |阅读模式

近期有小伙伴留言,“很久没人找我聊天了,能够写一个陪聊设备人展现一下程序员的浪漫吗?”,“安排!”

1.智能陪聊设备人演示

人工智能始终近期的热点专题,自动人工智能然则败兴应用行业持续的扩大,在将来人工智能会在人们的生活中持续普及与应用。这篇博文中的陪聊设备人,运用java进行编写,能够按照你发的信息进行智能的回复,还算挺有意思的一个小玩意。最后效果的演示如下图~

2.智能问答平台API介绍

这个陪聊设备人项目运用了青云课的智能API,经过调用API得到信息反馈。

详细的调用格式如下:

http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s其中的%s传入咱们需要发送给设备人的内容,就能够得到API调用结果的反馈。key 固定参数 freeappid 设置成0,为智能识别msg 为搜索关键词result 暗示返回状态,返回0暗示正常content api返回的信息内容

能够看到数据是以JSON的形式进行返回。

3.整合第三方JSON开源库

Gson是Google供给的类库,能够用来处理java对象与JSON数据之间的映射,将一个JSON字符串转换成一个java对象,方便咱们对API返回的JSON格式的数据进行处理,下面演示怎样将Gson类库导入到咱们的工程中。

首要能够去官网下载对应的jar包,直接私信我获取。获取jar包之后找个全英文路径进行保留这儿咱们运用的编辑器是IDEA,因此运用IDEA进行演示,小伙伴们运用的是其他编辑器的话导入办法都是类似的哦。在IDEA打开如下界面,找到jar包导入就可

4.智能设备人项目框架搭建与模块划分

项目搭建:搭建的部分无太多需求,只需要运用IDEA创建一个新的普通java工程就可

项目模块搭建:

model 类 用来存放请求所返回的对象util 类用来存放工程所用到的工具类,例如说HTTP请求解析类app 类用来当作设备人项目的入口service 类用来实现业务的接口

关联的两个实体类如下:

public class Request { private String key = "free"; private String appid = "0"; private String msg = ""; public Request(){ } public Request(String msg){ this.msg = msg; } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getAppid() { return appid; } public void setAppid(String appid) { this.appid = appid; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } public class Response { private int code; private String content; public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }

5.封装一个设备人HTTP工具类

HTTP工具类重点用来对api进行请求,获取返回的内容

public class HttpUtils { public static String request(Stringapi){ HttpURLConnection connection =null; int responseCode = 0; try{ URL url = new URL(api); //获取对应的连接对象connection = (HttpURLConnection) url.openConnection(); responseCode = connection.getResponseCode(); }catch (Exception e){ e.printStackTrace(); } if(200<= responseCode && responseCode<=299){ try(InputStream inputStream = connection.getInputStream(); BufferedReader in = new BufferedReader(newInputStreamReader(inputStream)); ){ StringBuilder response =new StringBuilder(); String currentLine; while ((currentLine = in.readLine())!= null){ response.append(currentLine); }String result = response.toString(); return result; }catch (Exception e){ e.printStackTrace(); } } return null; } }

6.实现设备人service层的接口与定义

实现设备人接口层

public interface RobotService { Response qa(String msg) ; }

实现设备人接口实现类,这个类用来实现API的请求,将结果进行封装成实体类返回

public class QkyRobotServiceImpl implements RobotService { private static final String apiTpl = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s"; private static final Gson gson = new Gson(); @Override public Response qa(String msg) { String api = null; try { api = String.format(apiTpl, URLEncoder.encode(msg,"UTF-8") ); } catch(UnsupportedEncodingException e) { e.printStackTrace(); } String result = HttpUtils.request(api);//能够规律判断,例如null的时候,出错Response response = gson.fromJson(result,Response.class); return response; } }

7.制作专属于你的设备人入口

编写入口主类,调用封装好的模块进行设备人入口主类的编写

public class Main { private staticfinal RobotService robotService =new QkyRobotServiceImpl(); public static void main(String[] args)throws Exception { Scanner scanner = new Scanner(System.in); System.out.println("尊敬的C站大佬,请给我取个响亮的名字!!"); System.out.println("-------------------------------"); String name = scanner.nextLine(); System.out.println("大佬好,我是大数据小禅博客里的设备人,直接给我下达指令哦~"); System.out.println("-------------------------------"); while (true){ String input = scanner.nextLine();if("88".equalsIgnoreCase(input)){ System.out.println("欢迎下次运用,拜拜"); break; }else { Response response = robotService.qa(input); if(response !=null && response.getCode() == 0){ System.out.println("-------------------------------"); System.out.println(name+":"+ newString(response.getContent().getBytes(),"UTF-8")); System.out.println("-------------------------------"); }else { System.out.println(name+": 大佬你刚才这句话我没听懂,可否再描述一次~"); } } } scanner.close(); } }

8.把你的设备人打包运用

为了方便咱们对项目的运用这儿咱们运用IDEA将项目打包成jar包。经过下面的过程,就能够咱们项目里的所有模块与类库打包,需要调用的时候只需要运用 java -jar jar名字 就可

首要点开IDEA的Project Structure之后找到Artifacts选项

点击Bulid,将项目进行打包

最后回产生一个out文件夹,这儿面的jar包便是咱们打包后的最后结果。

之后上传到有java环境的终端就能够运行。

打包完成后咱们设备人项目就完成啦,希望小伙伴们经过这篇博文能够有所收获。





上一篇:ai在线客服_线上人工智能客服_昱新索电设备人
下一篇:自然语言处理(NLP):基于文本语义的智能问答系统
回复

使用道具 举报

3131

主题

3万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968648
发表于 2024-10-4 04:25:05 | 显示全部楼层
你的见解独到,让我受益匪浅,非常感谢。
回复

使用道具 举报

2990

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109216
发表于 2024-10-30 17:16:54 | 显示全部楼层
楼主节操掉了,还不快捡起来!
回复

使用道具 举报

3066

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158945
发表于 2024-11-6 23:08:43 | 显示全部楼层
你的见解独到,让我受益匪浅,非常感谢。
回复

使用道具 举报

3115

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99108655
发表于 2024-11-12 09:07:06 | 显示全部楼层
“NB”(牛×的缩写,表示叹为观止)‌
回复

使用道具 举报

3085

主题

3万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098782
发表于 4 天前 | 显示全部楼层
论坛的成功是建立在我们诚恳、务实、高效、创新和团结合作基础上,我们要把这种精神传递下去。
回复

使用道具 举报

2983

主题

3万

回帖

9956万

积分

论坛元老

Rank: 8Rank: 8

积分
99569178
发表于 昨天 23:19 | 显示全部楼层
论坛的成果是显著的,但我们不能因为成绩而沾沾自喜。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 04:44 , Processed in 0.128104 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.