10分钟用Python告诉你两个机器人聊天能聊出什么火花
欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可!

现在不是讲各种各样的人工智能嘛,AI下棋,AI客服,AI玩家……其实我一直很好奇,两个AI碰上会怎样,比如一起下棋,一起打游戏……
今天做个简单的小实验,看看两个AI一起聊天会是什么样子的。为了让实验效果更好,我们两个机器人选取了不同网站的机器人(图灵和茉莉)。
01 准备
pip下载安装python的requests模块,这个调用接口发送消息要用到。
去图灵机器人官网(http://www.turingapi.com/)申请账号->进入机器人设置->获得apikey。如下:
记得不要把密钥那里点开,不然后面要加密传输搞得很麻烦。
3) 茉莉机器人官网(http://www.itpk.cn/)申请账号->个人中心->获得Api key and Api Secret:
记得:
茉莉API地址:http://i.itpk.cn/api.php
图灵API地址:http://www.tuling123.com/openapi/api
待会搞事要用到。
02 开始搞事
好了,现在一切准备就绪,我们开始搞事情。
先调一下图灵机器人,测试一下:
1import requests
2
3tuling_data = {
4 "key": "5da047a95db8450ea6e710dd065d4be4",
5 "info": '今天武汉天气怎样?', #发送的数据
6 "userid": "272872"
7}
8tuling_api_url = 'http://www.tuling123.com/openapi/api'
9t = requests.post(tuling_api_url, data=tuling_data) #post请求
10print(t.text)
运行结果如下:
大功告成,不过返回的是数据包,待会我们用函数处理一下,提取所需的信息即可。
同样可以调用茉莉机器人:
1import requests
2
3moli_data = {
4 "question":'今天武汉天气如何?', #问题
5 "api_key": "ac00db995a4a8f2a3f3623c82f3cc9d9",
6 "api_secret": "anaoutswrz1y"
7}
8moli_api_url = 'http://i.itpk.cn/api.php'
9m = requests.post(moli_api_url, data = moli_data)
10print(m.text)
返回结果:
03 机器人之间的对话
然后就是整合两个机器人,让他们在一起聊聊天看看会发生什么了。
最简单的思路,先给一个导火线,然后死循环让他俩对话就行。。。
1from time import sleep
2import requests
3
4question = input("输入导火线:")
5TULING = '图灵'
6MOLI = '茉莉'
7print(TULING+':'+question) #导火索 哈哈
8while True:
9 #图灵
10 tuling_data = {
11 "key": "5da047a95db8450ea6e710dd065d4be4",
12 "info": question,
13 "userid": "272872"
14 }
15 tuling_api_url = 'http://www.tuling123.com/openapi/api'
16 t = requests.post(tuling_api_url, data=tuling_data) #post请求
17
18 print(TULING+':'+eval(t.text)["text"]) #用eval函数处理一下图灵返回的消息
19 question = eval(t.text)["text"] #重置question —>让茉莉回答
20
21 #茉莉
22 moli_data = {
23 "question": question,
24 "api_key": "ac00db995a4a8f2a3f3623c82f3cc9d9",
25 "api_secret": "anaoutswrz1y"
26 }
27 moli_api_url = 'http://i.itpk.cn/api.php' #api地址
28 m = requests.post(moli_api_url, data = moli_data)
29 print(MOLI+':'+m.text)
30 sleep(1) #设置循环延迟
不过这聊天确实有点尴尬啊:
10分钟用Python告诉你两个机器人聊天能聊出什么火花的更多相关文章
- 用Python写的一个多线程机器人聊天程序
本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...
- 10分钟上手python pandas
目录 Environment 开始 对象创建 查看数据 选择 直接选择 按标签选择 按位置选择 布尔索引 设置 缺失数据 操作 统计 应用(apply) 直方图化(Histogramming) 字符串 ...
- 10分钟学会Python函数基础知识
看完本文大概需要8分钟,看完后,仔细看下代码,认真回一下,函数基本知识就OK了.最好还是把代码敲一下. 一.函数基础 简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运 ...
- 10分钟学会Python
#1. 语法 Python中没有强制的语句终止字符,代码块是通过缩进来指示的.缩进表示一个代码块的开始,逆缩进则表示一个代码块的结束.一般用4个空格来表示缩进. 声明以冒号(:)字符结束,并且开启一个 ...
- 程序员如何 10 分钟用 Python 画出蒙娜丽莎?
之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳.对于他们的耐心我十分敬佩. 但是作为一个程序员,自然也得挑战一下自己. 这种需求,我们十分钟就可以完成! 基本思路 ...
- [转]10分钟入门python
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为Rocrocket Wu. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体 ...
- 10分钟用Python爬取最近很火的复联4影评
欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! <复仇者联盟4:终局之战>已经上映快三个星期了,全球票房破24亿美元,国内票房破40亿人民币. 虽然现在热度逐渐下降,但是我们还 ...
- 【python】10分钟教你用python打造贪吃蛇超详细教程
10分钟教你用python打造贪吃蛇超详细教程 在家闲着没妹子约, 刚好最近又学了一下python,听说pygame挺好玩的.今天就在家研究一下, 弄了个贪吃蛇出来.希望大家喜欢. 先看程序效果: 0 ...
- 【python】10分钟教你用python如何正确把妹
前言 今天没妹子约,刚好研究一下.如何用神奇的python打造一个把妹神器吧.看完这个,你们就能走向人生巅峰,迎娶白富美啦. 我知道你们想看看效果 image 当然啦,这只是测试版的效果,真正的版本可 ...
随机推荐
- CentOS7 修改Jenkins以root用户运行
修改Jenkins以root用户运行,这在正式环境中是不可取的,但在自己的测试环境中就无所谓了啦,怎么方便怎么来. 1. 修改Jenkins配置文件1.1 修改$JENKINS_USER打开jenki ...
- MVC4 部署 could not load file or assembly system.web.http.webhost 或是其它文件出误
自从VS2010发布之后使用它来做开发的程序员越来越多,其中很多人使用了MVC来作为新的开发框架,但是在系统部署的时候我们也遇到诸多问题,因为目前大多数windows服务器采用的还是Windows S ...
- HTML学习摘要4
DAY 4 text-align 属性规定了元素中文本的水平对齐方式: <html> <body> <h1 style="text-align:center&q ...
- vue-cli脚手架——3.0版本项目案例
一.[准备工作] node与git部分见vue-cli2.0搭建案例 vue-cli3.0是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm ...
- MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
参数说明 innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数,不同参数设置对磁盘IO影响不同. 参数i ...
- redis被攻击,怎么预防
今天,自己的redis服务器被黑客攻击了,数据全部被删除 从图中可以看到,在db0中多了一个crackit,他就是罪魁祸首,他的值就是ssh无密码连接时需要的authorized_keys. 我们被攻 ...
- Android笔记(四十二) Android中的数据存储——SQLite(四)update
update方法的四个参数: update()方法参数 对应的sql部分 描述 table update table_name 更新的表名 values set column=xxx ContentV ...
- java ArrayList的remove()方法的参数为int和Integer的问题
ArrayList的父类List中,有2个remove重载方法: remove(int index) remove(Object o) 假如参数输入为数字类型,到底是删除值等于该数字的对象还是删除索引 ...
- linux kernel相关学习资料的收集与周边
<<linux内核设计与实现>>读了一遍.穿线作用比较好. 收获一个网站,和三本书 https://kernelnewbies.org/ https://book.douban ...
- 安装k8s,高可用3 master安装脚本
每个在新集群里,记得更改三个节点的IP即可. 第一步还是要执行那个root脚本,准备好系统环境,安装好软件. 先安装在每个节点上使用docker安装好etcd.(sh script domain et ...