import gradio as gr import os from pytrends.request import TrendReq from openai import OpenAI pytrends = TrendReq( hl="en-US", tz=360, timeout=(10, 25), proxies=[ "https://34.203.233.13:80", ], retries=2, backoff_factor=0.1, requests_args={"verify": False}, ) kw_list = [""] client = OpenAI( # This is the default and can be omitted api_key=os.getenv("openaikey"), ) def fetch_clothing_themes_and_generate_banner_2(geo, start_date, end_date): # Initialize pytrends and OpenAI client pytrends = TrendReq(hl="en-US", tz=360) # openai.api_key = "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" # Define the keywords list for clothing related searches kw_list = [""] # Build payload for given geo and date range timeframe = f"{start_date} {end_date}" pytrends.build_payload(kw_list, timeframe=timeframe, geo=geo) # Fetch related queries all_top_queries = pytrends.related_queries() # Extract top and rising queries top_queries = all_top_queries[""]["top"] rising_queries = all_top_queries[""]["rising"] # Format the queries for the ChatGPT prompt formatted_queries = ", ".join( top_queries["query"].tolist() + rising_queries["query"].tolist() ) # Create a prompt for ChatGPT # prompt = f"From the following top and rising keywords in {geo} from {start_date} to {end_date}: {formatted_queries}, suggest the most fun and entertaining theme related to clothing. Select a topic based on one of the keywords. Just specify the theme with one sentence description of its fashion style. Make the description suitable for a metaverse avatar" prompt = f"Out of all the follwing keywords, which one is the most fun for a clothing themed topic? {formatted_queries}. Ignore commonly used words or apps like 'weather', 'tiktok' or 'instagram'. Focus on events that could be popular. Reply with a small phrase" print(prompt) # Pass the prompt to ChatGPT API chat_completion = client.chat.completions.create( model="gpt-4-1106-preview", messages=[ # {"role": "system", "content": "You are a fashion expert."}, {"role": "user", "content": prompt}, ], ) # Extract the theme suggestion theme_suggestion = chat_completion.choices[0].message.content return theme_suggestion, all_top_queries def greet(city, start_date_yyyy_mm_dd, end_date_yyyy_mm_dd): chat_completion = client.chat.completions.create( messages=[ { "role": "user", "content": f"ISO 3166-2 code for {city}. Only reply with one word. Reply GLOBAL if invalid", } ], model="gpt-3.5-turbo-1106", ) geo = chat_completion.choices[0].message.content.strip() timeframe = f"{start_date_yyyy_mm_dd} {end_date_yyyy_mm_dd}" pytrends.build_payload(kw_list, timeframe=timeframe, geo=geo) all_top_queries = pytrends.related_queries() top_queries = all_top_queries[""]["top"] rising_queries = all_top_queries[""]["rising"] return top_queries, rising_queries demo = gr.Interface( fn=greet, inputs=["text", "text", "text"], outputs=["dataframe", "dataframe"], ) if __name__ == "__main__": demo.launch()