Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
env
.env
/venv
23 changes: 12 additions & 11 deletions app.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
from flask import Flask, redirect, render_template, url_for, request, jsonify
from dotenv import load_dotenv
import google.generativeai as genai
from google import genai
from PIL import Image
import os
from markdown import markdown

load_dotenv('.env')
genai.configure(api_key=os.getenv('API_KEY'))

model = genai.GenerativeModel('gemini-pro')
chat_model = model.start_chat(history=[]) # chat based on history
client = genai.Client(api_key=os.getenv('API_KEY'))
chat_model = client.chats.create(model='gemini-2.5-flash')
img_model = 'gemini-2.5-flash'

img_model = genai.GenerativeModel('gemini-pro-vision')

app = Flask(__name__)

Expand All @@ -22,16 +21,16 @@ def home():

# Text to text


@app.route("/chat", methods=['GET', 'POST'])
def chat():
if request.method == 'POST':
query = request.json['query']

if (len(query.strip()) == 0):
return jsonify("Please enter something!")
try:
gemini_response = chat_model.send_message(
query).text # Send message based on the chat history
gemini_response = chat_model.send_message(query).text # Send message based on the chat history

except:
return jsonify("Something went wrong!")

Expand All @@ -41,17 +40,19 @@ def chat():

# Image to text


@app.route("/image_chat", methods=['POST', 'GET'])
def image_chat():

if request.method == 'POST':
img = request.files['image'] # Loads the file
q = request.form['query'] # Loads the query

image = Image.open(img) # Read the image in PIL format
try:
response = img_model.generate_content(
[q, image]) # Generate content for the image
response = client.models.generate_content(
model=img_model,
contents=[q, image]) # Generate content for the image

except: # noqa: E722
return jsonify("Something went wrong!")
return jsonify(markdown(response.text))
Expand Down
5 changes: 3 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
Flask==3.0.3
Gunicorn
Markdown==3.4.4
google-generativeai==0.3.2
google-genai==1.24.0
Pillow==9.5.0
protobuf
python-dotenv==1.0.1
python-dotenv==1.0.1

4 changes: 3 additions & 1 deletion static/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,9 @@ ask_btn.addEventListener("click", async () => {
let gemini_response = document.createElement('div')
gemini_response.setAttribute('class', 'gemini')
let gemini_avatar_div = document.createElement('div')
gemini_avatar_div.innerHTML = `<img class="avatar" src="static/person_avatar"/> <span>Gemini-Bot</span>`

gemini_avatar_div.innerHTML = `<img class="avatar" src="static/ai_bot.png"/> <span>Gemini-Bot</span>`

let gemini_ans = document.createElement('p')
gemini_ans.innerHTML = "<div id='loading_div'>Generating your content<span id = 'loading'></span></div>"
gemini_response.append(gemini_avatar_div, gemini_ans)
Expand Down
4 changes: 3 additions & 1 deletion static/js/image_chat.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,9 @@ ask_btn.addEventListener("click", async function () {
let gemini_response = document.createElement('div')
gemini_response.setAttribute('class', 'gemini')
let gemini_avatar_div = document.createElement('div')
gemini_avatar_div.innerHTML = `<img class="avatar" src="static/person_avatar"/> <span>Gemini-Bot</span>`

gemini_avatar_div.innerHTML = `<img class="avatar" src="static/ai_bot.png"/> <span>Gemini-Bot</span>`

let gemini_ans = document.createElement('p')
gemini_ans.innerHTML = "<div id='loading_div'>Generating your content<span id = 'loading'></span></div>"
gemini_response.append(gemini_avatar_div, gemini_ans)
Expand Down