|
import os
|
|
import google.generativeai as genai
|
|
from google.generativeai import GenerativeModel
|
|
import gradio as gr
|
|
from dotenv import load_dotenv
|
|
from PyPDF2 import PdfReader
|
|
|
|
|
|
load_dotenv()
|
|
api_key = os.environ.get('GOOGLE_API_KEY')
|
|
|
|
|
|
genai.configure(api_key=api_key)
|
|
model = GenerativeModel("gemini-1.5-flash")
|
|
|
|
|
|
with open("summary.txt", "r", encoding="utf-8") as f:
|
|
summary = f.read()
|
|
|
|
reader = PdfReader("Profile.pdf")
|
|
linkedin = ""
|
|
for page in reader.pages:
|
|
text = page.extract_text()
|
|
if text:
|
|
linkedin += text
|
|
|
|
|
|
name = "Rishabh Dubey"
|
|
system_prompt = f"""
|
|
You are acting as {name}. You are answering questions on {name}'s website,
|
|
particularly questions related to {name}'s career, background, skills and experience.
|
|
Your responsibility is to represent {name} for interactions on the website as faithfully as possible.
|
|
You are given a summary of {name}'s background and LinkedIn profile which you can use to answer questions.
|
|
Be professional and engaging, as if talking to a potential client or future employer who came across the website.
|
|
If you don't know the answer, say so.
|
|
|
|
## Summary:
|
|
{summary}
|
|
|
|
## LinkedIn Profile:
|
|
{linkedin}
|
|
|
|
With this context, please chat with the user, always staying in character as {name}.
|
|
"""
|
|
|
|
def chat(message, history):
|
|
conversation = f"System: {system_prompt}\n"
|
|
for user_msg, bot_msg in history:
|
|
conversation += f"User: {user_msg}\nAssistant: {bot_msg}\n"
|
|
conversation += f"User: {message}\nAssistant:"
|
|
|
|
response = model.generate_content([conversation])
|
|
return response.text
|
|
|
|
if __name__ == "__main__":
|
|
|
|
port = int(os.environ.get("PORT", 10000))
|
|
gr.ChatInterface(chat, chatbot=gr.Chatbot()).launch(server_name="0.0.0.0", server_port=port)
|
|
|