|
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|