table / main.py
devin-ai's picture
Upload 7 files
575f0f7 verified
from fastapi import FastAPI, HTTPException
from fastapi.middleware.cors import CORSMiddleware
import google.generativeai as genai
import os
import requests
import pandas as pd
import validators
from sklearn.feature_extraction.text import TfidfVectorizer
from dotenv import load_dotenv
load_dotenv()
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
df=pd.read_csv("salaries.csv")
app = FastAPI()
origins=[
"http://localhost:5173",
]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*']
)
model=genai.GenerativeModel("gemini-1.5-flash")
df_combined = df.astype(str).apply(lambda x: ' '.join(x), axis=1).tolist()
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df_combined)
def genetate_gemini_content(prompt,content):
response=model.generate_content([prompt,content])
return response.text
work_year = df['work_year']
job_titles = df['job_title']
salaries = df['salary']
experience_level = df['experience_level']
employment_type = df['employment_type']
salary_in_usd = df['salary_in_usd']
company_size = df['company_size']
# Combine all columns as strings for vectorization (if needed)
df_combined = df.astype(str).apply(lambda x: ' '.join(x), axis=1).tolist()
# Use TF-IDF Vectorizer for embeddings
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df_combined)
prompt = f"""
I have a dataset with the following salary information:
Work Year: {work_year.tolist()}
Job Titles: {job_titles.tolist()}
Salaries (in USD): {salary_in_usd.tolist()}
Experience Level: {experience_level.tolist()}
Employment Type: {employment_type.tolist()}
Company Size: {company_size.tolist()}
Based on this data, can you answer the following question:
Please provide a short and direct answer based on the data. No extra explanations are needed, just the answer less than 2 lines and dont use "\ n" or any special charcher other than related to the data .
"""
@app.get("/hi")
async def ee():
return {"de":"hehe"}
@app.post("/webqa")
async def webchat(question:str):
try:
response=model.generate_content([prompt,question])
print(response.text)
return response.text
except:
raise HTTPException(status_code=500, detail="Internal Server Error")