HawkeyeHS's picture
Added gemini pro
91c4ef2
raw
history blame
3.54 kB
import os
import warnings
from transformers import AutoModelForImageClassification, AutoFeatureExtractor
import torch
from flask_cors import CORS
from flask import Flask, request, json, Response
import numpy as np
from PIL import Image
import requests
from io import BytesIO
from bs4 import BeautifulSoup
from urllib.parse import urljoin
import google.generativeai as genai
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_google_genai import ChatGoogleGenerativeAI
import warnings
from dotenv import load_dotenv
os.environ["CUDA_VISIBLE_DEVICES"] = ""
app = Flask(__name__)
cors = CORS(app)
load_dotenv()
# # Define the model and feature extractor globally
# model = AutoModelForImageClassification.from_pretrained('carbon225/vit-base-patch16-224-hentai')
# feature_extractor = AutoFeatureExtractor.from_pretrained('carbon225/vit-base-patch16-224-hentai')
def load_model():
api_key=os.getenv("GOOGLE_API_KEY")
genai.configure(api_key=api_key)
model = ChatGoogleGenerativeAI(model="gemini-pro",
temperature=0.3)
return model
def load_embeddings():
embeddings = GoogleGenerativeAIEmbeddings(model = "models/embedding-001")
return embeddings
@app.route("/", methods=["GET"])
def default():
return json.dumps({"Server": "Working"})
@app.route("/extractimages",methods=["GET"])
def extract_images():
try:
src=request.args.get("src")
response = requests.get(src)
soup = BeautifulSoup(response.content,'html.parser')
img_urls=[]
img_tags = soup.select('div img')
for img_tag in img_tags:
img_url = urljoin(src, img_tag['src'])
img_urls.append(img_url)
return json.dumps({"images":img_urls})
except Exception as e:
return e
# @app.route("/predict", methods=["GET"])
# def predict():
# try:
# src = request.args.get("src")
# # Download image from the provided URL
# response = requests.get(src)
# response.raise_for_status()
# # Open and preprocess the image
# image = Image.open(BytesIO(response.content))
# image = image.resize((128, 128))
# # Extract features using the pre-trained feature extractor
# encoding = feature_extractor(images=image.convert("RGB"), return_tensors="pt")
# # Make a prediction using the pre-trained model
# with torch.no_grad():
# outputs = model(**encoding)
# logits = outputs.logits
# # Get the predicted class index and label
# predicted_class_idx = logits.argmax(-1).item()
# predicted_class_label = model.config.id2label[predicted_class_idx]
# # Return the predictions
# return json.dumps({"class": predicted_class_label})
# except requests.exceptions.RequestException as e:
# return json.dumps({"error": f"Request error: {str(e)}"})
# except Exception as e:
# return json.dumps({"error": f"An unexpected error occurred: {str(e)}"})
@app.route('/answer',methods=['POST'])
def answer():
api_key=os.getenv("GOOGLE_API_KEY")
genai.configure(api_key=api_key)
model=genai.GenerativeModel('gemini-pro')
query=request.get_json()['query']
final_query=f"""
Following are negative reviews about my products, suggest what are the key issues from the customer feedback:{query}
"""
response = model.generate_content(final_query)
return json.dumps({"message":response.text})
if __name__ == "__main__":
app.run(debug=True)