相关文件
源码分享,问题解答!!
关注小编,私信小编领取哟!
当然别忘了一件三连哟~~
对了大家可以关注小编的公众号哟~~
有很多资源可以领取的哟!!
Python日志
大家也可以去b站看我的一些教学视频哟!!
更多Python视频教学:Python视频教学(b站)
开始整活
如果把不同平台提供的聊天机器人放在一起,让他们自己聊天会发生什么有趣的事情,比如给定一个中国足球的话题?
废话不多说,让我们愉快地开始吧~
开发工具
Python版本:3.7.8
相关模块:
requests模块;
pyttsx3模块;
argparse模块;
以及一些python自带的模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
原理介绍
首先,我们确定一下想要实现的效果:即用户给定一个聊天话题,让不同平台的聊天机器人根据这个话题进行“思想交流碰撞”。
具体而言,我找到的聊天机器人接口有图灵机器人(这个key都是从网上找到的,每天请求数量有限,都失效了的话需要自己去官网重新申请):
'''图灵机器人API'''
def turing(self, sentence, need_say=True):
# 在http://www.tuling123.com/可以申请appkeys
appkeys = [
'f0a5ab746c7d41c48a733cabff23fb6d',
'c4fae3a2f8394b73bcffdecbbb4c6ac6',
'0ca694db371745668c28c6cb0a755587',
'7855ce1ebd654f31938505bb990616d4',
'5945954988d24ed393f465aae9be71b9',
'1a337b641da04c64aa7fd4849a5f713e',
'eb720a8970964f3f855d863d24406576',
'1107d5601866433dba9599fac1bc0083',
'70a315f07d324b3ea02cf21d13796605',
'45fa933f47bb45fb8e7746759ba9b24a',
'2f1446eb0321804291b0a1e217c25bb5',
'7f05e31d381143d9948109e75484d9d0',
'35ff2856b55e4a7f9eeb86e3437e23fe',
'820c4a6ca4694063ab6002be1d1c63d3',
]
while True:
url = 'http://www.tuling123.com/openapi/api?key=%s&info=%s'
response = requests.get(url % (random.choice(appkeys), sentence))
reply = response.json()['text']
if u'亲爱的,当天请求次数已用完。' in reply:
continue
if need_say: self.say(reply)
return reply
然后是青云客智能聊天机器人:
'''青云客智能聊天机器人API'''
def qingyunke(self, sentence, need_say=True):
while True:
url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s'
response = requests.get(url % sentence)
if response.json()['result'] != 0:
time.sleep(random.random() + 0.5)
continue
reply = response.json()['content']
if need_say: self.say(reply)
return reply
接着是天行机器人(这个key也都是从网上找到的,都失效了的话需要自己去官网重新申请):
'''天行机器人API'''
def tian(self, sentence, need_say=True):
# 在https://www.tianapi.com/apiview/47可以申请app_keys
app_keys = [
('250', '16e2471e7a72f1e9dca46b2a80486c7d'),
('250', '5fb41161aff1256441d57dafeef854fc'),
('250', '6c80a34954420f65176ec34f1261967e'),
('250', '8461142e844b269785d25242986696c5'),
]
while True:
url = 'https://api.tianapi.com/txapi/robot/'
userid, key = random.choice(app_keys)
params = {
'key': key,
'question': sentence,
'userid': userid,
'limit': '10',
'mode': '1',
'datatype': '0',
}
response = requests.get(url, params=params)
if response.json()['msg'] != 'success':
time.sleep(random.random() + 0.5)
continue
reply = response.json()['newslist'][0]['reply']
if need_say: self.say(reply)
return reply
然后是海知智能机器人(这个key也都是从网上找到的,都失效了的话需要自己去官网重新申请):
'''海知智能机器人API'''
def ruyi(self, sentence, need_say=True):
# 在https://ruyi.ai/可以申请app_keys
app_keys = [
'bfdeb392-0e9e-452f-8eec-09a1de2e58d0',
'0df50fac-4df0-466c-9798-99136f42bb8c',
'9aa281dd-ec2e-407d-85c8-ad0a0abd0824',
'631e72e1-6867-49b9-af92-36d4c4c154de',
]
while True:
url = 'http://api.ruyi.ai/v1/message'
headers = {'Content-Type': 'application/json'}
app_key = random.choice(app_keys)
params = {'q': sentence, 'user_id': random.randrange(1, 9999), 'app_key': app_key}
response = requests.get(url, headers=headers, params=params)
if response.json()['msg'] != 'ok':
time.sleep(random.random() + 0.5)
continue
reply = response.json()['result']['intents'][0]['result']['text']
if need_say: self.say(reply)
return reply
最后是思知机器人(这个key也都是从网上找到的,都失效了的话需要自己去官网重新申请):
'''思知机器人API'''
def ownthink(self, sentence, need_say=True):
# 在https://www.ownthink.com/可以申请app_keys
app_keys = [
'xiaosi',
'9ffcb5785ad9617bf4e64178ac64f7b1',
'3f9ae1c73db460f4bbb2b491c9119eec',
'c4b2d5f87542b70e2f65f9dec5288913',
]
while True:
url = 'https://api.ownthink.com/bot'
app_key = random.choice(app_keys)
params = {
'appid': app_key,
'userid': random.randrange(1, 9999),
'spoken': sentence
}
response = requests.get(url, params=params)
if response.json()['message'] != 'success':
time.sleep(random.random() + 0.5)
continue
reply = response.json()['data']['info']['text']
if need_say: self.say(reply)
return reply
接下来,就可以看看几个机器人之间对话会发生什么有趣的事情啦:
'''运行'''
def run(self):
supported_bots = {
'海知智能机器人': self.ruyi,
'天行机器人': self.tian,
'图灵机器人': self.turing,
'思知机器人': self.ownthink,
'青云客智能聊天机器人': self.qingyunke,
}
sentence = self.topic
pre_bot_name = None
bot_name = '图灵机器人'
while True:
while bot_name == pre_bot_name:
bot_name = random.choice(list(supported_bots.keys()))
bot = supported_bots[bot_name]
sentence = bot(sentence)
print(f'[{bot_name}]: {sentence}')
pre_bot_name = bot_name
效果展示
因为csdn不能直接放视频,大家可以看我b站的视频哈
比如让机器人聊聊中国足球吧:
如果用python让一群机器人聊聊中国足球会发生什么事~
果然还是聊了两句就聊不下去了。再试试让他们聊聊中国新年吧:
Python实现机器人之间的对话(谈论中国新年)
好啦,今天就的分享就到这里啦,需要源代码的小伙伴可以查看相关文件哟!
也可以关注小编的公众号获取源码和资源哟!!
公众号:Python日志