gpt服务
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

158 lines
5.0 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. 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()