table / main.py
devin-ai's picture
Update main.py
3f5e21b verified
Raw
History Blame Contribute Delete
2.34 kB
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=['*'],
allow_credentials=True,
allow_methods=['*'],
allow_headers=['*']
)
model=genai.GenerativeModel("gemini-2.0-flash-lite")
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")