2 changed files with 651 additions and 1143 deletions
+35
View File
@@ -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("───────────────────────────────────────")
+609 -1136
View File
File diff suppressed because it is too large Load Diff