gpt服务
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

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