Files
wevia-brain/wevia-stream.py
2026-04-12 23:01:36 +02:00

51 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env python3
"""WEVIA SSE v4 — uses requests instead of urllib"""
import http.server, json, requests as req
PORT = 5899
KEY = 'csk-4wrrhkpr568ry9xx49k9mcynwdx483nx53dd62yh5xedfckh'
GROQ = ''
try:
for l in open('/etc/weval/secrets.env'):
if l.startswith('GROQ_KEY='): GROQ = l.split('=',1)[1].strip()
except: pass
def ask_cerebras(q):
r = req.post('https://api.cerebras.ai/v1/chat/completions',
json={'model':'qwen-3-235b-a22b-instruct-2507','messages':[{'role':'system','content':'Tu es WEVIA Master. 33 IAs, 146 outils, 4 serveurs, 913 skills. Reponds en francais, en detail.'},{'role':'user','content':q}],'max_tokens':2000},
headers={'Authorization':f'Bearer {KEY}'},timeout=60)
return r.json()['choices'][0]['message']['content']
def ask_groq(q):
r = req.post('https://api.groq.com/openai/v1/chat/completions',
json={'model':'llama-3.3-70b-versatile','messages':[{'role':'user','content':q}],'max_tokens':1000},
headers={'Authorization':f'Bearer {GROQ}'},timeout=15)
return r.json()['choices'][0]['message']['content']
class H(http.server.BaseHTTPRequestHandler):
def do_POST(self):
body = self.rfile.read(int(self.headers.get('Content-Length',0))).decode()
q = json.loads(body).get('message','') if body else ''
self.send_response(200)
self.send_header('Content-Type','text/event-stream')
self.send_header('Access-Control-Allow-Origin','*')
self.end_headers()
try:
self.wfile.write(f"data: {json.dumps({'t':'[WEVIA] Processing...'})}\n\n".encode()); self.wfile.flush()
try: answer = ask_cerebras(q)
except: answer = ask_groq(q)
for i in range(0,len(answer),80):
self.wfile.write(f"data: {json.dumps({'t':answer[i:i+80]})}\n\n".encode()); self.wfile.flush()
self.wfile.write(b"data: [DONE]\n\n"); self.wfile.flush()
except Exception as e:
self.wfile.write(f"data: {json.dumps({'error':str(e)})}\n\n".encode()); self.wfile.flush()
def do_GET(self):
self.send_response(200); self.send_header('Content-Type','application/json'); self.end_headers()
self.wfile.write(b'{"ok":true,"engine":"WEVIA SSE v4","port":5899}')
def do_OPTIONS(self):
self.send_response(200); self.send_header('Access-Control-Allow-Origin','*'); self.send_header('Access-Control-Allow-Methods','POST'); self.send_header('Access-Control-Allow-Headers','Content-Type'); self.end_headers()
def log_message(self,*a): pass
print(f"WEVIA SSE v4 :{PORT} cerebras={'OK'} groq={'OK' if GROQ else 'NO'}")
http.server.HTTPServer(('0.0.0.0',PORT),H).serve_forever()