|
- #! /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
- import baichuanAgent
-
- #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")
-
- class gptBaiChuanStreamHandler(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 baichuanAgent.talkBaiChuanWithStream(self,message)
- def on_close(self):
- print("{} leave".format(self.request.remote_ip))
-
- async def check_orign(self,orign):
- #接受所有跨域
- return True
-
-
- async def main():
- tornado.options.parse_command_line()
- app = tornado.web.Application([
- (r"/index",IndexHandler),
- (r"/wss/chat",ChatHandler),
- (r"/talk",gptAgentHandler),
- (r"/",gptAgentStreamHandler),
- (r"/baichuan",gptBaiChuanStreamHandler)
- ],
- 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()
-
|