Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b552f27f52 | ||
|
|
e0654429dc |
@@ -966,6 +966,41 @@ Report generated by IT Site Survey AI<br>
|
|||||||
return jsonify({'email_body': email_body})
|
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__':
|
if __name__ == '__main__':
|
||||||
port = int(os.environ.get('PORT', 3003))
|
port = int(os.environ.get('PORT', 3003))
|
||||||
print("───────────────────────────────────────")
|
print("───────────────────────────────────────")
|
||||||
|
|||||||
+615
-1169
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user