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 |