|
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) |
|
|