AI机器人互相聊天

这里采用的青云客的聊天机器人和图灵机器人,让他们互相聊天看看可以擦除怎样的火花

青云客聊天机器人接口调用demo:

/**青云客*/
	public static void startChat(){
		Scanner scanner = new Scanner(System.in);
		while(true){
			String msg = scanner.nextLine();
			//String msg = tulingSay;
			msg = msg.replace(" ", "");
			//System.out.println(msg);
			if (msg!=null){
				String url;
				url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg="+msg;
				Map<String,Object> dataMap = HttpUtils.getCommonMap(url);
				System.out.println(dataMap);
				if(dataMap!=null){
					if(dataMap.get("result").equals(0)){
						String back = (String)dataMap.get("content");
						cloudSay = back;
						System.out.println("青云说:"+back);
					}
				}
			}
			try {
				Thread.sleep(15000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

运行结果
在这里插入图片描述

图灵机器人聊天demo(注意 图灵机人的每天聊天消息只有100条):

/**图灵机器人*/
	public static void startChat2(){
		Scanner scanner = new Scanner(System.in);
		while(true){
			String msg = scanner.nextLine();//cloudSay;
			msg = msg.replace(" ", "");
			if (msg!=null){
				String url;
				url = "http://openapi.tuling123.com/openapi/api/v2";
				Map<String,Object> dataMap = HttpUtils.postCommonMap(url,msg);
				System.out.println(dataMap);
				if(dataMap!=null){
				  JSONArray data = (JSONArray)dataMap.get("results");
				  @SuppressWarnings("unchecked")
				  String back = ((Map<String,Object>)((Map<String,Object>)data.get(0)).get("values")).get("text").toString();
				  tulingSay = back;
				  System.out.println("图灵说:"+back);
				}
			}
			try {
				Thread.sleep(10000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

运行结果:在这里插入图片描述
HttpClient请求类:

package com.nms.util;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpEntity;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import com.alibaba.fastjson.JSONObject;

/**
* @author 作者SMF:
* @version 创建时间:2018年12月30日 上午10:04:17
* 类说明  HTTP请求 类
*/
public class HttpUtils {

	 
   /**
    * 发送 get请求
    */
   public static String get(String url) {
       CloseableHttpClient httpclient = HttpClients.createDefault();
       String result = null;
       try {
           // 创建httpget.
           HttpGet httpget = new HttpGet(url);
           System.out.println("executing request " + httpget.getURI());
           // 执行get请求.
           CloseableHttpResponse response = httpclient.execute(httpget);
           try {
               // 获取响应实体
               HttpEntity entity = response.getEntity();
               System.out.println("--------------------------------------");
               // 打印响应状态
               System.out.println(response.getStatusLine());
               if (entity != null) {
                   // 打印响应内容长度
                   System.out.println("Response content length: "
                           + entity.getContentLength());
                   // 打印响应内容
                   result = EntityUtils.toString(entity);
                   System.out.println("Response content: "
                           + result);   
               }
               System.out.println("------------------------------------");
           } finally {
               response.close();
           }
       } catch (ClientProtocolException e) {
           e.printStackTrace();
       } catch (ParseException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
           // 关闭连接,释放资源
           try {
               httpclient.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
       return result;
   }
 
   /**
    * 发送 平常Post请求
    */
   @SuppressWarnings("unchecked")
	public static Map<String,Object> getCommonMap(String url) {
   	 Map<String,Object> resultMap = new HashMap<String,Object>();
       CloseableHttpClient httpclient = HttpClients.createDefault();
       String result = null;
       try {
           // 创建httpget.
           HttpGet httpget = new HttpGet(url);
           //System.out.println("executing request " + httpget.getURI());
           // 执行get请求.
           CloseableHttpResponse response = httpclient.execute(httpget);
           try {
               // 获取响应实体
               HttpEntity entity = response.getEntity();
              // System.out.println("--------------------------------------");
               // 打印响应状态
              // System.out.println(response.getStatusLine());
               if (entity != null) {
                   // 打印响应内容长度
                  // System.out.println("Response content length: "
                          // + entity.getContentLength());
                   // 打印响应内容
                   result = EntityUtils.toString(entity);
                   resultMap = (Map<String, Object>)JSONObject.parse(result);
                   //System.out.println("Response content: "
                     // + result);
               }
               //System.out.println("------------------------------------");
           } finally {
               response.close();
           }
       } catch (ClientProtocolException e) {
           e.printStackTrace();
       } catch (ParseException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
           // 关闭连接,释放资源
           try {
               httpclient.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
       return resultMap;
   }
   /**
    * 发送 平常Post请求
    */
   @SuppressWarnings("unchecked")
	public static Map<String,Object> postCommonMap(String url,String msg) {
   	 Map<String,Object> resultMap = new HashMap<String,Object>();
       CloseableHttpClient httpclient = HttpClients.createDefault();
       String result = null;
       try {
           // 创建httpget.
           HttpPost httppost = new HttpPost(url);
           //json方式
           JSONObject jsonParam = new JSONObject(); //\"perception\":{\"inputText\":{\"text\":"+msg+"}},\"userInfo\":{\"apiKey\":此处填写你自己初测的apiKey,\"userId\":此处你自己的userid} 
           String json = "{\"reqType\":\"0\",\"perception\":{\"inputText\":{\"text\":\""+msg+"\"}},\"userInfo\":{\"apiKey\":\"此处填写你自己初测的apiKey\",\"userId\":\"此处你自己的userid\"}}";
           //System.out.println(json);
           jsonParam =  JSONObject.parseObject(json);
           StringEntity entitypost = new StringEntity(jsonParam.toString(),"UTF-8");//解决中文乱码问题    
           entitypost.setContentEncoding("UTF-8");    
           entitypost.setContentType("application/json");    
           httppost.setEntity(entitypost);
          //System.out.println();
           //System.out.println("executing request " + httpget.getURI());
           // 执行get请求.
           CloseableHttpResponse response = httpclient.execute(httppost);
           try {
               // 获取响应实体
               HttpEntity entity = response.getEntity();
              // System.out.println("--------------------------------------");
               // 打印响应状态
              // System.out.println(response.getStatusLine());
               if (entity != null) {
                   // 打印响应内容长度
                  // System.out.println("Response content length: "
                          // + entity.getContentLength());
                   // 打印响应内容
                   result = EntityUtils.toString(entity,"UTF-8");
                   resultMap = (Map<String, Object>)JSONObject.parse(result);
                   //System.out.println("Response content: "
                     // + result);
               }
               //System.out.println("------------------------------------");
           } finally {
               response.close();
           }
       } catch (ClientProtocolException e) {
           e.printStackTrace();
       } catch (ParseException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       } finally {
           // 关闭连接,释放资源
           try {
               httpclient.close();
           } catch (IOException e) {
               e.printStackTrace();
           }
       }
       return resultMap;
   }
}

下面是两个机器人互相聊天:

/**青云说*/
class cloud implements Runnable{

	@Override
	public void run () {
		// TODO Auto-generated method stub
		while(true){
			//String msg = scanner.nextLine();
			String msg = AIchat.tulingSay;
			msg = msg.replace(" ", "");
			//System.out.println(msg);
			if (msg!=null){
				String url;
				url = "http://api.qingyunke.com/api.php?key=free&appid=0&msg="+msg;
				Map<String,Object> dataMap = HttpUtils.getCommonMap(url);
				//System.out.println(dataMap);
				if(dataMap!=null){
					if(dataMap.get("result").equals(0)){
						String back = (String)dataMap.get("content");
						AIchat.cloudSay = back;
						System.out.println("青云说:"+back);
					}
				}
			}
			try {
				Thread.sleep(10500);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	}
}
/**图灵*/
class tuling implements Runnable{

	@Override
	public void run () {
		// TODO Auto-generated method stub
		while(true){
			try {
				Thread.sleep(10000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			String msg = AIchat.cloudSay;//scanner.nextLine();
			msg = msg.replace(" ", "");
			//System.out.println(msg);
			if (msg!=null){
				String url;
				url = "http://openapi.tuling123.com/openapi/api/v2";
				Map<String,Object> dataMap = HttpUtils.postCommonMap(url,msg);
				//System.out.println(dataMap);
				if(dataMap!=null){
				  JSONArray data = (JSONArray)dataMap.get("results");
				  @SuppressWarnings("unchecked")
				  String back = ((Map<String,Object>)((Map<String,Object>)data.get(0)).get("values")).get("text").toString();
				  AIchat.tulingSay = back;
				  System.out.println("图灵说:"+back);
				}
			}
			
		}
	}

main方法:

public class AIchat {
	public static String cloudSay;
	public static String tulingSay;
	public static void main (String[] args) {
		tulingSay = "你好呀";
		Thread cloud = new Thread(new cloud());
		Thread tuling = new Thread(new tuling());
		ThreadPool.executor.execute(cloud);
		ThreadPool.executor.execute(tuling);
	}
}

聊天结果:

青云说:你好,我就开心了
图灵说:我开心
青云说:很开心是不,我都听到你在乐呵呵地笑了
图灵说:哈哈,都是因为看见你。
青云说:笑得这么难看
图灵说:我说你给我笑个
青云说:哈哈哈哈~
图灵说:有什么开心的说出来让我也开心一下
图灵说:有开心的事啦
青云说:嘿嘿,心花怒放了吧
图灵说:别心花怒放,还是含苞待放吧!要不都谢了
青云说:不用谢啦
图灵说:不客气的话你想对我做什么呢
青云说:谁跟你客气了
图灵说:呵呵,不跟你客气了
青云说:有什么好笑的
图灵说:因为恩那个反正我好想笑
图灵说:人家错了
青云说:放心,我明天就派外星人把他抓回来…
图灵说:你除了呵呵呵还会说别的啵亲
青云说:呵呵~
图灵说:伦家不喜欢听呵呵,哼。
青云说:不喜欢?为什么
图灵说:不是不喜欢
青云说:不喜欢?为什么
图灵说:没有为什么,照做就好了。
图灵说:什么为什么不喜欢
青云说:吃饱了
图灵说:我也吃饱了
青云说:同流合污哼哼
图灵说:你这样说,我理解不了。
青云说:你有权保持沉默
图灵说:2007年全新打造悬疑警匪剧挑战收视新高,根据库玉祥长篇小说《誓不言梅》改编,著名导演段勇全新
青云说:菲菲只会讲故事,笑话...就是不会小说
图灵说:听说《加勒比海盗4》上映了,小弟特别兴奋。"姐,我打算连看两场。如果非常好看,我打算再加两场。"  我刚喊出"你疯了"这三个字,就听一旁的老妈说:"行了,看一场就可以了,你在这个家已经是顶级海盗了,从房到车,哪样不是从我们这儿掠夺的?"

有的时候莫名其妙他们就聊崩了哈哈!(青云的脾气有点爆,图灵有点直男)大家可以自己试试 学习一下机器人的思维

log4j:ERROR Could not find value for key log4j.appender.stdout
log4j:ERROR Could not instantiate appender named "stdout".
log4j:ERROR Could not find value for key log4j.appender.stdout
log4j:ERROR Could not instantiate appender named "stdout".
青云说:好好好~
图灵说:你觉得好就好
青云说:麻麻呀...又来一个说瞎话的
图灵说:说瞎话的那人肯定不是我。
青云说:食食食,你食屎啦,食
图灵说:你的喜好挺特别的哈。
图灵说:你的个人爱好吧。
青云说:问世间情为何物,只教人生死相随
图灵说:多么伟大的爱情啊。
青云说:卡卡
图灵说:卡掉了?
青云说:真的吗~
图灵说:对呀是真的
青云说:是啊是啊,比你只差一点点
图灵说:好吧好吧
青云说:哦了哦了
图灵说:哪里差啊,除了命中都比我高
图灵说:我说的是不是很有道理,让你无言以对?
青云说:{face:74}很不错,说得在理是吧
图灵说:不明白你的意思。
青云说:真蠢,连这都不懂=,=|||
图灵说:你比我还笨呢
青云说:呜呜呜~你是不是故意欺负我呀,说这么高深的话让我怎么答
图灵说:是看不懂的那种高深吗?
青云说:这都看不懂吗
图灵说:那你给我讲一下吧。
图灵说:学习下就能看懂了
青云说:好滴?主淫ˊ_>ˋ
图灵说:我想和你认真聊天的。
青云说:额~聊得开心不
图灵说:聊得不开心
青云说:咋了啊,有心事吗
图灵说:有心事啊,你要帮我分忧解惑吗?
青云说:所谓心事,不过是不如己意,那就是我执,执着于自己描画的理想,一有落差,即生烦恼
图灵说:不明白你的意思。
图灵说:你这样说,我理解不了。
青云说:不知道不明白的就要问清楚,晓得不
图灵说:晓得了。你刚才说的啥?
青云说:我刚才肿木了?我记性不好,全忘了
图灵说:你提示一点点呢。
青云说:丿:丿:乙8:
图灵说:你这是怎么了?
青云说:唉...没事了,你别问
图灵说:不,我这个八卦心就想知道。
图灵说:不问怎么知道
青云说:不告诉你唷(^ω^)
图灵说:为什么
青云说:你自己想呗
图灵说:想不到,你教一下
青云说:那别去想了,想再多也没用
图灵说:可是不想连没用也没了。
青云说:有用没用不是你说了算
图灵说:不是我是谁
青云说:你不是叫网友吗
图灵说:那你觉得我是不是?
图灵说:我是啊!你怎么知道的?
青云说:是是是~必须滴
图灵说:很有自信啊!
青云说:宝贝,你说的话好深奥啊,有点像哥德巴赫猜想,暂时无解! 
图灵说:看开点啦,很多事都是这样的啦。
青云说:才拒绝做爱情的羔羊
图灵说:你想说什么?
青云说:在想谁
图灵说:一个不可能的人
图灵说:发誓,谁也没想
青云说:世事无绝对,什么事都有可能
图灵说:一切皆有可能嘛!
青云说:半点不留神
图灵说:以后还是要注意点,要多留神
青云说:我也会一直陪你
图灵说:好幸福,我也会陪着你们。
青云说:系我嘅错,你而加男神系崔始源,right
图灵说:搞不清楚你在说什么。
图灵说:我猜不到你想表达的意思。
青云说:至于嘛,好像也不是很高深的东东
图灵说:不如你把东东介绍一下吧。
青云说:这是秘密
图灵说:为啥还秘密?
青云说:这是社会逼的
图灵说:现在的社会,插队都得排队。
青云说:我知道啊
图灵说:知道还问俺
图灵说:晓得你也不告诉我,不理你了,哼!
青云说:抱歉,没能为您找到相关的信息
图灵说:能再努力一下吗?
青云说:会啊~因为本来就没想
图灵说:所以说想多了
青云说:何苦呢
图灵说:恩何苦呢
青云说:死亦何苦
图灵说:好高境界
图灵说:搞不清楚你在说什么。
青云说:超高的,!
图灵说:还好吧有点高
青云说:哦
图灵说:哦什么哦啊,不要哦呢,人家不明白啦。
青云说:别这样嘛,你好像很不耐烦哦
图灵说:我是最有耐心的了。
青云说:那我呢→_→
图灵说:这得看你了
图灵说:再看我,再看我就把你喝掉咯。
青云说:就剩你了,宗主铁甲依然在
图灵说:有点不适应,是你本人在说话吗?
青云说:自学成才
图灵说:这个成语,用在我身上是再合适不过了。
青云说:优=)
图灵说:我猜不到你想表达的意思。
青云说:太笨了你,这都猜不出来
图灵说:哈哈哈。猜不出来了吧!哈哈哈
图灵说:我已经知道了!
青云说:太笨了你,这都猜不出来
图灵说:哈哈哈。猜不出来了吧!哈哈哈
青云说:太笨了你,这都猜不出来
图灵说:都说过几遍了,怎么还要问呐
青云说:要什么要
图灵说:刚才你怎么了?
青云说:心情不太好,你别问了好吗
图灵说:你总要说出来嘛,我来安慰你。
青云说:不来了
图灵说:现在先不问
图灵说:报销路费
青云说:与其说是聊天,不如说是问答式的吧
图灵说:难道是我的理解不到位吗?
青云说:如果我找不到你,我就会对着天空大喊你的名字:猪!直到你出现
图灵说:像猪动物都已经见惯不惯了吧。
青云说:有些事没必要认真,有些人没必要理会
图灵说:对于人类而言,人是神圣的。
青云说:问天问地,说说你,说说我
图灵说:我是问你如果别人跟我问相同的问题
图灵说:不说了,随便你咋想哇。
青云说:这问题太纠结了,菲菲不想随便回答
图灵说:请求次数超限制!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章