Spaces:
Sleeping
Sleeping
import gradio as gr | |
import markdown as md | |
import yaml | |
from ContentGeneratorAgent import run_crew_cga, set_model, llm_models | |
from GameBuilderAgent import run_crew_game | |
from MarketingPostGeneratorAgent import run_crew_mpga | |
from TripPlanner import run_crew_tp | |
import base64 | |
def toggle_serper_input(choice): | |
return gr.Textbox(visible=(choice == "Yes")) | |
def update_game_instructions(example_key): | |
# Load the game design examples from the YAML file | |
with open('gamedesign.yaml', 'r', encoding='utf-8') as f: | |
examples = yaml.safe_load(f) | |
return examples.get(example_key, "") | |
def encode_image(image_path): | |
with open(image_path, "rb") as image_file: | |
return base64.b64encode(image_file.read()).decode('utf-8') | |
# Encode the images | |
github_logo_encoded = encode_image("Images/github-logo.png") | |
linkedin_logo_encoded = encode_image("Images/linkedin-logo.png") | |
website_logo_encoded = encode_image("Images/ai-logo.png") | |
# UI Setup | |
with gr.Blocks(theme=gr.themes.Soft(font=[gr.themes.GoogleFont("Roboto Mono")]), | |
css='footer {visibility: hidden}') as demo: | |
gr.Markdown("# AI Agent Nexus π€π΅π»") | |
with gr.Tabs(): | |
with gr.TabItem("Intro"): | |
gr.Markdown(md.description) | |
# Tab for SEO Content Generator Agent | |
with gr.TabItem("SEO Content Agent"): | |
with gr.Accordion("π Description:", open=False): | |
gr.Markdown(md.seo_content) | |
with gr.Accordion("How to get GEMINI API KEY", open=False): | |
gr.Markdown(md.gemini_api_key) | |
with gr.Accordion("How to get SERPER API KEY", open=False): | |
gr.Markdown(md.serper_api_key) | |
with gr.Row(): | |
with gr.Column(scale=1): | |
model_dropdown = gr.Dropdown( | |
llm_models, | |
label="1. Select AI Model", | |
value=llm_models[0] | |
) | |
gemini_key = gr.Textbox( | |
label="2. Enter Gemini API Key", | |
type="password", | |
placeholder="Paste your Gemini API key here..." | |
) | |
search_toggle = gr.Radio( | |
["Yes", "No"], | |
label="3. Enable Online Search?", | |
value="No" | |
) | |
serper_key = gr.Textbox( | |
label="4. Enter Serper API Key", | |
type="password", | |
visible=False, | |
placeholder="Paste your Serper API key if enabled..." | |
) | |
topic_input = gr.Textbox( | |
label="5. Enter Content Topic", | |
placeholder="Enter your article topic here..." | |
) | |
run_btn = gr.Button("Generate Content", variant="primary") | |
with gr.Column(scale=3): | |
output = gr.Markdown( | |
label="Generated Content", | |
value="Your content will appear here..." | |
) | |
with gr.Accordion("Process Logs", open=True): | |
logs = gr.Markdown() | |
# Event handlers for SEO Content Generator | |
model_dropdown.change(set_model, model_dropdown) | |
search_toggle.change( | |
toggle_serper_input, | |
inputs=search_toggle, | |
outputs=serper_key | |
) | |
run_btn.click( | |
run_crew_cga, | |
inputs=[gemini_key, search_toggle, serper_key, topic_input], | |
outputs=[output, logs], | |
show_progress="full" | |
) | |
# Tab for Game Dev Agent | |
with gr.TabItem("Game Dev Agent"): | |
with gr.Accordion('π Description:', open=False): | |
gr.Markdown(md.game_dev) | |
with gr.Accordion("How to get GEMINI API KEY", open=False): | |
gr.Markdown(md.gemini_api_key) | |
with gr.Row(): | |
with gr.Column(scale=1): | |
game_model_dropdown = gr.Dropdown( | |
llm_models, | |
label="1. Select AI Model", | |
value=llm_models[0] | |
) | |
game_gemini_key = gr.Textbox( | |
label="2. Enter Gemini API Key", | |
type="password", | |
placeholder="Paste your Gemini API key here..." | |
) | |
game_example_dropdown = gr.Dropdown( | |
choices=["pacman", "pacman2", "snake", "space_invaders", "Tetris", "Frogger", "Chess", "Go", | |
"Reversi"], | |
label="3. Select Example", | |
value="pacman" | |
) | |
game_load_example_btn = gr.Button("Load Example", variant="secondary") | |
game_instructions = gr.Textbox( | |
label="4. Enter Game Design Instructions", | |
placeholder="Enter your game design instructions here...", | |
lines=5 | |
) | |
game_run_btn = gr.Button("Generate Game Code", variant="primary") | |
with gr.Column(scale=3): | |
game_output = gr.Markdown( | |
label="Generated Game Code", | |
value="Your game code will appear here..." | |
) | |
with gr.Accordion("Process Logs", open=False): | |
game_logs = gr.Markdown() | |
# Event handlers for Game Dev Agent | |
game_model_dropdown.change(set_model, game_model_dropdown) | |
game_load_example_btn.click( | |
update_game_instructions, | |
inputs=[game_example_dropdown], | |
outputs=[game_instructions] | |
) | |
game_run_btn.click( | |
run_crew_game, | |
inputs=[game_gemini_key, game_instructions], | |
outputs=[game_output, game_logs], | |
show_progress="full" | |
) | |
# Tab for Marketing Posts Generator Agent | |
with gr.TabItem("Marketing Posts Generator Agent"): | |
with gr.Accordion("π Description: ", open=False): | |
gr.Markdown(md.marking_post_gen_agent) | |
with gr.Accordion("How to get GEMINI API KEY", open=False): | |
gr.Markdown(md.gemini_api_key) | |
with gr.Accordion("How to get SERPER API KEY", open=False): | |
gr.Markdown(md.serper_api_key) | |
with gr.Row(): | |
with gr.Column(scale=1): | |
mpga_model_dropdown = gr.Dropdown( | |
llm_models, | |
label="1. Select AI Model", | |
value=llm_models[0] | |
) | |
mpga_gemini_key = gr.Textbox( | |
label="2. Enter Gemini API Key", | |
type="password", | |
placeholder="Paste your Gemini API key here..." | |
) | |
mpga_serper_key = gr.Textbox( | |
label="3. Enter Serper API Key", | |
type="password", | |
placeholder="Paste your Serper API key here..." | |
) | |
customer_domain = gr.Textbox( | |
label="4. Enter Customer Domain", | |
placeholder="Enter the customer domain here..." | |
) | |
project_description = gr.Textbox( | |
label="5. Enter Project Description", | |
placeholder="Enter the project description here..." | |
) | |
mpga_run_btn = gr.Button("Generate Marketing Posts", variant="primary") | |
with gr.Column(scale=3): | |
mpga_output = gr.Markdown( | |
label="Generated Marketing Posts", | |
value="Your marketing posts will appear here..." | |
) | |
with gr.Accordion("Process Logs", open=False): | |
mpga_logs = gr.Markdown() | |
# Event handlers for Marketing Posts Generator Agent | |
mpga_model_dropdown.change(set_model, mpga_model_dropdown) | |
mpga_run_btn.click( | |
run_crew_mpga, | |
inputs=[mpga_gemini_key, customer_domain, project_description], | |
outputs=[mpga_output, mpga_logs], | |
show_progress="full" | |
) | |
# Tab for Trip Planner Agent | |
with gr.TabItem("Trip Planner Agent"): | |
with gr.Accordion("π Description: ", open=False): | |
gr.Markdown(md.trip_planner_agent) | |
with gr.Accordion("How to get GEMINI API KEY", open=False): | |
gr.Markdown(md.gemini_api_key) | |
with gr.Row(): | |
with gr.Column(scale=1): | |
tp_model_dropdown = gr.Dropdown( | |
llm_models, | |
label="1. Select AI Model", | |
value=llm_models[0] | |
) | |
tp_gemini_key = gr.Textbox( | |
label="2. Enter Gemini API Key", | |
type="password", | |
placeholder="Paste your Gemini API key here..." | |
) | |
origin_input = gr.Textbox( | |
label="3. Enter Origin (Your Starting Location)", | |
placeholder="Enter your origin city..." | |
) | |
cities_input = gr.Textbox( | |
label="4. Enter City Options", | |
placeholder="List the cities you're interested in visiting..." | |
) | |
trip_date_input = gr.Textbox( | |
label="5. Enter Trip Date", | |
placeholder="Enter your trip date (e.g., YYYY-MM-DD to YYYY-MM-DD)..." | |
) | |
interests_input = gr.Textbox( | |
label="6. Enter Traveler Interests", | |
placeholder="Enter your interests/hobbies..." | |
) | |
tp_run_btn = gr.Button("Generate Trip Plan", variant="primary") | |
with gr.Column(scale=3): | |
tp_output = gr.Markdown( | |
label="Trip Plan", | |
value="Your trip plan will appear here..." | |
) | |
with gr.Accordion("Process Logs", open=True): | |
tp_logs = gr.Markdown() | |
# Event handlers for Trip Planner Agent | |
tp_model_dropdown.change(set_model, tp_model_dropdown) | |
tp_run_btn.click( | |
run_crew_tp, | |
inputs=[tp_gemini_key, origin_input, cities_input, trip_date_input, interests_input], | |
outputs=[tp_output, tp_logs], | |
show_progress="full" | |
) | |
with gr.TabItem("AI Agent Dev Agent"): | |
gr.Markdown("# Comming soon ...") | |
gr.HTML(md.footer.format(github_logo_encoded, linkedin_logo_encoded, website_logo_encoded)) | |
if __name__ == "__main__": | |
demo.launch() |