|
@@ -0,0 +1,134 @@ |
|
|
|
|
|
#! /usr/bin/python |
|
|
|
|
|
import tornado.web |
|
|
|
|
|
import tornado.ioloop |
|
|
|
|
|
import tornado.httpserver |
|
|
|
|
|
import tornado.options |
|
|
|
|
|
import os |
|
|
|
|
|
import datetime |
|
|
|
|
|
import openai |
|
|
|
|
|
import asyncio |
|
|
|
|
|
from tornado.web import RequestHandler |
|
|
|
|
|
from tornado.options import define,options |
|
|
|
|
|
from tornado.websocket import WebSocketHandler |
|
|
|
|
|
import openai_async |
|
|
|
|
|
import config |
|
|
|
|
|
import gptAgent |
|
|
|
|
|
|
|
|
|
|
|
#define("port",default=9999,type=int) |
|
|
|
|
|
|
|
|
|
|
|
class IndexHandler(RequestHandler): |
|
|
|
|
|
def get(self): |
|
|
|
|
|
self.render("index.html") |
|
|
|
|
|
|
|
|
|
|
|
class ChatHandler(WebSocketHandler): |
|
|
|
|
|
|
|
|
|
|
|
users = set() #用来存在在线用户的容器 |
|
|
|
|
|
|
|
|
|
|
|
def open(self): |
|
|
|
|
|
print('进来了') |
|
|
|
|
|
self.users.add(self) #建立连接后添加到用户容器中 |
|
|
|
|
|
for u in self.users: |
|
|
|
|
|
print("user count{}".format(len(self.users))) |
|
|
|
|
|
u.write_message(u"[%s]-[%s]-进入" % (self.request.remote_ip,datetime.datetime.now().strftime("%d/%m/%Y"))) |
|
|
|
|
|
print("{} enter".format(self.request.remote_ip)) |
|
|
|
|
|
|
|
|
|
|
|
def on_message(self,message): |
|
|
|
|
|
for u in self.users: # 向所有用户广播消息 |
|
|
|
|
|
u.write_message(u"[%s]-[%s]-说:%s" % (self.request.remote_ip,datetime.datetime.now().strftime("%d/%m/%Y"),message)) |
|
|
|
|
|
print("{} says {}".format(self.request.remote_ip,message)) |
|
|
|
|
|
|
|
|
|
|
|
def on_close(self): |
|
|
|
|
|
print('离开了') |
|
|
|
|
|
self.users.remove(self) |
|
|
|
|
|
for u in self.users: |
|
|
|
|
|
u.write_message(u"[%s]-[%s]-离开" % (self.request.remote_ip,datetime.datetime.now().strftime("%d/%m/%Y"))) |
|
|
|
|
|
print("{} leave".format(self.request.remote_ip)) |
|
|
|
|
|
|
|
|
|
|
|
def check_orign(self,orign): |
|
|
|
|
|
#接受所有跨域 |
|
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
# parsed_orign = urllib.parse.urlparse(orign) |
|
|
|
|
|
# return parsed_orign.netloc.endswith(".malls.iformall.com") |
|
|
|
|
|
|
|
|
|
|
|
#openai.api_key = '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'; |
|
|
|
|
|
class gptAgentStreamHandler(WebSocketHandler): |
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, *args, **kwargs): |
|
|
|
|
|
super().__init__(*args, **kwargs) |
|
|
|
|
|
self.my_replay_content = "" |
|
|
|
|
|
self.currentIsSend=False |
|
|
|
|
|
self.currentIsAll=False |
|
|
|
|
|
|
|
|
|
|
|
async def open(self): |
|
|
|
|
|
print("{} connect".format(self.request.remote_ip)) |
|
|
|
|
|
|
|
|
|
|
|
async def on_message(self,message): |
|
|
|
|
|
await gptAgent.talkGPTWithStream(self,message) |
|
|
|
|
|
def on_close(self): |
|
|
|
|
|
print("{} leave".format(self.request.remote_ip)) |
|
|
|
|
|
|
|
|
|
|
|
async def check_orign(self,orign): |
|
|
|
|
|
#接受所有跨域 |
|
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
# parsed_orign = urllib.parse.urlparse(orign) |
|
|
|
|
|
# return parsed_orign.netloc.endswith(".malls.iformall.com") |
|
|
|
|
|
|
|
|
|
|
|
class gptAgentHandler(WebSocketHandler): |
|
|
|
|
|
|
|
|
|
|
|
async def open(self): |
|
|
|
|
|
print("{} connect".format(self.request.remote_ip)) |
|
|
|
|
|
|
|
|
|
|
|
async def on_message(self,message): |
|
|
|
|
|
await gptAgent.talkGPT(self,message) |
|
|
|
|
|
|
|
|
|
|
|
def on_close(self): |
|
|
|
|
|
print("{} leave".format(self.request.remote_ip)) |
|
|
|
|
|
|
|
|
|
|
|
async def check_orign(self,orign): |
|
|
|
|
|
#接受所有跨域 |
|
|
|
|
|
return True |
|
|
|
|
|
|
|
|
|
|
|
# parsed_orign = urllib.parse.urlparse(orign) |
|
|
|
|
|
# return parsed_orign.netloc.endswith(".malls.iformall.com") |
|
|
|
|
|
|
|
|
|
|
|
async def main(): |
|
|
|
|
|
tornado.options.parse_command_line() |
|
|
|
|
|
app = tornado.web.Application([ |
|
|
|
|
|
(r"/index",IndexHandler), |
|
|
|
|
|
(r"/wss/chat",ChatHandler), |
|
|
|
|
|
#(r"/",gptAgentHandler) |
|
|
|
|
|
(r"/",gptAgentStreamHandler) |
|
|
|
|
|
], |
|
|
|
|
|
static_path = os.path.join(os.path.dirname(__file__),"static"), |
|
|
|
|
|
template_path = os.path.join(os.path.dirname(__file__),"template"), |
|
|
|
|
|
debug = True |
|
|
|
|
|
) |
|
|
|
|
|
http_server = tornado.httpserver.HTTPServer(app,xheaders=True) |
|
|
|
|
|
#http_server.listen(options.port) |
|
|
|
|
|
http_server.bind(config.agentServer['port']) |
|
|
|
|
|
http_server.start(config.agentServer['threads']) |
|
|
|
|
|
await asyncio.Event().wait() |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
|
|
asyncio.run(main()) |
|
|
|
|
|
|
|
|
|
|
|
#if __name__ == '__main__': |
|
|
|
|
|
#tornado.options.parse_command_line() |
|
|
|
|
|
#app = tornado.web.Application([ |
|
|
|
|
|
# (r"/index",IndexHandler), |
|
|
|
|
|
# (r"/wss/chat",ChatHandler), |
|
|
|
|
|
# #(r"/",gptAgentHandler) |
|
|
|
|
|
# (r"/",gptAgentStreamHandler) |
|
|
|
|
|
# ], |
|
|
|
|
|
# static_path = os.path.join(os.path.dirname(__file__),"static"), |
|
|
|
|
|
# template_path = os.path.join(os.path.dirname(__file__),"template"), |
|
|
|
|
|
# debug = True |
|
|
|
|
|
#) |
|
|
|
|
|
#http_server = tornado.httpserver.HTTPServer(app,xheaders=True) |
|
|
|
|
|
##http_server.listen(options.port) |
|
|
|
|
|
#http_server.bind(options.port) |
|
|
|
|
|
#http_server.start(1) |
|
|
|
|
|
#tornado.ioloop.IOLoop.current().start() |
|
|
|
|
|
|