gpt壳项目
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 

135 řádky
4.3 KiB

  1. #! /usr/bin/python
  2. import tornado.web
  3. import tornado.ioloop
  4. import tornado.httpserver
  5. import tornado.options
  6. import os
  7. import datetime
  8. import openai
  9. import asyncio
  10. from tornado.web import RequestHandler
  11. from tornado.options import define,options
  12. from tornado.websocket import WebSocketHandler
  13. import openai_async
  14. import config
  15. import gptAgent
  16. #define("port",default=9999,type=int)
  17. class IndexHandler(RequestHandler):
  18. def get(self):
  19. self.render("index.html")
  20. class ChatHandler(WebSocketHandler):
  21. users = set() #用来存在在线用户的容器
  22. def open(self):
  23. print('进来了')
  24. self.users.add(self) #建立连接后添加到用户容器中
  25. for u in self.users:
  26. print("user count{}".format(len(self.users)))
  27. u.write_message(u"[%s]-[%s]-进入" % (self.request.remote_ip,datetime.datetime.now().strftime("%d/%m/%Y")))
  28. print("{} enter".format(self.request.remote_ip))
  29. def on_message(self,message):
  30. for u in self.users: # 向所有用户广播消息
  31. u.write_message(u"[%s]-[%s]-说:%s" % (self.request.remote_ip,datetime.datetime.now().strftime("%d/%m/%Y"),message))
  32. print("{} says {}".format(self.request.remote_ip,message))
  33. def on_close(self):
  34. print('离开了')
  35. self.users.remove(self)
  36. for u in self.users:
  37. u.write_message(u"[%s]-[%s]-离开" % (self.request.remote_ip,datetime.datetime.now().strftime("%d/%m/%Y")))
  38. print("{} leave".format(self.request.remote_ip))
  39. def check_orign(self,orign):
  40. #接受所有跨域
  41. return True
  42. # parsed_orign = urllib.parse.urlparse(orign)
  43. # return parsed_orign.netloc.endswith(".malls.iformall.com")
  44. #openai.api_key = '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';
  45. class gptAgentStreamHandler(WebSocketHandler):
  46. def __init__(self, *args, **kwargs):
  47. super().__init__(*args, **kwargs)
  48. self.my_replay_content = ""
  49. self.currentIsSend=False
  50. self.currentIsAll=False
  51. async def open(self):
  52. print("{} connect".format(self.request.remote_ip))
  53. async def on_message(self,message):
  54. await gptAgent.talkGPTWithStream(self,message)
  55. def on_close(self):
  56. print("{} leave".format(self.request.remote_ip))
  57. async def check_orign(self,orign):
  58. #接受所有跨域
  59. return True
  60. # parsed_orign = urllib.parse.urlparse(orign)
  61. # return parsed_orign.netloc.endswith(".malls.iformall.com")
  62. class gptAgentHandler(WebSocketHandler):
  63. async def open(self):
  64. print("{} connect".format(self.request.remote_ip))
  65. async def on_message(self,message):
  66. await gptAgent.talkGPT(self,message)
  67. def on_close(self):
  68. print("{} leave".format(self.request.remote_ip))
  69. async def check_orign(self,orign):
  70. #接受所有跨域
  71. return True
  72. # parsed_orign = urllib.parse.urlparse(orign)
  73. # return parsed_orign.netloc.endswith(".malls.iformall.com")
  74. async def main():
  75. tornado.options.parse_command_line()
  76. app = tornado.web.Application([
  77. (r"/index",IndexHandler),
  78. (r"/wss/chat",ChatHandler),
  79. #(r"/",gptAgentHandler)
  80. (r"/",gptAgentStreamHandler)
  81. ],
  82. static_path = os.path.join(os.path.dirname(__file__),"static"),
  83. template_path = os.path.join(os.path.dirname(__file__),"template"),
  84. debug = True
  85. )
  86. http_server = tornado.httpserver.HTTPServer(app,xheaders=True)
  87. #http_server.listen(options.port)
  88. http_server.bind(config.agentServer['port'])
  89. http_server.start(config.agentServer['threads'])
  90. await asyncio.Event().wait()
  91. if __name__ == '__main__':
  92. asyncio.run(main())
  93. #if __name__ == '__main__':
  94. #tornado.options.parse_command_line()
  95. #app = tornado.web.Application([
  96. # (r"/index",IndexHandler),
  97. # (r"/wss/chat",ChatHandler),
  98. # #(r"/",gptAgentHandler)
  99. # (r"/",gptAgentStreamHandler)
  100. # ],
  101. # static_path = os.path.join(os.path.dirname(__file__),"static"),
  102. # template_path = os.path.join(os.path.dirname(__file__),"template"),
  103. # debug = True
  104. #)
  105. #http_server = tornado.httpserver.HTTPServer(app,xheaders=True)
  106. ##http_server.listen(options.port)
  107. #http_server.bind(options.port)
  108. #http_server.start(1)
  109. #tornado.ioloop.IOLoop.current().start()