-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathHome.py
102 lines (71 loc) · 3.1 KB
/
Home.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
##© 2024 Tushar Aggarwal. All rights reserved.(https://tushar-aggarwal.com)
##MoodMender[Towards-GenAI] (https://github.com/Towards-GenAI)
##################################################################################################
#Importing dependencies
import datetime
import streamlit as st
from pathlib import Path
import base64
import sys
import os
import logging
import warnings
import asyncio
# loop = asyncio.new_event_loop()
# asyncio.set_event_loop(loop)
from dotenv import load_dotenv
from typing import Any, Dict
import google.generativeai as genai
from langchain_core.callbacks import BaseCallbackHandler
from langchain_openai import ChatOpenAI
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.messages import HumanMessage
from langchain_community.tools import DuckDuckGoSearchRun
from crewai import Crew, Process, Agent, Task
from langchain_community.tools import DuckDuckGoSearchRun
search_tool = DuckDuckGoSearchRun()
#from src
from src.components.navigation import *
#Homepage
page_config("MoodMender", "🤖", "wide")
custom_style()
st.sidebar.image('./src/ygbj8rv2yafx6fsnqr2w.png')
google_api_key = st.sidebar.text_input("Enter your GeminiPro API key:", type="password")
######################################################################################
#Intializing llm
llm = ChatGoogleGenerativeAI(model="gemini-pro", verbose=True,
temperature=0.2, google_api_key=google_api_key)
######################################################################################
# Custom Handler for logging interactions
class CustomHandler(BaseCallbackHandler):
def __init__(self, agent_name: str) -> None:
super().__init__()
self.agent_name = agent_name
def on_chain_start(self, serialized: Dict[str, Any], outputs: Dict[str, Any], **kwargs: Any) -> None:
st.session_state.messages.append({"role": "assistant", "content": outputs['input']})
st.chat_message("assistant").write(outputs['input'])
def on_agent_action(self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any) -> None:
st.session_state.messages.append({"role": "assistant", "content": inputs['input']})
st.chat_message("assistant").write(inputs['input'])
def on_chain_end(self, outputs: Dict[str, Any], **kwargs: Any) -> None:
st.session_state.messages.append({"role": self.agent_name, "content": outputs['output']})
st.chat_message(self.agent_name).write(outputs['output'])
def main():
st.title("🤖MoodMender🤖")
st.markdown('''
<style>
div.block-container{padding-top:0px;}
font-family: 'Roboto', sans-serif; /* Add Roboto font */
color: blue; /* Make the text blue */
</style>
''',
unsafe_allow_html=True)
st.markdown(
"""
### Your Paris Syndrome AI Psychologist, powered by Gemini Pro & CrewAI & [Towards-GenAI](https://github.com/Towards-GenAI)
"""
)
if __name__ == "__main__":
main()
with st.sidebar:
footer()