File size: 2,631 Bytes
98963dd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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.")