Dc0dE's picture
Upload 9 files
b9a2f1d verified
## Integrate our code GEMINI API
import os
import pathlib
import textwrap
from PIL import Image
from constants import gemini_key
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain import PromptTemplate
from langchain.chains import LLMChain
import google.generativeai as genai
from langchain.memory import ConversationBufferMemory
from google.generativeai import GenerativeModel
from google.generativeai.types import HarmCategory, HarmBlockThreshold, HarmProbability
from langchain.chains import SequentialChain
import streamlit as st
# streamlit framework
st.set_page_config(
page_title="OxSecure A.I",
page_icon="πŸ”’",
layout="wide"
)
# Load custom CSS
def load_css(file_name):
with open(file_name) as f:
st.markdown(f'<style>{f.read()}</style>', unsafe_allow_html=True)
# Load the CSS file
load_css("ui/Style.css")
#API configuration
os.environ["GOOGLE_API_KEY"]=gemini_key
genai.configure(api_key = os.environ['GOOGLE_API_KEY'])
## Function to load OpenAI model and get respones
def get_gemini_response(input, image):
model = genai.GenerativeModel('gemini-1.5-pro-latest')
if input != "":
response = model.generate_content(
[input, image],
safety_settings={
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
HarmProbability:HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE
}
)
else:
response = model.generate_content(
image,
safety_settings={
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
HarmProbability:HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE
}
)
return response.text
st.title('OxSecure Intelligence 🧠')
st.caption('Cybersecurity Best practices for Infrastructure')
st.subheader('By :- Aadi πŸ§‘β€πŸ’»')
st.text('πŸš€ Empower Tomorrow, πŸ›‘οΈ Secure Today: Unleash the Power of Cybersecurity Brilliance! πŸ’»βœ¨ ')
input_text=st.text_input("Search Your Desire Security Related Topic πŸ”")
input=st.text_input("Input Prompt: ",key="input")
uploaded_file = st.file_uploader("Choose an image...", type=["jpg", "jpeg", "png"])
image=""
if uploaded_file is not None:
image = Image.open(uploaded_file)
st.image(image, caption="Uploaded Image.", use_column_width=True)
submit=st.button("Tell me about the image")
if submit:
response=get_gemini_response(input,image)
st.subheader("The Response is")
st.write(response)
# Prompt Templates
first_input_prompt=PromptTemplate(
input_variables=['Topic'],
template="Tell me everything about and explain in so informative descriptive way about {Topic} "
)
# Memory
Topic_memory = ConversationBufferMemory(input_key='Topic', memory_key='chat_history')
Policy_memory = ConversationBufferMemory(input_key='security policies', memory_key='chat_history')
Practice_memory = ConversationBufferMemory(input_key='Practice', memory_key='description_history')
# GEMINI LLMS
llm = ChatGoogleGenerativeAI(
model="gemini-1.5-pro-latest",
safety_settings={
HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
HarmProbability:HarmBlockThreshold.BLOCK_NONE,
HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE
}
)
chain=LLMChain(llm=llm,prompt=first_input_prompt,verbose=True,output_key='security policies',memory=Topic_memory)
# Prompt Templates
second_input_prompt=PromptTemplate(
input_variables=['security policies'],
template="write best {security policies} and perfect code snippet for implementing secure coding to this {Topic} and give me all important full secure coding principles about {Topic} use codes snippet for every countersome points . "
)
chain2=LLMChain(
llm=llm,prompt=second_input_prompt,verbose=True,output_key='Practice',memory=Policy_memory)
# Prompt Templates
third_input_prompt=PromptTemplate(
input_variables=['Practice'],
template="Implement 5 major best Cybersecurity {Practice} for this {Topic} that helps better security postures into infrastructure business. give Major cyberattack which is done by this {Topic} and write about malware which is developed by this {Topic}"
)
chain3=LLMChain(llm=llm,prompt=third_input_prompt,verbose=True,output_key='description',memory=Practice_memory)
parent_chain=SequentialChain(
chains=[chain,chain2,chain3],input_variables=['Topic'],output_variables=['security policies','Practice','description'],verbose=True)
if input_text:
st.text(parent_chain({'Topic':input_text}))
with st.expander('Your Topic'):
st.info(Topic_memory.buffer)
with st.expander('Major Practices'):
st.info(Practice_memory.buffer)
st.markdown("---")
st.markdown(" Created with ❀️ by Aditya Pandey ")