import os from dotenv import load_dotenv import gradio as gr from langchain import PromptTemplate from langchain_huggingface import HuggingFaceEndpoint # Load environment variables load_dotenv() HF_TOKEN = os.getenv("HF_TOKEN") # Initialize the HuggingFace model llm = HuggingFaceEndpoint( repo_id="mistralai/Mistral-7B-Instruct-v0.3", huggingfacehub_api_token=HF_TOKEN, temperature=0.7, max_new_tokens=200 ) # Define a prompt template for generating a blog TEMPLATE = """ Write a detailed blog post on the following topic: Topic: {topic} Make sure the blog post is informative, engaging, and well-structured. """ # Create a prompt template instance blog_prompt_template = PromptTemplate(input_variables=["topic"], template=TEMPLATE) prompt = blog_prompt_template # Initialize the LLMChain blog_chain = llm | prompt def generate_blog_post(topic: str, author_name: str) -> str: if topic: # Generate the blog post blog_post = blog_chain.run({"topic": topic}) # Add author name if provided if author_name: blog_post = f"**By {author_name}**\n\n" + blog_post return blog_post else: return "Please enter a topic for the blog post." # Define the Gradio interface interface = gr.Interface( fn=generate_blog_post, inputs=[ gr.Textbox(label="Blog Topic", placeholder="Enter the topic here"), gr.Textbox(label="Author Name", placeholder="Optional", optional=True) ], outputs="text", title="AI Blog Generator", description="Welcome to the AI Blog Generator. This tool allows you to generate high-quality, engaging blog posts in just a few clicks. Simply provide a topic, and the AI will create a detailed blog post for you.", theme="default" ) if __name__ == "__main__": interface.launch()