从零开始嵌入聊天机器人服务(小白适用)

article/2025/9/22 12:40:47

文章目录

  • 一、为什么需要聊天机器人
  • 二、那么在哪里才能搞得到
  • 三、我搞到了,该怎么用
    • (一)青云客(初学者强推)
    • (二)图灵机器人
    • (三)海知智能机器人
  • 四、使用总结

一、为什么需要聊天机器人

(一)公众号、客服自动回复 ×

(二)在线闲聊 ×

(三)拓宽功能 ×

(四)应付对象


二、那么在哪里才能搞得到

机器人汇总:
https://blog.csdn.net/wenxuhonghe/article/details/100703398

这个帖子里列出了常见的一些机器人API,提供了各机器人的官网及其特点,简明扼要。

三、我搞到了,该怎么用

这里给各位介绍青云客、图灵机器人、海知智能三种机器人的使用和调用流程。

青云客机器人:作为公共机器人,调用方式较为容易,无需其他jar或工具类,可直接复制以下代码使用

图灵机器人、海知智能机器人:均为私有机器人,需要申请个人账户创建个人机器人,调用方式较为复杂,需要使用到一些jar包与工具类,这些工具类因代码过长未在本文贴出


整个项目已经发布至github,欢迎各位看客下载交流

地址:https://github.com/Nannan78/talking_robot

以下方式中,字符编码均使用UTF-8,数据格式均采用JSON

(一)青云客(初学者强推)

官网:
http://api.qingyunke.com/

1、特点:
轻便:调用简单,完全免费,无需注册,不需要申请密钥,可直接调用,因此响应的内容也较为简洁。

2、调用方式:

在这里插入图片描述

这里有三个需要注意的地方:请求地址、请求方式与参数传入

请求地址:即请求调用的机器人API接口

请求方式:GET

参数
①、key:"free"字符串,固定值,必填

②、appid:若传入"0"字符串,表示对消息智能识别,选填

③、msg:即发给机器人的消息,必填

3、代码实现:

​ 在官网案例中,采用以GET方式进行URL拼接发起请求,我们这里也依葫芦画瓢照着做。

