Spaces:
Sleeping
Sleeping
| <html> | |
| <head> | |
| <title>Gradio Playgrounf</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/json-schema-faker.min.js"></script> | |
| </head> | |
| <body class="bg-gray-100"> | |
| <div class="container mx-auto px-4 py-8"> | |
| <h1 class="text-3xl font-bold mb-4">Gradio Playground</h1> | |
| <div class="bg-white p-6 rounded-lg shadow-lg"> | |
| <div class="mb-4"> | |
| <label class="block text-gray-700 font-bold mb-2" for="repo_id"> | |
| Repo ID | |
| </label> | |
| <div class="flex"> | |
| <input class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" id="repo_id" type="text" value="Agents-MCP-Hackathon/calculator-mcp-marcodsn"> | |
| <button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded ml-2" id="search"> | |
| Search | |
| </button> | |
| </div> | |
| </div> | |
| <div class="mb-4"> | |
| <label class="block text-gray-700 font-bold mb-2" for="api_name"> | |
| API Name | |
| </label> | |
| <input class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" id="api_name" type="text" value="predict"> | |
| </div> | |
| <div class="mb-4"> | |
| <label class="block text-gray-700 font-bold mb-2" for="args"> | |
| Arguments (JSON) | |
| </label> | |
| <textarea class="shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 leading-tight focus:outline-none focus:shadow-outline" id="args" rows="3">["1 + 2"]</textarea> | |
| </div> | |
| <button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded focus:outline-none focus:shadow-outline disabled:opacity-50 disabled:cursor-not-allowed" id="submit"> | |
| Submit | |
| </button> | |
| <div class="mt-4"> | |
| <h2 class="text-xl font-bold mb-2">Result</h2> | |
| <pre class="bg-gray-200 p-4 rounded" id="result"></pre> | |
| <div class="hidden" id="loading">Loading...</div> | |
| </div> | |
| </div> | |
| </div> | |
| <script type="module"> | |
| import { client } from "https://cdn.jsdelivr.net/npm/@gradio/client/dist/index.min.js"; | |
| const searchButton = document.getElementById("search"); | |
| const submitButton = document.getElementById("submit"); | |
| const repoIdInput = document.getElementById("repo_id"); | |
| const apiNameInput = document.getElementById("api_name"); | |
| const argsInput = document.getElementById("args"); | |
| const resultDiv = document.getElementById("result"); | |
| const loadingDiv = document.getElementById("loading"); | |
| searchButton.addEventListener("click", async () => { | |
| const repoId = repoIdInput.value; | |
| const app = await client(repoId); | |
| const apiInfo = await app.view_api(); | |
| if (apiInfo.named_endpoints.length > 0) { | |
| const firstApiName = apiInfo.named_endpoints[0].name; | |
| apiNameInput.value = firstApiName; | |
| const exampleArgs = apiInfo.named_endpoints[0].parameters.map(p => JSONSchemaFaker.generate(p.component_schema)); | |
| argsInput.value = JSON.stringify(exampleArgs); | |
| } else if (apiInfo.unnamed_endpoints.length > 0) { | |
| apiNameInput.value = apiInfo.unnamed_endpoints[0].name; | |
| const exampleArgs = apiInfo.unnamed_endpoints[0].parameters.map(p => JSONSchemaFaker.generate(p.component_schema)); | |
| argsInput.value = JSON.stringify(exampleArgs); | |
| } | |
| }); | |
| submitButton.addEventListener("click", async () => { | |
| const repoId = repoIdInput.value; | |
| const apiName = apiNameInput.value; | |
| const args = JSON.parse(argsInput.value); | |
| submitButton.disabled = true; | |
| loadingDiv.classList.remove("hidden"); | |
| resultDiv.classList.add("hidden"); | |
| const response = await fetch(`/gp/${repoId}/${apiName}`, { | |
| method: "POST", | |
| headers: { | |
| "Content-Type": "application/json" | |
| }, | |
| body: JSON.stringify({ args }) | |
| }); | |
| const result = await response.json(); | |
| resultDiv.textContent = JSON.stringify(result, null, 2); | |
| submitButton.disabled = false; | |
| loadingDiv.classList.add("hidden"); | |
| resultDiv.classList.remove("hidden"); | |
| }); | |
| </script> | |
| </body> | |
| </html> | |