kopia lustrzana https://github.com/transitive-bullshit/chatgpt-api
55 wiersze
1.5 KiB
TypeScript
55 wiersze
1.5 KiB
TypeScript
import { createAIFunction, getEnv } from '@agentic/core'
|
|
import { Sandbox } from '@e2b/code-interpreter'
|
|
import { z } from 'zod'
|
|
|
|
/**
|
|
* E2B Python code interpreter sandbox.
|
|
*
|
|
* @see https://e2b.dev
|
|
*/
|
|
export const e2b = createAIFunction(
|
|
{
|
|
name: 'execute_python',
|
|
description: `
|
|
Execute python code in a Jupyter notebook cell and returns any result, stdout, stderr, display_data, and error.
|
|
|
|
- code has access to the internet and can make api requests
|
|
- code has access to the filesystem and can read/write files
|
|
- coce can install any pip package (if it exists) if you need to, but the usual packages for data analysis are already preinstalled
|
|
- code uses python3
|
|
- code is executed in a secure sandbox environment, so you don't need to worry about safety
|
|
`.trim(),
|
|
inputSchema: z.object({
|
|
code: z
|
|
.string()
|
|
.describe('Python code to execute in a single notebook cell.')
|
|
})
|
|
},
|
|
async ({ code }) => {
|
|
const sandbox = await Sandbox.create({
|
|
apiKey: getEnv('E2B_API_KEY')
|
|
})
|
|
|
|
try {
|
|
const exec = await sandbox.runCode(code, {
|
|
onStderr: (msg) => {
|
|
console.warn('[Code Interpreter stderr]', msg)
|
|
},
|
|
|
|
onStdout: (stdout) => {
|
|
console.log('[Code Interpreter stdout]', stdout)
|
|
}
|
|
})
|
|
|
|
if (exec.error) {
|
|
console.error('[Code Interpreter error]', exec.error)
|
|
throw new Error(exec.error.value)
|
|
}
|
|
|
|
return exec.results.map((result) => result.toJSON())
|
|
} finally {
|
|
await sandbox.kill()
|
|
}
|
|
}
|
|
)
|