Spaces:
Sleeping
Sleeping
import uuid | |
import asyncio | |
import os | |
import gradio as gr | |
from dotenv import load_dotenv | |
from agent import root_agent | |
from google.adk.runners import Runner | |
from google.adk.sessions import InMemorySessionService | |
from google.genai import types | |
from git import get_git_show | |
load_dotenv() | |
session_service = InMemorySessionService() | |
APP_NAME = "Social Media Post Generator" | |
USER_ID = "ahsanayaz" | |
async def run_agent_on_changes(changes: str) -> str: | |
SESSION_ID = str(uuid.uuid4()) | |
session = await session_service.create_session( | |
app_name=APP_NAME, | |
user_id=USER_ID, | |
session_id=SESSION_ID, | |
state={"changes": changes}, | |
) | |
runner = Runner( | |
agent=root_agent, | |
session_service=session_service, | |
app_name=APP_NAME, | |
) | |
user_query = types.Content( | |
role="user", | |
parts=[types.Part(text=changes)], | |
) | |
response_text = "" | |
async for event in runner.run_async( | |
user_id=USER_ID, | |
session_id=SESSION_ID, | |
new_message=user_query, | |
): | |
if event.is_final_response(): | |
if event.content and event.content.parts: | |
response_text = event.content.parts[0].text | |
return response_text | |
def generate_suggestions(input_text: str) -> str: | |
if input_text.strip().startswith("http"): | |
try: | |
changes = get_git_show(input_text.strip()) | |
except Exception as e: | |
return f"Error fetching Git data: {e}" | |
else: | |
changes = input_text | |
return asyncio.run(run_agent_on_changes(changes)) | |
iface = gr.Interface( | |
fn=generate_suggestions, | |
inputs=gr.Textbox(lines=10, label="Enter GitHub URL or Code"), | |
outputs=gr.Textbox(lines=10, label="AI Suggestions"), | |
title="Git Code/Change Suggestion Agent", | |
description="Enter a GitHub URL or paste code to get suggestions using the root_agent", | |
) | |
if __name__ == "__main__": | |
iface.launch(share=True) | |