Spaces:
Running
Running
import streamlit as st | |
import google.generativeai as genai | |
from dotenv import load_dotenv | |
import os | |
load_dotenv() | |
st.set_page_config( | |
page_title="Blog Generation Using Google Gemini", | |
layout="centered", | |
initial_sidebar_state="collapsed" | |
) | |
# Configure the Google Gemini API | |
api_key = os.getenv("GOOGLE_API_KEY") | |
genai.configure(api_key=api_key) | |
# Function to list available models | |
def list_available_models(): | |
try: | |
models = genai.list_models() | |
return [model.name for model in models if "generateContent" in model.supported_generation_methods] | |
except Exception as e: | |
st.error(f"Error listing models: {e}") | |
return [] | |
# Generate blog content using Gemini | |
def generate_blog(keywords, no_words, blog_style): | |
try: | |
available_models = list_available_models() | |
if not available_models: | |
return "Unable to retrieve available models. Please check your API key and network connection." | |
# Select the first available generative model | |
model_name = available_models[6] | |
model = genai.GenerativeModel(model_name) | |
prompt = f"Generate a blog for {blog_style} job profile based on the keywords '{keywords}' within {no_words} words." | |
response = model.generate_content(prompt) | |
return response.text | |
except Exception as e: | |
return f"Error generating content: {e}" | |
st.header("Blog Generation App :earth_americas:") | |
st.write("This app uses Google's Gemini AI for generating blogs. Please provide your inputs below:") | |
# Input fields | |
keywords = st.text_input("Enter the Blog Keywords") | |
col1, col2 = st.columns([5, 5]) | |
with col1: | |
no_words = st.text_input("Number of Words") | |
with col2: | |
blog_style = st.selectbox( | |
"Writing the blog for", | |
["Researchers", "Engineers", "Doctors", "Content Creators", "Sportsman", "Businessman", "Common People"], | |
index=0 | |
) | |
# Display available models | |
# if st.checkbox("Show available models"): | |
# models = list_available_models() | |
# if models: | |
# st.write("Available models:") | |
# for model in models: | |
# st.write(f"- {model}") | |
# else: | |
# st.write("No models available or unable to retrieve models.") | |
submit = st.button("Generate Blog") | |
# Generate response | |
if submit: | |
if keywords and no_words.isdigit() and int(no_words) > 0: | |
st.write("Generating blog...") | |
response = generate_blog(keywords, no_words, blog_style) | |
st.markdown(f"### Generated Blog:\n\n{response}") | |
else: | |
st.warning("Please provide valid inputs for all fields.") |