Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Co-authored-by: Aiden Cline <aidenpcline@gmail.com>
89 lines
2.0 KiB
TypeScript
89 lines
2.0 KiB
TypeScript
import { createProviderDefinedToolFactoryWithOutputSchema } from "@ai-sdk/provider-utils"
|
|
import { z } from "zod/v4"
|
|
|
|
export const codeInterpreterInputSchema = z.object({
|
|
code: z.string().nullish(),
|
|
containerId: z.string(),
|
|
})
|
|
|
|
export const codeInterpreterOutputSchema = z.object({
|
|
outputs: z
|
|
.array(
|
|
z.discriminatedUnion("type", [
|
|
z.object({ type: z.literal("logs"), logs: z.string() }),
|
|
z.object({ type: z.literal("image"), url: z.string() }),
|
|
]),
|
|
)
|
|
.nullish(),
|
|
})
|
|
|
|
export const codeInterpreterArgsSchema = z.object({
|
|
container: z
|
|
.union([
|
|
z.string(),
|
|
z.object({
|
|
fileIds: z.array(z.string()).optional(),
|
|
}),
|
|
])
|
|
.optional(),
|
|
})
|
|
|
|
type CodeInterpreterArgs = {
|
|
/**
|
|
* The code interpreter container.
|
|
* Can be a container ID
|
|
* or an object that specifies uploaded file IDs to make available to your code.
|
|
*/
|
|
container?: string | { fileIds?: string[] }
|
|
}
|
|
|
|
export const codeInterpreterToolFactory = createProviderDefinedToolFactoryWithOutputSchema<
|
|
{
|
|
/**
|
|
* The code to run, or null if not available.
|
|
*/
|
|
code?: string | null
|
|
|
|
/**
|
|
* The ID of the container used to run the code.
|
|
*/
|
|
containerId: string
|
|
},
|
|
{
|
|
/**
|
|
* The outputs generated by the code interpreter, such as logs or images.
|
|
* Can be null if no outputs are available.
|
|
*/
|
|
outputs?: Array<
|
|
| {
|
|
type: "logs"
|
|
|
|
/**
|
|
* The logs output from the code interpreter.
|
|
*/
|
|
logs: string
|
|
}
|
|
| {
|
|
type: "image"
|
|
|
|
/**
|
|
* The URL of the image output from the code interpreter.
|
|
*/
|
|
url: string
|
|
}
|
|
> | null
|
|
},
|
|
CodeInterpreterArgs
|
|
>({
|
|
id: "openai.code_interpreter",
|
|
name: "code_interpreter",
|
|
inputSchema: codeInterpreterInputSchema,
|
|
outputSchema: codeInterpreterOutputSchema,
|
|
})
|
|
|
|
export const codeInterpreter = (
|
|
args: CodeInterpreterArgs = {}, // default
|
|
) => {
|
|
return codeInterpreterToolFactory(args)
|
|
}
|