ILLERRAPS's picture
Upload folder using huggingface_hub
3a0d9e0 verified
import os
from flask_sqlalchemy import SQLAlchemy
from langchain_groq import ChatGroq
from langchain.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from gradio import Interface, Textbox, Dropdown, Markdown
from textwrap import dedent
import requests
import json
import nest_asyncio
# Function to fetch recent news articles
def fetch_recent_news():
# Simulate fetching news articles from the dataset
articles = []
with open('.gradio/flagged/dataset1.csv', 'r') as file:
for line in file:
articles.append(line.strip()) # Assuming each line is a news title
return articles
# Function to analyze news data for trends
def analyze_news_for_trends():
news_titles = fetch_recent_news()
# Simple analysis: return the top news titles as trends
# Format the news titles into a Markdown string
trending_topics = "\n".join(f"- {title}" for title in news_titles[:5])
return f"### Trending Topics:\n{trending_topics}"
# Apply nested asyncio
nest_asyncio.apply()
# Set the API key for Groq
os.environ["GROQ_API_KEY"] = "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"
# Helper function to create agents
def create_agent(system_prompt: str, model_name: str) -> ChatGroq:
prompt = ChatPromptTemplate.from_messages([
("system", system_prompt),
("human", "{input}")
])
llm = ChatGroq(model=model_name)
return prompt | llm | StrOutputParser()
# Combined function that handles all tasks
def handle_task(task_type, query):
if task_type == "Trends":
# Fetch and return trending topics based on recent news
return analyze_news_for_trends()
elif task_type == "Script Generation":
system_prompt = """
You are a creative expert who writes scripts with the perfect formula for TikTok virality.
Generate a detailed, engaging script based on the query.
"""
agent = create_agent(system_prompt, model_name="llama3-8b-8192")
return agent.invoke({"input": query})
elif task_type == "Hashtag Generation":
system_prompt = """
You are skilled at generating hashtags and tags for social media platforms.
Based on the query, provide the following:
- 30 unique TikTok viral tags
- 50 most popular hashtags
- 50 trending hashtags
- 50 FYP-related tags
- 25 YouTube viral keyword tags
- A clickbait title with emojis
"""
agent = create_agent(system_prompt, model_name="llama3-8b-8192")
return agent.invoke({"input": query})
# Function to simulate fetching TikTok profile data
def fetch_tiktok_profile_data(profile_url):
# Make an actual API call to fetch TikTok profile data
response = requests.get(f"https://api.tiktok.com/profile?url={profile_url}") # Check if this URL is correct
print(f"Fetching profile data from: {response.url}") # Log the URL being fetched
print(f"Response Status Code: {response.status_code}") # Log the response status code
if response.status_code == 200:
return response.json() # Assuming the API returns JSON data
else:
return {"error": "Failed to fetch profile data"}
# Create a dropdown for task selection
task_options = ["Trends", "Script Generation", "Hashtag Generation", "Fetch TikTok Profile"]
# Create a dropdown for task selection
task_options = ["Trends", "Script Generation", "Hashtag Generation", "Fetch TikTok Profile"]
# Gradio interface
interface = Interface(
fn=handle_task,
inputs=[
Dropdown(label="Select Task", choices=task_options),
Textbox(label="Enter Query", placeholder="Enter your query here...")
],
outputs=Markdown(label="Output"),
title="Multi-Task Social Media Assistant",
description="Choose a task (Trends, Script Generation, or Hashtag Generation) and enter your query to get tailored responses."
)
# Launch the interface
if __name__ == "__main__":
interface.launch(debug=True, share=True)