Atualizar app/app.py
This commit is contained in:
+45
@@ -418,6 +418,51 @@ def admin_conversations(email):
|
|||||||
# API
|
# API
|
||||||
# ================
|
# ================
|
||||||
|
|
||||||
|
@app.route("/api/chat", methods=["POST"])
|
||||||
|
@login_required
|
||||||
|
@rate_limited
|
||||||
|
def chat():
|
||||||
|
data = request.json
|
||||||
|
model = data.get("model", "llama3.2")
|
||||||
|
messages = data.get("messages", [])
|
||||||
|
|
||||||
|
url = f"{app.config['OLLAMA_BASE_URL']}/api/chat"
|
||||||
|
payload = {"model": model, "messages": messages}
|
||||||
|
|
||||||
|
r = requests.post(url, json=payload)
|
||||||
|
r.raise_for_status()
|
||||||
|
|
||||||
|
return jsonify(r.json())
|
||||||
|
|
||||||
|
@app.route("/api/chat/stream")
|
||||||
|
@login_required
|
||||||
|
@rate_limited
|
||||||
|
def chat_stream():
|
||||||
|
model = request.args.get("model", "llama3.2")
|
||||||
|
cid = request.args.get("conversation_id")
|
||||||
|
|
||||||
|
db = SessionLocal()
|
||||||
|
msgs = db.query(Message).filter_by(conversation_id=cid).order_by(Message.created_at).all()
|
||||||
|
db.close()
|
||||||
|
|
||||||
|
chatml = [{"role": m.role, "content": m.content} for m in msgs]
|
||||||
|
|
||||||
|
def generate():
|
||||||
|
url = f"{app.config['OLLAMA_BASE_URL']}/api/chat"
|
||||||
|
payload = {"model": model, "messages": chatml, "stream": True}
|
||||||
|
|
||||||
|
with requests.post(url, json=payload, stream=True) as r:
|
||||||
|
for line in r.iter_lines():
|
||||||
|
if not line:
|
||||||
|
continue
|
||||||
|
data = json.loads(line.decode())
|
||||||
|
token = data.get("message", {}).get("content", "")
|
||||||
|
yield f"data: {json.dumps({'token': token})}\n\n"
|
||||||
|
|
||||||
|
return Response(generate(), mimetype="text/event-stream")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/api/new_conversation", methods=["POST"])
|
@app.route("/api/new_conversation", methods=["POST"])
|
||||||
@login_required
|
@login_required
|
||||||
|
|||||||
Reference in New Issue
Block a user