instructor_assistant / course_manager.py
joelazo
Adding the HF deplyment configuration.
49d9ad8
import gradio as gr
from coordinator_agent import CoordinatorAgent
from dotenv import load_dotenv
from openai.types.responses import ResponseTextDeltaEvent
from agents import Runner
load_dotenv(override=True)
async def run(query: str):
coordinator_agent = CoordinatorAgent().get_agent()
result = Runner.run_streamed(coordinator_agent, input=query, max_turns=30)
response = ""
status = ""
async for event in result.stream_events():
if event.type == "raw_response_event" and isinstance(event.data, ResponseTextDeltaEvent) and event.data.delta:
response += event.data.delta
yield response, status
elif event.type == "run_item_stream_event":
item = event.item
item_type = getattr(item, "type", "")
if item_type == "tool_call_item":
tool_name = getattr(item.raw_item, 'name', '')
log_msg = f"Tool call: {tool_name}\n"
status += log_msg
yield response, status
def clear_fields():
return "", ""
def update_clear_button(query: str):
return gr.update(interactive=bool(query.strip()))
with gr.Blocks(theme=gr.themes.Glass(primary_hue="fuchsia")) as ui:
gr.Markdown("# Course Instructor Assistant")
query_textbox = gr.Textbox(label="What topic would you like to create a course about?", placeholder="e.g. 'How to create your AI double'")
with gr.Row():
run_button = gr.Button("Run", variant="primary")
clear_button = gr.Button("Clear", variant="secondary", interactive=False)
logs = gr.Textbox(label="Logs", placeholder="Logs will appear here", lines=5)
report = gr.Markdown(label="Report")
run_button.click(fn=run, inputs=query_textbox, outputs=[report, logs])
query_textbox.submit(fn=run, inputs=query_textbox, outputs=[report, logs])
clear_button.click(fn=clear_fields, outputs=[query_textbox, logs])
query_textbox.change(fn=update_clear_button, inputs=query_textbox, outputs=clear_button)
if __name__ == "__main__":
ui.launch(share=True, inbrowser=True)