Spaces:
Sleeping
Sleeping
| import { JSONSchema7 } from "json-schema"; | |
| import { tool as createTool } from "ai"; | |
| import { jsonSchemaToZod } from "lib/json-schema-to-zod"; | |
| export const pythonExecutionSchema: JSONSchema7 = { | |
| type: "object", | |
| properties: { | |
| code: { | |
| type: "string", | |
| description: `Execute Python code in the user's browser via Pyodide.\n\nNetwork access: use pyodide.http.open_url for HTTP/HTTPS, not urllib/request/requests. CORS must allow the app origin.\nExample (CSV):\nfrom pyodide.http import open_url\nimport pandas as pd\nurl = 'https://example.com/data.csv'\ndf = pd.read_csv(open_url(url))\nprint(df.head())\n\nOutput capture:\npyodide.setStdout({\n batched: (output: string) => {\n const type = output.startsWith('data:image/png;base64') ? 'image' : 'data'\n logs.push({ type: 'log', args: [{ type, value: output }] })\n },\n})\npyodide.setStderr({\n batched: (output: string) => {\n logs.push({ type: 'error', args: [{ type: 'data', value: output }] })\n },\n})`, | |
| }, | |
| }, | |
| required: ["code"], | |
| }; | |
| export const pythonExecutionTool = createTool({ | |
| description: | |
| "Execute Python code in the user's browser via Pyodide. Use pyodide.http.open_url for HTTP(S) downloads; CORS must allow the app origin.", | |
| inputSchema: jsonSchemaToZod(pythonExecutionSchema), | |
| }); | |