|
|
|
|
|
|
| from flask import Flask, request, render_template, send_file, jsonify
|
| from PIL import Image
|
| import ollama
|
| import os
|
| from werkzeug.utils import secure_filename
|
| from flask import url_for
|
|
|
| app = Flask(__name__)
|
|
|
|
|
| @app.route("/")
|
| def index():
|
| return render_template("index.html")
|
|
|
|
|
| @app.route("/ask", methods=["POST"])
|
| def ask():
|
| try:
|
|
|
|
|
| if "image" in request.files:
|
| image_file = request.files["image"]
|
| filename = secure_filename(image_file.filename)
|
| if filename:
|
| image_path = os.path.join("static", "images", filename)
|
| image_file.save(image_path)
|
| question = request.form["question"]
|
| message = {
|
| 'role': 'user',
|
| 'content': question,
|
| 'images': [image_path]
|
| }
|
| image_url = url_for('static', filename='images/' + filename)
|
| else:
|
| question = request.form["question"]
|
| message = {
|
| 'role': 'user',
|
| 'content': question
|
| }
|
| image_url = None
|
| else:
|
| question = request.form["question"]
|
| message = {
|
| 'role': 'user',
|
| 'content': question
|
| }
|
| image_url = None
|
|
|
|
|
|
|
|
|
| res = ollama.chat(
|
| model="llava:7b",
|
| messages=[message]
|
|
|
| )
|
|
|
|
|
| return render_template("response.html", question=question, response=res['message']['content'], image_url=image_url)
|
| except Exception as e:
|
| return render_template("error.html", error=str(e))
|
|
|
| if __name__ == "__main__":
|
| app.run(debug=True)
|
|
|
|
|