Basic Tool Definition
Define tools using the OpenAI function calling format:Tool Choice Options
Control when and how tools are called:| Tool Choice | Description |
|---|---|
auto | Model decides whether to call tools |
none | Model will not call any tools |
{type: 'function', name: 'tool_name'} | Force specific tool call |
Force Specific Tool
Disable Tool Calling
Multiple Tools
Define multiple tools for complex workflows:Parallel Tool Calls
The API supports parallel execution of multiple tools:Tool Call Response
When tools are called, the response includes function call information:Tool Responses in Conversation
Include tool responses in follow-up requests:Optional FieldThe
id field is optional for function_call_output objects. Only type, call_id, and output are required — call_id is what pairs the output with its originating function_call. The examples above include id for completeness, but you can safely omit it.Multimodal tool outputs
function_call_output.output accepts either a string or an array of input content parts (input_text, input_image, input_file) — the same shape as user-message content. Use the array form to return images or files from a tool; the non-text parts are only forwarded to supported multimodal models.
Streaming Tool Calls
Monitor tool calls in real-time with streaming:Tool Validation
Ensure tool calls have proper structure:type: Always “function_call”id: Unique identifier for the function call objectname: Function name matching tool definitionarguments: Valid JSON string with function parameterscall_id: Unique identifier for the call
Best Practices
- Clear descriptions: Provide detailed function descriptions and parameter explanations
- Proper schemas: Use valid JSON Schema for parameters
- Error handling: Handle cases where tools might not be called
- Parallel execution: Design tools to work independently when possible
- Conversation flow: Include tool responses in follow-up requests for context
Next Steps
- Learn about Web Search integration
- Explore Reasoning with tools
- Review Basic Usage fundamentals