Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b552f27f52 | ||
|
|
e0654429dc | ||
|
|
6f28a9e40c |
@@ -966,6 +966,41 @@ Report generated by IT Site Survey AI<br>
|
||||
return jsonify({'email_body': email_body})
|
||||
|
||||
|
||||
@app.route("/api/surveys/<survey_id>/chat", methods=["POST"])
|
||||
def chat_with_ai(survey_id):
|
||||
survey = surveys_db.get(survey_id)
|
||||
if not survey:
|
||||
return jsonify({"error": "Survey not found"}), 404
|
||||
|
||||
data = request.get_json() or {}
|
||||
user_message = data.get("message", "")
|
||||
chat_history = data.get("history", [])
|
||||
model = data.get("model", DEFAULT_MODEL)
|
||||
|
||||
latest_response = survey["responses"][-1] if survey["responses"] else None
|
||||
responses = latest_response["responses"] if latest_response else {}
|
||||
|
||||
survey_context = f"Client: {survey.get("client_name", "Unknown")}\nSite: {survey.get("site_name", "Unknown")}\n\nSurvey Responses:\n"
|
||||
for q in survey["questions"]:
|
||||
qid = q["id"]
|
||||
answer = responses.get(qid, "Not answered")
|
||||
survey_context += f"{q["question"]}: {answer}\n"
|
||||
|
||||
messages = [{"role": "system", "content": f"You are a network infrastructure expert reviewing this survey: {survey_context}"}]
|
||||
for msg in chat_history:
|
||||
messages.append(msg)
|
||||
messages.append({"role": "user", "content": user_message})
|
||||
|
||||
try:
|
||||
resp = requests.post(f"{OLLAMA_BASE}/api/chat", json={"model": model, "messages": messages, "stream": False}, timeout=120)
|
||||
if resp.status_code == 200:
|
||||
result = resp.json()
|
||||
return jsonify({"response": result.get("message", {}).get("content", "No response")})
|
||||
else:
|
||||
return jsonify({"error": f"Ollama error: {resp.status_code}"}), 500
|
||||
except Exception as e:
|
||||
return jsonify({"error": str(e)}), 500
|
||||
|
||||
if __name__ == '__main__':
|
||||
port = int(os.environ.get('PORT', 3003))
|
||||
print("───────────────────────────────────────")
|
||||
|
||||
+602
-1135
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user