效果展示
智能聊天机器人效果展示
原理分析
青云客
青云客(Qingyunke)是一款中文智能聊天机器人,类似于Siri、Alexa或Cortana等,但主要面向中文用户。青云客致力于通过自然语言处理技术,为用户提供智能对话和信息服务。
青云客的API可以发送一个请求,得到一个结果
例如发送 http://api.qingyunke.com/api.php?key=free&appid=0&msg=你好
就会得到一个json格式的结果
我们要做的就是不断发送这样的请求,然后解析返回的json信息,将回答的内容输出到控制台上就行。
项目分析
maven依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
control包(控制层)
定义Parse_json接口,定义抽象方法parse_json,该方法的功能是接受一个json格式的字符串,将解析好的json实体类返回
package www.wqs.control;
import www.wqs.entity.Response;
public interface Parse_json {
Response parse_json(String json);
}
然后创建Qinqun_robot类实现方法既可
package www.wqs.control;
import com.google.gson.Gson;
import www.wqs.entity.Response;
public class Qinyun_robot implements Parse_json{
@Override
public Response parse_json(String json) {
Gson gson = new Gson();
Response response = gson.fromJson(json, Response.class);
return response;
}
}
如果用其他的AI模型,创建其他类实现既可。
entity包(实体类层)
请求类
package www.wqs.entity;
public class Request {
private String url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s";
private String message;
public Request(){}
public Request(String message) {
this.message = message;
}
public String getUrl() {
return String.format(url, message);//返回完整的url
}
public void setUrl(String url) {
this.url = url;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
结果类
package www.wqs.entity;
public class Response {
private int result;
private String content;
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
service包(业务逻辑层)
package www.wqs.service;
import www.wqs.control.Qinyun_robot;
import www.wqs.entity.Response;
public class Service {
public static Qinyun_robot robot = new Qinyun_robot();
public static Response getResponse(String url){
return robot.parse_json(url);
}
}
utils包(工具类)
传入参数message,返回json格式的字符串
package www.wqs.utils;
import www.wqs.entity.Request;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class Httputils {
public static String getresponse(String message){
Request request = new Request(message);
try {
URL url = new URL(request.getUrl());
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
int code = connection.getResponseCode();
if (code >= 200 && code < 300) {
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuffer sb = new StringBuffer();
String str;
while ((str = reader.readLine()) != null) {
sb.append(str);
}
return sb.toString();//返回json格式
}
} catch (IOException e) {
}
return null;
}
}
源程序
https://github.com/Wuqingshun123/chat_robot