Spaces:
Running
Running
# from langchain.chat_models import ChatOpenAI | |
from langchain_community.chat_models import ChatOpenAI | |
from langchain.schema import AIMessage, HumanMessage | |
import openai | |
import gradio as gr | |
import os | |
import sqlite3 | |
os.environ["OPENAI_API_KEY"] = os.getenv('OPENAI_API_KEY') | |
llm = ChatOpenAI(temperature=1.0, model='gpt-4o-mini') | |
question_json = os.getenv('QUESTION_JSON') | |
cv_json = os.getenv('CV_JSON') | |
DB_FILE = "./messages.db" | |
db = sqlite3.connect(DB_FILE) | |
# Create table if it doesn't already exist | |
try: | |
db.execute("SELECT * FROM messages").fetchall() | |
db.close() | |
except sqlite3.OperationalError: | |
db.execute( | |
''' | |
CREATE TABLE messages ( | |
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, | |
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, | |
message TEXT | |
) | |
''') | |
db.commit() | |
db.close() | |
def predict(message, history): | |
if find(message): | |
prompt = os.getenv('PREDICT_PROMPT').format(question_json, message) | |
response = llm([HumanMessage(content=prompt)]) | |
return response.content | |
prompt = os.getenv('PREDICT_PROMPT1').format(cv_json, message) | |
response = llm([HumanMessage(content=prompt)]) | |
return response.content | |
def find(message): | |
prompt = os.getenv('FIND_PROMPT').format(message) | |
response = llm([HumanMessage(content=prompt)]) | |
if response.content.strip() == 'Yes': | |
return True | |
else: | |
return False | |
# Example inputs as buttons | |
examples = [ | |
"What are Jisu's current projects?", | |
"What are Jisu's recent news?", | |
"What are Jisu's publications?", | |
"How can I reach out to Jisu?", | |
] | |
# Extend chatbot to fullheight | |
# Source: https://stackoverflow.com/questions/78536986/a-chat-with-gradio-how-to-modify-its-screen-appearance | |
css = """ | |
#chatbot { | |
flex-grow: 1 !important; | |
overflow: auto; | |
} | |
""" | |
with gr.Blocks(theme='gradio/soft', fill_height=True) as demo: | |
gr.Markdown( | |
""" | |
<img src="http://jisulog.kim/profile.png" alt="Profile Image" style="width: 200px; height: auto; border-radius: 50%;"> | |
# πΒ Hi, I am Jisu Kim! | |
I am a data science intern at π**Tesla** and an MS candidate in the **Interactive Computing** at π**Georgia Tech**. | |
I am advised by [**Ashok Goel**](https://dilab.gatech.edu/ashok-k-goel/) and [**Richmond Wong**](https://richmondywong.com/), and was previously advised by [**Juho Kim**](https://juhokim.com/) at πͺΏ**KAIST**. | |
My research interests lie at the intersection of human-computer interaction (HCI) and artificial intelligence (AI). | |
I am passionate about helping users better understand and collaborate with Artificial Intelligence (AI) to enhance their productivity and creativity, especially in creative tasks. | |
Driven by my belif in the power of collaboration, I am applying to Ph.D. programs for Fall 2025! | |
[**LinkedIn**](https://www.linkedin.com/in/jisulog/) | [**Twitter**](https://x.com/jisukiim?s=21) | [**CV**](https://jisulog.kim/JisuKim_CV.pdf) | |
[**YouTube**](https://youtu.be/btZOScj22jE?si=0zz5y61KNLsBJXcm) | [**Blog (in Korean)**](https://ddiddu.medium.com) | [**Let's Talk!**](https://calendly.com/jisulogkim) | |
--- | |
# π€ Hi, I am Jisu's personal assistant! | |
**Ask about Jisu and I will provide you with the information as far as I know.** | |
I am currently under development. If there are errors or improvements, feel free to share with Jisu! You don't know how to reach out to Jisu? **Ask me!** | |
""") | |
gr.ChatInterface(fn=predict, chatbot=gr.Chatbot(elem_id="chatbot", render=False), examples=examples) | |
if __name__ == "__main__": | |
demo.launch(share=True) |