(1)创建URL连接

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;public class QingYunKeRobot {public static String getQingYunKe(String generalUrl, String key,String msg)throws Exception {key= URLEncoder.encode(key, "UTF-8");msg= URLEncoder.encode(msg, "UTF-8");generalUrl=generalUrl+"?key="+key+"&"+"appid=0"+"&"+"msg="+msg;URL url = new URL(generalUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");// 设置通用的请求属性connection.setRequestProperty("Content-Type", "application/json");connection.setRequestProperty("Connection", "Keep-Alive");connection.setUseCaches(false);connection.setDoOutput(true);connection.setDoInput(true);// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> headers = connection.getHeaderFields();// 遍历所有的响应头字段for (String info : headers.keySet()) {System.err.println(info + "--->" + headers.get(info));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = null;in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String result = "";String getLine;while ((getLine = in.readLine()) != null) {result += getLine;}in.close();System.err.println("result:" + result);return result;}
}

(2)传入参数

import com.nan.robots.QingYunKeRobot;public class QingYunKeConnection {private static final String url = "http://api.qingyunke.com/api.php";private static final String key = "free";public static String getResponse(String msg) throws Exception {String response = QingYunKeRobot.getQingYunKe(url, key,msg);return response;}
}

(3)测试

import com.nan.connection.HaiZhiConnection;
import com.nan.connection.QingYunKeConnection;
import com.nan.connection.TuLingConnection;
import com.nan.util.JsonFormatTool;public class TestRobots {public static void main(String[] args) throws Exception {String response = QingYunKeConnection.getResponse("你好啊");System.out.println(new JsonFormatTool().formatJson(response));}
}

在这里插入图片描述
执行OK!


(二)图灵机器人

官网:
http://www.turingapi.com/

1、特点:
基本功能完善,可创建自己专属的机器人。需要注册,每日限定100次调用

2、注册

(1)来我们首先打开官网,点击注册

在这里插入图片描述
(2)注册完成后,点击创建机器人,设置相应的属性,就可以得到我们自己的一个机器人啦。
在这里插入图片描述
这里两个重要的参数:

用户ID:右上角的数字

apikey:机器人的API密钥

这两个参数在我们发起请求的时候需要用上。

3、调用方式
API调用官方文档:
https://www.kancloud.cn/turing/www-tuling123-com/718227

(1)使用方式

在这里插入图片描述

这里我们注意到:

编码:代码中的编码方式应全部设置为UTF-8

数据:数据的格式采用JSON

请求方式:POST

请求接口:http://openapi.tuling123.com/openapi/api/v2

(2)参数设置

官网给出的是参数是表格形式,但我还是觉得图片好理解一点,所以做了下图:

在这里插入图片描述

大家别被这么多参数项吓怕了,其实其中要求我们填写的并没有那么多,
发起一个简单的请求只需要三个参数perception、apiKey与userId

reqType:说明输入的数据类型,0-文本(默认)、1-图片、2-音频,选填

perception:用户输入的数据,大部分情况下都使用文本形式,必填

userInfo:标识机器人的信息,需要使用到刚刚提及的apiKey与用户ID,必填

官方请求示例:

{"reqType":0,"perception": {"inputText": {"text": "附近的酒店"},"inputImage": {"url": "imageUrl"},"selfInfo": {"location": {"city": "北京","province": "北京","street": "信息路"}}},"userInfo": {"apiKey": "","userId": ""}
}

3、代码实现

(1)建立URL连接

import com.nan.util.HttpUtil;
import org.json.JSONArray;
import org.json.JSONObject;public class TuLingRobot {public static String getResponse(String request,String requestUrl,String apiKey,String userId,String contentType){JSONObject perception = new JSONObject();JSONObject inputText = new JSONObject();inputText.put("text", request);perception.put("inputText", inputText);JSONObject userInfo = new JSONObject();userInfo.put("apiKey", apiKey);userInfo.put("userId", userId);JSONObject root = new JSONObject();root.put("reqType", 0);root.put("perception", perception);root.put("userInfo", userInfo);String params = root.toString();System.out.println(params);try {String resultString = HttpUtil.postGeneralUrl(requestUrl, contentType, params, "UTF-8");System.out.println(resultString);JSONObject resultJson = new JSONObject(resultString);JSONArray results = resultJson.getJSONArray("results");JSONObject values = ((JSONObject)(results.get(0))).getJSONObject("values");String text = values.getString("text");return text;} catch (Exception e) {e.printStackTrace();return "我不知道怎么回答你";}}}

(2)传入参数

注意:将此处的apiKey与userId替换为自己创建的机器人时得到信息

import com.nan.robots.TuLingRobot;public class TuLingConnection {private static final String requestUrl = "http://openapi.tuling123.com/openapi/api/v2";/*** 在图灵机器人官网注册登陆后,在右上角产生你的useId;* 创建机器人后,生成apiKey*/private static final String apiKey = "apiKey";private static final String userId = "userId";private static final String contentType = "application/json";public static String getResponse(String request) {String response = TuLingRobot.getResponse(request,requestUrl,apiKey,userId,contentType);return response;}}

(3)测试

import com.nan.connection.HaiZhiConnection;
import com.nan.connection.QingYunKeConnection;
import com.nan.connection.TuLingConnection;
import com.nan.util.JsonFormatTool;public class TestRobots {public static void main(String[] args) throws Exception {String response = TuLingConnection.getResponse("你好啊");System.out.println(new JsonFormatTool().formatJson(response));}
}

在这里插入图片描述
测试OK!


(三)海知智能机器人

官网:
https://ruyi.ai/official.html

1、特点:
功能强大,覆盖面广,免费,不限调用次数,需注册,可定制高

2、注册

(1)首先还是得来到我们的官网进行注册登录

在这里插入图片描述
(2)注册完成后登录,点击创建机器人
在这里插入图片描述
(3)选择机器人的类型及功能

在这里插入图片描述

在这里插入图片描述

(4)然后我们就可以得到自己的机器人啦

在这里插入图片描述
此处的AppKey需要在调用的时候使用到

接下来我们就可以愉快的调用我们的机器人啦!

3、调用方式

API调用官方文档:
http://docs.ruyi.ai/502931

(1)使用方式

在这里插入图片描述

好像也没说到啥…注意三个点

数据:数据的格式采用JSON

请求方式:POST

请求接口:http://api.ruyi.ai/v1/message

(2)参数设置

官网怎么总喜欢给出表格形式的参数呀,我还是画个图吧

在这里插入图片描述

q:用户输入的数据,大部分情况下都使用文本形式,必填

app_key:标识机器人的信息,需要使用到刚刚提及机器人的AppKey,必填

user_id:用来标识用户的ID,官方建议建议开发者使用UUID字符,必填

④reset_session:如果为true,重置当前对话session,忘记短期对话记忆,选填

⑤context:用户当前上下文信息。JSON字符串格式,选填

官方请求示例:

curl 命令
> curl -H "Content-Type: application/json" -X POST --data @content.json http://api.ruyi.ai/v1/messagecontent.json 内容
> cat content.json
{"q": "你好","app_key": "xxxx","user_id": "xxxx","reset_session": true,"context": {"location": {"latitude": "39.92","longitude": "116.46"}}
}

4、代码实现

(1)建立URL连接

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;public class HaiZhiZhiNengRobot {public static String postHaiZhi(String generalUrl, String params)throws Exception {URL url = new URL(generalUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");// 设置通用的请求属性connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded ");connection.setRequestProperty("Connection", "Keep-Alive");connection.setUseCaches(false);connection.setDoOutput(true);connection.setDoInput(true);// 得到请求的输出流对象DataOutputStream out = new DataOutputStream(connection.getOutputStream());out.write(params.getBytes("UTF-8"));out.flush();out.close();// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> headers = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : headers.keySet()) {System.err.println(key + "--->" + headers.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = null;in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String result = "";String getLine;while ((getLine = in.readLine()) != null) {result += getLine;}in.close();System.err.println("result:" + result);return result;}
}

(2)传入参数

注意:将此处的app_key替换为自己创建的机器人时得到AppKey

import com.nan.robots.HaiZhiZhiNengRobot;
import com.nan.util.GsonUtils;
import com.nan.util.JsonFormatTool;import java.util.HashMap;
import java.util.Map;
import java.util.UUID;public class HaiZhiConnection {private static final String url = "http://api.ruyi.ai/v1/message";private static final String app_key = "app_key";private static final String user_id = UUID.randomUUID().toString();public static String getResponseByPost(String  q){try {Map<String, Object> map = new HashMap<>();map.put("q", q);map.put("app_key", app_key);map.put("user_id", user_id);String param = GsonUtils.toJson(map);String result = HaiZhiZhiNengRobot.postHaiZhi(url,param);return result;} catch (Exception e) {e.printStackTrace();}return null;}public static String getResponseByGet(String  q){try {String result = HaiZhiZhiNengRobot.getHaiZhi(url,q,app_key,user_id);return result;} catch (Exception e) {e.printStackTrace();}return null;}
}

(3)测试

import com.nan.connection.HaiZhiConnection;
import com.nan.connection.QingYunKeConnection;
import com.nan.connection.TuLingConnection;
import com.nan.util.JsonFormatTool;public class TestRobots {public static void main(String[] args) throws Exception {String response = HaiZhiConnection.getResponseByPost("你好啊");System.out.println(new JsonFormatTool().formatJson(response));}
}

在这里插入图片描述

测试OK!

四、使用总结

青云客机器人:其简易型十分受用于初学者,但作为公共接口,响应内容较少,响应时间略长。

图灵机器人:较青云客机器人而言,功能更加齐全,响应速度较快,但需要注册创建机器人,并且一天最多只能调用100次。

海知智能机器人:功能十分完善的一款机器人,定制度很高,相应内容丰富,而且调用次数不限,但需要注册创建机器人。


项目地址:https://github.com/Nannan78/talking_robot

参考:https://blog.csdn.net/haoranhaoshi/article/details/87992548


http://chatgpt.dhexx.cn/article/iEqfsson.shtml

相关文章

知识图谱升温之势已现,不要错失下一个AI风口

近年来&#xff0c;随着大家对高级认知能力的积极探索&#xff0c;知识图谱因为表达能力强&#xff0c;扩展性好&#xff0c;并能兼顾人类认知与机器自动处理&#xff0c;引起了学术界、工业界以及政府部门的高度关注。 最先被大家熟知的应用领域应属搜索引擎&#xff0c;为了让…

项目实训日志一

项目实训日志一 项目开始已经有几天了&#xff0c;一直在读《Approximation Algorithm》这本书&#xff0c;由于大部分概念都比较陌生&#xff0c;读得很慢&#xff0c;目前主要把第3章的阅读翻译工作完成了。 本章中关键问题是斯坦纳树问题和TSP旅行商问题&#xff0c;在看这…

实习日志(5)

2021.08.02 星期一 学习vue也有一段时间时间了&#xff0c;回想一下学的都是一些概念&#xff0c;实际操作很少&#xff0c;所以今天我在网上重新又找了一个博主的视频讲解&#xff0c;看了一下之后&#xff0c;感觉他每次讲一个小内容的时候&#xff0c;都会有好几个小案例&am…

实习日志@

2022/4/22 todoList&#xff1a; 大概熟悉一下hui组件了解云计算的意思&#xff0c;中心云边缘云的意思概念&#xff08;对项目背景有一定云计算的了解&#xff09;代码下载下来以后运行起来&#xff0c;看一下产品的功能&#xff0c;熟悉一下产品流程&#xff0c;尝试理解一…

实习日志【一】

实习日志【一】 概述1.jdk安装2.idea安装3.tomcat安装4.maven安装5.MySQL安装6.notepad安装 概述 今天的任务主要为开发环境的搭建&#xff0c;安装了jdk、idea、tomcat、maven、mysql和notepad&#xff0c;以备后续的工作。 1.jdk安装 解压相关文件配置环境变量 &#xff0…

实训日志day3

1 前端架构介绍 1.1前端核心技术 主要是讲解了web的前端框架&#xff0c;讲了网页文件的各个作用&#xff0c;然后进行了演示&#xff0c;演示了网页html的书写与跳转&#xff0c;包括创建表单&#xff0c;登录&#xff0c;页面跳转。然后进行了实操。

Java实训日志06

文章目录 八、项目开发实现步骤&#xff08;八&#xff09;创建服务接口1、创建学校服务接口2、创建状态服务接口3、创建学生服务接口4、创建用户服务接口 &#xff08;九&#xff09;创建服务接口实现类1、创建学校服务接口实现类2、创建状态服务接口实现类3、创建学生服务接口…

实习日志03-技术02

本节&#xff1a;工作中经常会从别的项目复制一样的功能来使用。以下&#xff0c;是在此过程中&#xff0c;一不小心就会踩到的坑。 1.前端写好了&#xff0c;但是调取接口有问题&#xff0c;还有可能是没有更新后端的代码&#xff0c;更新一下代码及就可以了。 2.复制代码&a…

项目实训日志

3月5日 这次项目实训&#xff0c;我们组做的是risc-v学习平台&#xff0c;我们前面几周的总体任务是熟悉环境&#xff0c;做一些简单的功能&#xff0c;比如登录以及页面的搭建等等&#xff0c;了解最基本的需求&#xff0c;环境的安装配置&#xff0c;对相关知识的学习&#…

JAVAEE 实训日志 一

文章目录 1. 创建 web-app 项目导入初始4个 maven 依赖TestServlet.javatest.jsp测试: 2. 连接数据库导入依赖 驱动编写连接类 JDBCUtil测试连接 3. 开发一个简单的javaweb项目EntityService 层DaoController前端 test.jsp效果 1. 创建 web-app 项目 导入初始4个 maven 依赖 &…

实训日志day5

今天主要讲解了命令行查看数据库、数据库连接、越权访问 命令行的使用 在文件根目录下执行cmd&#xff0c;输入数据库的账号和密码进行数据库的访问 输入 show databases;语句查看数据库表&#xff0c;注意是databases后面有一个分号‘&#xff1b;’ show databases;查看数据…

Java实训日志04

文章目录 八、项目开发实现步骤&#xff08;六&#xff09;创建数据访问接口1、创建学校数据访问接口2、创建状态数据访问接口3、创建学生数据访问接口4、创建用户数据访问接口 八、项目开发实现步骤 &#xff08;六&#xff09;创建数据访问接口 DAO: Data Acess Object - 数…

实训日志day7

今天主要介绍了三个工具以及工具使用的方法&#xff0c;三个工具分别是&#xff1a;Nmap、AWVS、Dirsearch Nmap Nmap的使用环境有两种&#xff1a; 1、直接能获取到需要测试和的设备的IP地址 2、只能获得需要测试的网络。 在进行渗透测试的过程中&#xff0c;利用nmap进行渗透…

day2实训日志

上午课程 课程大纲 1.web 重点介绍了web1.0和web2.0时代采用的技术&#xff0c;web1.0时代主要采用dos攻击html静态网页&#xff0c;虽然静态网页没有数据库&#xff0c;但是拒接服务式攻击可以将网络响应攻击瘫痪&#xff0c;web2.0时代新增了数据库&#xff0c;黑客所攻击的…

项目实训-个人开发日志02-初识微信小程序开发

今天开始正式进入微信小程序端的开发&#xff0c;由于本人从未学习过小程序开发&#xff0c;所以在此一并把学习过程记录。 安装微信开发者工具&#xff0c;以非云开发的基础模板创建文件&#xff0c;得到如下项目结构&#xff1a; page即为页面&#xff0c;目前有两个文件夹&…

JAVA实训项目第六次日志

实训目的&#xff1a;让学生综合运用J2SE有关知识开发【学生信息管理系统】。主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。通过本项目的开发&#xff0c;让学生了解系统开发的一般流程&#xff0c;初步了解MVC模式与单元…

实训日志——第三天

在敲代码的过程中&#xff0c;也是经常犯错的&#xff0c;大大小小的错&#xff0c;有时候反复检查都不知道有什么错。目前&#xff0c;我总结到&#xff0c;对于我来说&#xff0c;出错就是经常打错字母的大小写&#xff0c;少打一行代码之类的。但就是这些小错&#xff0c;在…

实训日志6

上一次太累了没写博客&#xff0c;这次打完了所有的内容&#xff0c;认真总结一下这次的实训 这次实训主要涉及程序控制结构、面向对象编程、图形用户界面、Java数据库应用、MySQL数据库这几个方面的内容。通过本项目的开发&#xff0c;让我了解系统开发的一般流程&#xff0c;…

将实对称矩阵正交对角化的流程

摘自《矩阵论教程》第2版&#xff0c;张绍飞&#xff0c;p52

实对称矩阵可对角化证明

在极化分解的证明中使用过此定理&#xff0c;证明于此。 埃尔米特矩阵是指复对称矩阵&#xff0c;实对称矩阵是其特例。 转载于:https://www.cnblogs.com/zhixingr/p/8750210.html