|
import requests |
|
import gradio as gr |
|
import yaml |
|
|
|
def fetch_agent_yaml(space_url): |
|
try: |
|
res = requests.get(f"{space_url}/agent.yaml") |
|
return yaml.safe_load(res.text) |
|
except: |
|
return None |
|
|
|
def build_agent_tool(agent_info, endpoint_url): |
|
def tool_func(input_text): |
|
try: |
|
resp = requests.post(f"{endpoint_url}/agent", json={"input": input_text}, timeout=10) |
|
return resp.json().get("output", "No structured output.") |
|
except Exception as e: |
|
return f"Error: {str(e)}" |
|
|
|
return gr.TextTool( |
|
name=agent_info.get("name", "Unnamed Agent"), |
|
description=agent_info.get("description", "No description."), |
|
func=tool_func |
|
) |
|
|
|
def discover_agents_from_urls(agent_urls): |
|
tools = [] |
|
for url in agent_urls: |
|
metadata = fetch_agent_yaml(url) |
|
if metadata: |
|
tools.append(build_agent_tool(metadata, url)) |
|
return tools |
|
|