--- unlisted: true --- # AIX dispatch server - API features comparison This is updated as of 2024-07-09, and includes the latest features and capabilities of the three major AI APIs: Anthropic, Gemini, and OpenAI. The comparison covers a wide range of features, including function calling, vision, system instructions, etc. | Feature Category | Specific Feature | Anthropic | Gemini | OpenAI | |------------------------------------------|-------------------------------|--------------------------------------------------------------------|------------------------------------------------------------------|---------------------------------------------------------------------| | **Message Structure** | | | Role types | user, assistant | user, model | user, assistant, system, tool | | | Named participants | No | No | Yes | | | Content array | Yes | Yes | Yes | | **Content Types and Multimodal Support** | | | Text generation | Yes | Yes | Yes | | | Image understanding | Yes | Yes | Yes | | | Audio processing | No | **Yes** | No | | | Video processing | No | **Yes** | No | | **Image Handling** | | | Supported formats | JPEG, PNG, GIF, WebP | JPEG, PNG, WebP, HEIC, HEIF | PNG, JPEG, WebP, non-animated GIF | | | Max image size | 5MB per image | (20MB per prompt) | 20MB per image | | | Image detail level | N/A | N/A | **Low, high, auto** | | | Image resolution | max: 1568x1568 | min: 768x768, max: 3072x3072 | min: 512x512, max: 2048 x 2048 | | | Token calculation for images | (width * height)/750; max 1,600 | 258 tokens | 85 + 170 * {patches} | | | Image retention | Deleted after processing | Not specified | Deleted after processing | | **Audio and Video Handling** | | | Audio formats | N/A | WAV, MP3, AIFF, AAC, OGG, FLAC | N/A | | | Video formats | N/A | MP4, MPEG, MOV, AVI, MPG, WebM, WMV, 3GPP | N/A | | **System Instructions and Tool Use** | | | System instructions | Yes (array of text blocks) | Yes (parts array) | Yes (as system message) | | **Function/Tool Handling** | | | Parallel tool calls | No | No | **Yes** | | | Tool Declaration | Defined in `tools` array | Defined in `tools` array | Defined in `tools` array | | | FC name restrictions | Yes | Yes (max 63 chars) | Yes (max 64 chars) | | | FC declaration | name, description, input_schema | name, description, parameters | name, description, parameters | | | FC options structure | JSON Schema for input | Object with properties | JSON Schema for parameters | | | FC Force invocation | Via `tool_choice` parameter | Via `toolConfig` parameter | Via `tool_choice` parameter | | | FC Model invocation | Model generates a `tool_use` block with predicted parameters | Generates a `functionCall` part with predicted parameters | Generates a message.`tool_calls` item with predicted arguments | | | FC Execution | Client-side | Client-side | Client-side | | | FC Result injection | Client appends a `user` message with a `tool_result` content block | Client appends a `function` message with `functionResponse` part | Client sends a new `tool` message with `tool_call_id` and `content` | | | Built-in Code execution | No | **Yes** | No | | | Tool use with vision | Yes | Yes | Yes | | **Generation Configuration** | | | temperature | Yes | Yes | Yes | | | max_tokens | Yes | Yes | Yes | | | stop_sequences | Yes | Yes | Yes | | | top_k | Yes | Yes | **No** | | | top_p | Yes | Yes | Yes | | | seed | No | No | **Yes** | | | Multiple candidates | No | No | Yes (with 'n' parameter, breaks streaming?) | | **Streaming and Response Structure** | | | Streaming support | Yes | Yes | Yes | | | Streaming initiation | stream=true | streamGenerateContent path | stream=true | | | Streaming event types | **Multiple specific types** | Not specified | Single delta type | | | Response container | content (array) | candidates (array) | choices (array) | | **Usage Metrics and Error Handling** | | | Token counts | Yes | Yes | Yes | | | Detailed token breakdown | input, output | prompt, cached, candidates, total | prompt, completion, total | | | Usage in stream | No | No | **Optional** | | | Error handling in response | Not specified | Not specified | **Yes (undocumented)** | | | Error handling in stream | Not specified | Not specified | **Yes (undocumented)** | | **Advanced Features** | | | JSON mode | **Partial (via structured prompts)** | **Yes (responseMimeType)** | **Yes** | | | Output consistency techniques | **Yes (multiple methods)** | Not specified | Not specified | | | Logprobs | No | No | **Yes (disabled in schema)** | | | System fingerprint | No | No | **Yes** | | | Semantic caching | No | **Yes** | No | | | Assistant prefill | **Yes** | No | No | | | Preferred formatting | **XML tags, JSON** | Not specified | Markdown | | **Safety and Compliance** | | | Safety settings in request | **Stop sequences** | **Detailed category-based** | **Moderation API** | | | Safety feedback in response | Yes | Yes | Not specified |