@langchain/openai
Version:
OpenAI integrations for LangChain.js
125 lines (123 loc) • 4.32 kB
TypeScript
import { OpenAI as OpenAI$1 } from "openai";
import { ServerTool } from "@langchain/core/tools";
//#region src/tools/codeInterpreter.d.ts
/**
* Memory limit options for the Code Interpreter container.
* Higher tiers offer more RAM and are billed at different rates.
*/
type CodeInterpreterMemoryLimit = "1g" | "4g" | "16g" | "64g";
/**
* Auto container configuration for Code Interpreter.
* Creates a new container automatically or reuses an active one.
*/
interface CodeInterpreterAutoContainer {
/**
* Memory limit for the container.
* - `"1g"` (default): 1 GB RAM
* - `"4g"`: 4 GB RAM
* - `"16g"`: 16 GB RAM
* - `"64g"`: 64 GB RAM
*/
memoryLimit?: CodeInterpreterMemoryLimit;
/**
* Optional list of uploaded file IDs to make available to the code.
* Files in the model input are automatically uploaded, so this is only
* needed for additional files.
*/
fileIds?: string[];
}
/**
* Options for the Code Interpreter tool.
*/
interface CodeInterpreterOptions {
/**
* The container configuration for the Code Interpreter.
*
* Can be either:
* - A string container ID for explicit mode (created via `/v1/containers` endpoint)
* - An auto configuration object that creates/reuses containers automatically
*
* If not provided, defaults to auto mode with default settings.
*/
container?: string | CodeInterpreterAutoContainer;
}
/**
* OpenAI Code Interpreter tool type for the Responses API.
*/
type CodeInterpreterTool = OpenAI$1.Responses.Tool.CodeInterpreter;
/**
* Creates a Code Interpreter tool that allows models to write and run Python code
* in a sandboxed environment to solve complex problems.
*
* Use Code Interpreter for:
* - **Data analysis**: Processing files with diverse data and formatting
* - **File generation**: Creating files with data and images of graphs
* - **Iterative coding**: Writing and running code iteratively to solve problems
* - **Visual intelligence**: Cropping, zooming, rotating, and transforming images
*
* The tool runs in a container, which is a fully sandboxed virtual machine.
* Containers can be created automatically (auto mode) or explicitly via the
* `/v1/containers` endpoint.
*
* @see {@link https://platform.openai.com/docs/guides/tools-code-interpreter | OpenAI Code Interpreter Documentation}
*
* @param options - Configuration options for the Code Interpreter tool
* @returns A Code Interpreter tool definition to be passed to the OpenAI Responses API
*
* @example
* ```typescript
* import { ChatOpenAI, tools } from "@langchain/openai";
*
* const model = new ChatOpenAI({ model: "gpt-4.1" });
*
* // Basic usage with auto container (default 1GB memory)
* const response = await model.invoke(
* "Solve the equation 3x + 11 = 14",
* { tools: [tools.codeInterpreter()] }
* );
*
* // With increased memory limit for larger computations
* const response = await model.invoke(
* "Analyze this large dataset and create visualizations",
* {
* tools: [tools.codeInterpreter({
* container: { memoryLimit: "4g" }
* })]
* }
* );
*
* // With specific files available to the code
* const response = await model.invoke(
* "Process the uploaded CSV file",
* {
* tools: [tools.codeInterpreter({
* container: {
* memoryLimit: "4g",
* fileIds: ["file-abc123", "file-def456"]
* }
* })]
* }
* );
*
* // Using an explicit container ID (created via /v1/containers)
* const response = await model.invoke(
* "Continue working with the data",
* {
* tools: [tools.codeInterpreter({
* container: "cntr_abc123"
* })]
* }
* );
* ```
*
* @remarks
* - Containers expire after 20 minutes of inactivity
* - While called "Code Interpreter", the model knows it as the "python tool"
* - For explicit prompting, ask for "the python tool" in your prompts
* - Files in model input are automatically uploaded to the container
* - Generated files are returned as `container_file_citation` annotations
*/
declare function codeInterpreter(options?: CodeInterpreterOptions): ServerTool;
//#endregion
export { CodeInterpreterAutoContainer, CodeInterpreterMemoryLimit, CodeInterpreterOptions, CodeInterpreterTool, codeInterpreter };
//# sourceMappingURL=codeInterpreter.d.ts.map