首页 > 编程知识 正文

2个聊天机器人的英文,机器人和机器人聊天

时间:2023-05-05 10:38:08 阅读:216804 作者:3332

2014/06/28修改.

       修改小黄鸡模块, 小i就不改了, 没什么用。。。


新版小黄鸡模块(只写了个ask函数, teach还没写, 后面应该会继续修改。。)


#coding=utf-8import json;import urllib;import urllib.request;from urllib.parse import urlencode;URL_SIMSIMI = "http://www.simsimi.com/talk.htm";URL_ASKSIMSIMI = "http://www.simsimi.com/func/reqN?";URL_TEACHSIMSIMI = "";talkHeader = { "Cookie":"simsimi_uid=53294991; simsimi_uid=53294991; isFirst=1; isFirst=1; sid=s%3AXcqIfaDZ5P4biUHi4Xw8TdFE.CYYochQc23%2B%2BvPjDw5HH4yg5MTN%2FSnBtskGXJHEX8f4; AWSELB=150F676708F2639057F41EA6CD9115064C58E864E4D5FE3F62AF683EB3CA54C1A44837308BAB86F4F48D2BA2A2B01B0AEA34FBA3D92BA7AB89083051C189504CF5589F0BF7; teach_btn_url=talk; teach_btn_url=talk; Filtering=0.0; Filtering=0.0; popup_ad_InMobi=1; popup_ad_InMobi=1; menuType=web; menuType=web; selected_nc=ch; selected_nc=ch; __utma=119922954.2134471962.1398783865.1403874641.1403877970.3; __utmb=119922954.23.9.1403880508342; __utmc=119922954; __utmz=119922954.1403874641.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)", "Referer":"http://www.simsimi.com/talk.htm", "User-Agent":"Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19",}class Simsimi: def __init__(self): self._opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor()); def ask(self, q): data = { "lc":"ch", "ft":"0.0", "req":q, "fl":"http://www.simsimi.com/talk.htm", }; request = urllib.request.Request(URL_ASKSIMSIMI + urlencode(data), headers = talkHeader); ret = json.loads(self._opener.open(request).read().decode("utf-8")); if(ret["result"] == 200 and ret["sentence_link_id"] != 1): return ret["sentence_resp"]; return None; def teach(self, q, asw): pass; def main(): robot = Simsimi(); print(robot.ask("sb")); if(__name__ == "__main__"): main();





#----------------------------------------------------------------------------------(分割线, 以下内容已失效。。。)--------------------------------------------------------------------------------------------------


找了2个接口,,,用来做聊天机器人(后面应该会写一个贴吧自动回复的机器人。所以先弄下这个),,,有需要就拿去用吧。


小i机器人的。。。。(已失效);

# coding=gbkimport urllib;import urllib.request;import hashlib;import random;from urllib.parse import urlencode;realm = "xiaoi.com";menthod = "POST";uri = "/robot/ask.do";string = "abcdefghijklmnopqrstuvwxyz0123456789";#请求头;headers = { "User-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 LBBROWSER", "Cache-Control": "no-cache", "Pragma":"no-cache", "Host":"nlp.xiaoi.com", "Connection":"Keep-Alive", "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With":"XMLHttpRequest", "X-Auth":"", };#请求的问题;data = { "question":"", "userId":"sen506", "type":"0", };#生成指定位数的随机数;def createRand(length): rndStr = "" for i in range(0, length): rndStr += random.choice(string); return rndStr;#生成X-Auth请求头;def createXAuth(appKey, secretKey): nonce = createRand(40); sha1 = hashlib.sha1(); sha1.update("{0}:{1}:{2}".format(appKey, realm, secretKey).encode("utf-8")) ha1 = sha1.hexdigest(); sha2 = hashlib.sha1(); sha2.update("{0}:{1}".format(menthod, uri).encode("utf-8")); ha2 = sha2.hexdigest(); sha3 = hashlib.sha1(); signature = sha3.update("{0}:{1}:{2}".format(ha1, nonce, ha2).encode("utf-8")); signature = sha3.hexdigest(); return "app_key="{0}",nonce="{1}",signature="{2}"".format(appKey, nonce, signature);class xiaoi: def __init__(self, appKey = "", secretKey = ""): self.setAppKey(appKey); self.setSecretKey(secretKey); self._request = urllib.request.Request("http://nlp.xiaoi.com/robot/ask.do", headers); def ask(self, qs): self._request.headers["X-Auth"] = createXAuth(self._appKey, self._secretKey); data["question"] = qs; try: return urllib.request.urlopen(self._request, urlencode(data).encode("utf-8")).read().decode("utf-8"); except: return "Error"; def setAppKey(self, appKey): self._appKey = appKey; def setSecretKey(self, secretKey): self._secretKey = secretKey;def main(): robot = xiaoi("", ""); for i in range(1, 100): print("问:", end = ""); question = input(); print("答:" + robot.ask(question));if __name__ == "__main__": main();

main函数中的xiaoi("", "")引号里面需要传入2个参数,一个是appKey,另一个是secretKey,,这2个注册一个帐号就有了。。地址 小i智能云平台



效果图。。


个人感觉小i机器人有点弱。。。。。。。


小黄鸡的。。。。(这个是网页版的。。收费的api实在用不起。。。)(已失效)

# -*- coding: gbk -*-import urllib;import urllib.request;import json;from urllib.parse import urlencode;# 请求头simsimiHeaders = { "Connection":"keep-alive", "Content-Type":"application/json; charset=utf-8", "Host":"www.simsimi.com", "Referer":"", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 LBBROWSER", "X-Requested-With":"XMLHttpRequest", };# 调教内容data = { "req":"", "resp":"", "lc":"ch" };class simsimiWeb: def __init__(self): self.setOpener(); def ask(self, qs): if(not qs.startswith("teach") and not qs.endswith("teach")): return self._ask(qs); else: return self._teach(qs); def _ask(self, qs): self._setType("ask"); request = urllib.request.Request("http://www.simsimi.com/func/req?{0}&lc=ch&ft=0.0".format(urlencode({"msg":qs})), headers = simsimiHeaders); result = json.loads(urllib.request.urlopen(request).read().decode("utf-8")); if(result["result"] == 100): return result["response"]; elif(result["result"] == 404): return """ 这是SimSimi不懂的话! 你可以教我哦. example: teach|问题|回答|teach """; else: print(result); return "Error"; def _teach(self, word): string, qs, asw, string = word.split("|"); if(string == "" or qs == "" or asw == ""): return "格式错误,或者问题、回答为空!"; self._setType("teach"); request = urllib.request.Request("http://www.simsimi.com/func/teach", headers = simsimiHeaders); data["req"] = qs; data["resp"] = asw; result = json.loads(urllib.request.urlopen(request, json.dumps(data).encode("utf-8")).read().decode("utf-8")); if(result["result"] == 200): return result["msg"]; else: print(result); return "教的过程中出现错误。。。"; def _setType(self, type): if(type == "ask"): simsimiHeaders["Referer"] = "http://www.simsimi.com/talk.htm"; elif(type == "teach"): simsimiHeaders["Referer"] = "http://www.simsimi.com/teach.htm"; def setOpener(self): opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor()); urllib.request.install_opener(opener);def main(): simsimiRobot = simsimiWeb(); for i in range(0, 1000): print("问:", end = ""); question = input(); print("答:" + simsimiRobot.ask(question));if(__name__ == "__main__"): main();
效果图。。(带调教功能。。)




版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。