46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import http.server
|
|
import socketserver
|
|
import json
|
|
import sys
|
|
|
|
from chat_qwen import ChatQwen
|
|
|
|
bot = ChatQwen(sys.argv[1]) if len(sys.argv) > 1 else ChatQwen()
|
|
|
|
|
|
class Server(socketserver.TCPServer):
|
|
# Avoid "address already used" error when frequently restarting the script
|
|
allow_reuse_address = True
|
|
|
|
|
|
class Handler(http.server.BaseHTTPRequestHandler):
|
|
def do_GET(self):
|
|
self.send_response(200)
|
|
self.end_headers()
|
|
self.wfile.write("Use POST with JSON body of the format \n"
|
|
"[{\"role\": \"user\", \"content\": \"message\"}] \n"
|
|
"or \n"
|
|
"[{\"role\": \"user\", \"content\": \"message\"}, "
|
|
"{\"role\": \"assistant\", \"content\": \"message\"}, "
|
|
"{\"role\": \"user\", \"content\": \"message\"}]".encode("utf-8"))
|
|
|
|
def do_POST(self):
|
|
try:
|
|
content_len = int(self.headers.get('Content-Length'))
|
|
post_body = self.rfile.read(content_len)
|
|
json_body = json.loads(post_body)
|
|
|
|
response = bot.generate(json_body)
|
|
|
|
self.send_response(200)
|
|
self.end_headers()
|
|
self.wfile.write(json.dumps(response).encode("utf-8"))
|
|
except Exception as e:
|
|
print(e)
|
|
self.send_response(400)
|
|
self.end_headers()
|
|
|
|
|
|
with Server(("0.0.0.0", 8900), Handler) as httpd:
|
|
httpd.serve_forever()
|