File size: 2,110 Bytes
a975db9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# app.py
#imagechatbot
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__)
# Define a route for the home page
@app.route("/")
def index():
return render_template("index.html")
# Define a route for handling questions
@app.route("/ask", methods=["POST"])
def ask():
try:
# Check if an image is provided
if "image" in request.files:
image_file = request.files["image"]
filename = secure_filename(image_file.filename)
if filename: # Check if filename is not empty
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
# Use the ollama.chat function to generate a response
res = ollama.chat(
model="llava:7b",
messages=[message]
)
# Render the response.html template with the response and image
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)
|