Spaces:
Runtime error
Runtime error
File size: 3,279 Bytes
ea1e36e a98505a ea1e36e 7f909a0 a98505a 1bb6c90 7f909a0 a98505a ea1e36e a98505a 7f909a0 ea1e36e 5c7d00e 7f909a0 a98505a 5c7d00e 7f909a0 ea1e36e 5c7d00e ea1e36e a41e24b ea1e36e 7f909a0 ea1e36e 7f909a0 a98505a ea1e36e a41e24b ea1e36e a98505a |
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 |
import streamlit as st
# Import from the correct package
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain.tools import Tool
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.tools import DuckDuckGoSearchRun
import os
# Configure LangChain LLM with Gemini
llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash", google_api_key=os.getenv("gemini_api"))
# Use DuckDuckGo Search (no API key needed)
ddgs = DuckDuckGoSearchRun()
search_tool = Tool(
name="Web Search",
func=ddgs.run,
description="Searches the web for relevant certification information."
)
# Create LangChain agent
agent = initialize_agent(
tools=[search_tool],
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
def azure_cert_bot(cert_name):
query = f"Microsoft Azure {cert_name} certification curriculum site:microsoft.com"
search_results = ddgs.run(query).split("\n")
prompt = f"Based on the following curriculum details, generate key questions and answers in markdown format for the {cert_name} certification exam. Do not include any metadata or unnecessary text, only return the formatted Q&A:\n{search_results}"
response = llm.invoke(prompt)
try:
response_text = response.get("content", "No response generated.") if isinstance(response, dict) else response
response_text = "\n".join([line for line in response_text.split("\n") if not line.lower().startswith("content=") and "metadata" not in line.lower()])
except Exception as e:
response_text = f"Error processing response: {str(e)}"
return search_results, response_text
# Streamlit UI Enhancements
st.set_page_config(page_title="Azure Certification Prep Assistant", layout="wide")
# Custom Styling
st.markdown("""
<style>
body {
font-family: 'Arial', sans-serif;
}
.stApp {
background-color: #f5f7fa;
}
.title {
text-align: center;
color: #1f77b4;
font-size: 36px;
font-weight: bold;
}
.subheader {
color: #ff5733;
font-size: 24px;
font-weight: bold;
}
.markdown-text-container {
background-color: white;
padding: 15px;
border-radius: 10px;
box-shadow: 2px 2px 10px rgba(0,0,0,0.1);
}
</style>
""", unsafe_allow_html=True)
st.markdown("<div class='title'>Azure Certification Prep Assistant</div>", unsafe_allow_html=True)
cert_name = st.text_input("Enter Azure Certification Name (e.g., AZ-900)", "")
if st.button("Get Certification Details"):
if cert_name:
links, qa_content = azure_cert_bot(cert_name)
st.markdown("<div class='subheader'>Certification Links & Curriculum</div>", unsafe_allow_html=True)
for link in links:
if link.strip():
st.markdown(f"<div class='markdown-text-container'>- <a href='{link}' target='_blank'>{link}</a></div>", unsafe_allow_html=True)
st.markdown("<div class='subheader'>Exam Questions & Answers</div>", unsafe_allow_html=True)
st.markdown(f"<div class='markdown-text-container'>{qa_content}</div>", unsafe_allow_html=True)
else:
st.warning("Please enter a certification name.") |