bedrock-wrapper 2.6.2 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,560 +0,0 @@
1
- [
2
- {
3
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
4
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
5
- "cwd": "C:\\git\\bedrock-wrapper",
6
- "permission_mode": "bypassPermissions",
7
- "hook_event_name": "PostToolUse",
8
- "tool_name": "Read",
9
- "tool_input": {
10
- "file_path": "c:\\git\\bedrock-wrapper\\bedrock-models.js"
11
- },
12
- "tool_response": {
13
- "type": "text",
14
- "file": {
15
- "filePath": "c:\\git\\bedrock-wrapper\\bedrock-models.js",
16
- "content": "// Description: This file contains the model configurations\n\n// NOTE: Not all models are available in all regions.\n// Check the bedrock documentation for availability.\n// The Llama 3.2 modelId's reference cross-region profile ids.\n// https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/cross-region-inference\n\nexport const bedrock_models = [\n {\n // =====================\n // == Claude 4.1 Opus ==\n // =====================\n \"modelName\": \"Claude-4-1-Opus\",\n // \"modelId\": \"anthropic.claude-opus-4-1-20250805-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-1-20250805-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==============================\n // == Claude 4.1 Opus Thinking ==\n // ==============================\n \"modelName\": \"Claude-4-1-Opus-Thinking\",\n // \"modelId\": \"anthropic.claude-opus-4-1-20250805-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-1-20250805-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ====================\n // == Claude 4 Opus ==\n // ====================\n \"modelName\": \"Claude-4-Opus\",\n // \"modelId\": \"anthropic.claude-opus-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==============================\n // == Claude 4 Opus Thinking ==\n // ==============================\n \"modelName\": \"Claude-4-Opus-Thinking\",\n // \"modelId\": \"anthropic.claude-opus-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =======================\n // == Claude 4.5 Sonnet ==\n // =======================\n \"modelName\": \"Claude-4-5-Sonnet\",\n // \"modelId\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ================================\n // == Claude 4.5 Sonnet Thinking ==\n // ================================\n \"modelName\": \"Claude-4-5-Sonnet-Thinking\",\n // \"modelId\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =====================\n // == Claude 4 Sonnet ==\n // =====================\n \"modelName\": \"Claude-4-Sonnet\",\n // \"modelId\": \"anthropic.claude-sonnet-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==============================\n // == Claude 4 Sonnet Thinking ==\n // ==============================\n \"modelName\": \"Claude-4-Sonnet-Thinking\",\n // \"modelId\": \"anthropic.claude-sonnet-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ================================\n // == Claude 3.7 Sonnet Thinking ==\n // ================================\n \"modelName\": \"Claude-3-7-Sonnet-Thinking\",\n // \"modelId\": \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"modelId\": \"us.anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =======================\n // == Claude 3.7 Sonnet ==\n // =======================\n \"modelName\": \"Claude-3-7-Sonnet\",\n // \"modelId\": \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"modelId\": \"us.anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"]\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==========================\n // == Claude 3.5 Sonnet v2 ==\n // ==========================\n \"modelName\": \"Claude-3-5-Sonnet-v2\",\n \"modelId\": \"anthropic.claude-3-5-sonnet-20241022-v2:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =======================\n // == Claude 3.5 Sonnet ==\n // =======================\n \"modelName\": \"Claude-3-5-Sonnet\",\n \"modelId\": \"anthropic.claude-3-5-sonnet-20240620-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ======================\n // == Claude 3.5 Haiku ==\n // ======================\n \"modelName\": \"Claude-3-5-Haiku\",\n \"modelId\": \"anthropic.claude-3-5-haiku-20241022-v1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n }\n },\n {\n // ====================\n // == Claude 3 Haiku ==\n // ====================\n \"modelName\": \"Claude-3-Haiku\",\n \"modelId\": \"anthropic.claude-3-haiku-20240307-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ===================\n // == Llama 3.3 70b ==\n // ===================\n \"modelName\": \"Llama-3-3-70b\",\n // \"modelId\": \"meta.llama3-3-70b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-3-70b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ==================\n // == Llama 3.2 1b ==\n // ==================\n \"modelName\": \"Llama-3-2-1b\",\n // \"modelId\": \"meta.llama3-2-1b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-1b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ==================\n // == Llama 3.2 3b ==\n // ==================\n \"modelName\": \"Llama-3-2-3b\",\n // \"modelId\": \"meta.llama3-2-3b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-3b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===================\n // == Llama 3.2 11b ==\n // ===================\n \"modelName\": \"Llama-3-2-11b\",\n // \"modelId\": \"meta.llama3-2-11b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-11b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===================\n // == Llama 3.2 90b ==\n // ===================\n \"modelName\": \"Llama-3-2-90b\",\n // \"modelId\": \"meta.llama3-2-90b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-90b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ==================\n // == Llama 3.1 8b ==\n // ==================\n \"modelName\": \"Llama-3-1-8b\",\n \"modelId\": \"meta.llama3-1-8b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===================\n // == Llama 3.1 70b ==\n // ===================\n \"modelName\": \"Llama-3-1-70b\",\n \"modelId\": \"meta.llama3-1-70b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ====================\n // == Llama 3.1 405b ==\n // ====================\n \"modelName\": \"Llama-3-1-405b\",\n \"modelId\": \"meta.llama3-1-405b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ================\n // == Llama 3 8b ==\n // ================\n \"modelName\": \"Llama-3-8b\",\n \"modelId\": \"meta.llama3-8b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // =================\n // == Llama 3 70b ==\n // =================\n \"modelName\": \"Llama-3-70b\",\n \"modelId\": \"meta.llama3-70b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===============\n // == Nova Pro ==\n // ===============\n \"modelName\": \"Nova-Pro\",\n \"modelId\": \"us.amazon.nova-pro-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"maxTokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stopSequences\",\n \"response_chunk_element\": \"contentBlockDelta.delta.text\",\n \"response_nonchunk_element\": \"output.message.content[0].text\",\n \"special_request_schema\": {\n \"schemaVersion\": \"messages-v1\"\n },\n \"image_support\": {\n \"max_image_size\": 5242880, // 5MB per image\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ================\n // == Nova Lite ==\n // ================\n \"modelName\": \"Nova-Lite\",\n \"modelId\": \"us.amazon.nova-lite-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"maxTokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stopSequences\",\n \"response_chunk_element\": \"contentBlockDelta.delta.text\",\n \"response_nonchunk_element\": \"output.message.content[0].text\",\n \"special_request_schema\": {\n \"schemaVersion\": \"messages-v1\"\n },\n \"image_support\": {\n \"max_image_size\": 5242880, // 5MB per image\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =================\n // == Nova Micro ==\n // =================\n \"modelName\": \"Nova-Micro\",\n \"modelId\": \"us.amazon.nova-micro-v1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"maxTokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stopSequences\",\n \"response_chunk_element\": \"contentBlockDelta.delta.text\",\n \"response_nonchunk_element\": \"output.message.content[0].text\",\n \"special_request_schema\": {\n \"schemaVersion\": \"messages-v1\",\n \"inferenceConfig\": {}\n }\n },\n {\n // ====================\n // == GPT-OSS-120B ==\n // ====================\n \"modelName\": \"GPT-OSS-120B\",\n \"modelId\": \"openai.gpt-oss-120b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-120b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"special_request_schema\": {}\n },\n {\n // ===================\n // == GPT-OSS-20B ==\n // ===================\n \"modelName\": \"GPT-OSS-20B\",\n \"modelId\": \"openai.gpt-oss-20b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-20b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"special_request_schema\": {}\n },\n {\n // ==============================\n // == GPT-OSS-120B-Thinking ==\n // ==============================\n \"modelName\": \"GPT-OSS-120B-Thinking\",\n \"modelId\": \"openai.gpt-oss-120b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-120b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"preserve_reasoning\": true,\n \"special_request_schema\": {}\n },\n {\n // =============================\n // == GPT-OSS-20B-Thinking ==\n // =============================\n \"modelName\": \"GPT-OSS-20B-Thinking\",\n \"modelId\": \"openai.gpt-oss-20b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-20b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"preserve_reasoning\": true,\n \"special_request_schema\": {}\n },\n {\n // ================\n // == Mistral-7b ==\n // ================\n \"modelName\": \"Mistral-7b\",\n \"modelId\": \"mistral.mistral-7b-instruct-v0:2\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<s>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"\",\n \"role_system_suffix\": \"\",\n \"role_user_message_prefix\": \"[INST]\",\n \"role_user_message_suffix\": \"[/INST]\",\n \"role_user_prefix\": \"\",\n \"role_user_suffix\": \"\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"\",\n \"role_assistant_suffix\": \"\",\n \"eom_text\": \"</s>\",\n \"display_role_names\": false,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop\",\n \"response_chunk_element\": \"outputs[0].text\"\n },\n {\n // ==================\n // == Mixtral-8x7b ==\n // ==================\n \"modelName\": \"Mixtral-8x7b\",\n \"modelId\": \"mistral.mixtral-8x7b-instruct-v0:1\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<s>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"\",\n \"role_system_suffix\": \"\",\n \"role_user_message_prefix\": \"[INST]\",\n \"role_user_message_suffix\": \"[/INST]\",\n \"role_user_prefix\": \"\",\n \"role_user_suffix\": \"\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"\",\n \"role_assistant_suffix\": \"\",\n \"eom_text\": \"</s>\",\n \"display_role_names\": false,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 4096,\n \"stop_sequences_param_name\": \"stop\",\n \"response_chunk_element\": \"outputs[0].text\"\n },\n {\n // ===================\n // == Mistral Large ==\n // ===================\n \"modelName\": \"Mistral-Large\",\n \"modelId\": \"mistral.mistral-large-2402-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<s>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"\",\n \"role_system_suffix\": \"\",\n \"role_user_message_prefix\": \"[INST]\",\n \"role_user_message_suffix\": \"[/INST]\",\n \"role_user_prefix\": \"\",\n \"role_user_suffix\": \"\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"\",\n \"role_assistant_suffix\": \"\",\n \"eom_text\": \"</s>\",\n \"display_role_names\": false,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop\",\n \"response_chunk_element\": \"outputs[0].text\"\n },\n];",
17
- "numLines": 915,
18
- "startLine": 1,
19
- "totalLines": 915
20
- }
21
- }
22
- },
23
- {
24
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
25
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
26
- "cwd": "C:\\git\\bedrock-wrapper",
27
- "permission_mode": "bypassPermissions",
28
- "hook_event_name": "PostToolUse",
29
- "tool_name": "WebSearch",
30
- "tool_input": {
31
- "query": "Claude Haiku 4.5 AWS Bedrock model ID 2025"
32
- },
33
- "tool_response": {
34
- "query": "Claude Haiku 4.5 AWS Bedrock model ID 2025",
35
- "results": [
36
- {
37
- "tool_use_id": "srvtoolu_012XLB3ZKDLCa4NfJtPMLqzr",
38
- "content": [
39
- {
40
- "title": "Anthropic\u00e2\u20ac\u2122s Claude - Models in Amazon Bedrock \u00e2\u20ac\u201c AWS",
41
- "url": "https://aws.amazon.com/bedrock/anthropic/"
42
- },
43
- {
44
- "title": "Claude 4.5 Haiku by Anthropic now in Amazon Bedrock - AWS",
45
- "url": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock/"
46
- },
47
- {
48
- "title": "What's new in Claude 4.5 - Claude Docs",
49
- "url": "https://docs.claude.com/en/docs/about-claude/models/whats-new-claude-4-5"
50
- },
51
- {
52
- "title": "How to Access Claude Haiku 4.5 (2025): Claude.ai, API & Partners",
53
- "url": "https://skywork.ai/blog/how-to-access-claude-haiku-4-5-guide/"
54
- },
55
- {
56
- "title": "Introducing Claude Sonnet 4.5 in Amazon Bedrock: Anthropic\u00e2\u20ac\u2122s most intelligent model, best for coding and complex agents | AWS News Blog",
57
- "url": "https://aws.amazon.com/blogs/aws/introducing-claude-sonnet-4-5-in-amazon-bedrock-anthropics-most-intelligent-model-best-for-coding-and-complex-agents/"
58
- },
59
- {
60
- "title": "Configuring Claude Code Extension with AWS Bedrock (And How You Can Avoid My Mistakes) | by Vasko Kelkocev | Oct, 2025 | AWS in Plain English",
61
- "url": "https://medium.com/@vkelk/configuring-claude-code-extension-with-aws-bedrock-and-how-you-can-avoid-my-mistakes-090dbed5215b"
62
- },
63
- {
64
- "title": "Amazon adds Claude Haiku 4.5 to its generative AI service (AMZN:NASDAQ) | Seeking Alpha",
65
- "url": "https://seekingalpha.com/news/4504394-amazon-adds-claude-haiku-45-to-its-generative-ai-service"
66
- },
67
- {
68
- "title": "Supported Regions and models for inference profiles - Amazon Bedrock",
69
- "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html"
70
- },
71
- {
72
- "title": "Amazon (AMZN) Expands AI Offering with Claude Haiku 4.5 in Bedrock",
73
- "url": "https://www.gurufocus.com/news/3144914/amazon-amzn-expands-ai-offering-with-claude-haiku-45-in-bedrock"
74
- },
75
- {
76
- "title": "Supported foundation models in Amazon Bedrock - Amazon Bedrock",
77
- "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html"
78
- }
79
- ]
80
- },
81
- "Based on the search results, here's the information about Claude Haiku 4.5 on AWS Bedrock:\n\n## Model ID\n\nThe AWS Bedrock model ID for Claude Haiku 4.5 is: `anthropic.claude-haiku-4-5-20251001-v1:0`\n\n## Important Note About Inference Profiles\n\nAWS Bedrock requires inference profiles for on-demand usage, and you cannot use the model ID directly. Instead, you should use inference profile IDs or ARNs.\n\n## Availability\n\nClaude Haiku 4.5 is now available in Amazon Bedrock via global cross-region inference in multiple locations. AWS announced in October 2025 that Claude Haiku 4.5 is available in Bedrock.\n\n## Model Capabilities\n\nClaude Haiku 4.5 delivers near-frontier performance matching Claude Sonnet 4's capabilities in coding, computer use, and agent tasks at substantially lower cost and faster speeds.\n\nFor the most up-to-date information on inference profile IDs and regional availability, you can refer to the AWS Bedrock documentation on supported regions and models for inference profiles."
82
- ],
83
- "durationSeconds": 20.604022800000006
84
- }
85
- },
86
- {
87
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
88
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
89
- "cwd": "C:\\git\\bedrock-wrapper",
90
- "permission_mode": "bypassPermissions",
91
- "hook_event_name": "PostToolUse",
92
- "tool_name": "WebFetch",
93
- "tool_input": {
94
- "url": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock/",
95
- "prompt": "What is the exact model ID for Claude Haiku 4.5 in AWS Bedrock? What are its capabilities (vision support, max tokens, etc.)?"
96
- },
97
- "tool_response": {
98
- "bytes": 175690,
99
- "code": 200,
100
- "codeText": "",
101
- "result": "# Claude Haiku 4.5 in AWS Bedrock\n\nBased on the provided content, specific technical details about the model ID and exact specifications are not included in the announcement.\n\n## What the announcement confirms:\n\nThe page states that \"Claude Haiku 4.5 delivers near-frontier performance matching Claude Sonnet 4's capabilities in coding, computer use, and agent tasks\" and that \"This model supports vision.\"\n\nHowever, the announcement does not provide:\n- The exact model ID/identifier for API calls\n- Maximum token limits\n- Specific pricing per token\n- Complete technical specifications\n\n## Where to find this information:\n\nThe announcement directs users to three resources for complete details:\n1. **AWS Bedrock documentation** - for available regions and full specifications\n2. **Amazon Bedrock console** - to access the model directly\n3. **AWS Bedrock pricing page** - for cost details\n\nFor precise model identifiers and technical parameters, you would need to consult the official AWS Bedrock documentation or console.",
102
- "durationMs": 4529,
103
- "url": "https://aws.amazon.com/about-aws/whats-new/2025/10/claude-4-5-haiku-anthropic-amazon-bedrock/"
104
- }
105
- },
106
- {
107
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
108
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
109
- "cwd": "C:\\git\\bedrock-wrapper",
110
- "permission_mode": "bypassPermissions",
111
- "hook_event_name": "PostToolUse",
112
- "tool_name": "WebFetch",
113
- "tool_input": {
114
- "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html",
115
- "prompt": "What is the exact model ID for Claude Haiku 4.5? What are all the specifications including vision support, max tokens, and any other capabilities?"
116
- },
117
- "tool_response": {
118
- "bytes": 73917,
119
- "code": 200,
120
- "codeText": "OK",
121
- "result": "# Claude Haiku 4.5 Model Information\n\n**Model ID:** `anthropic.claude-haiku-4-5-20251001-v1:0`\n\n**Available Specifications from the Documentation:**\n\nThe table indicates the following capabilities:\n- **Input modalities:** \"Text, Image\"\n- **Output modalities:** \"Text, Chat\"\n- **Streaming:** Supported (Yes)\n\n**Regional Availability:** The model is accessible across numerous regions including us-east-1, us-east-2, us-west-1, us-west-2, multiple Asia-Pacific regions, European regions, and others.\n\n**Important Note:** The documentation provided does not include detailed specifications such as maximum token limits or other advanced capabilities. For comprehensive technical details beyond what appears in this support table, you would need to consult the linked parameter documentation or Anthropic's official documentation.",
122
- "durationMs": 3110,
123
- "url": "https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html"
124
- }
125
- },
126
- {
127
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
128
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
129
- "cwd": "C:\\git\\bedrock-wrapper",
130
- "permission_mode": "bypassPermissions",
131
- "hook_event_name": "PostToolUse",
132
- "tool_name": "WebFetch",
133
- "tool_input": {
134
- "url": "https://docs.claude.com/en/docs/about-claude/models/whats-new-claude-4-5",
135
- "prompt": "What are the specifications for Claude Haiku 4.5? Specifically: max output tokens, vision support, context window, and any special capabilities or features."
136
- },
137
- "tool_response": {
138
- "bytes": 1768072,
139
- "code": 200,
140
- "codeText": "OK",
141
- "result": "# Claude Haiku 4.5 Specifications\n\nBased on the documentation provided, here's what I found about Claude Haiku 4.5:\n\n**Context Window & Performance:**\nThe page describes Haiku 4.5 as delivering \"near-frontier performance matching Sonnet 4 at significantly lower cost and faster speed,\" with \"more than twice the speed of Sonnet 4.\"\n\n**Key Capabilities:**\n- **Extended Thinking**: \"The first Haiku model with extended thinking\" for complex reasoning tasks\n- **Context Awareness**: Tracks remaining context window throughout conversations\n- **Vision Support**: Compatible with Claude 4 tools, though specific vision details aren't detailed\n- **Tool Support**: \"Full tool support\" including bash, code execution, text editor, web search, and computer use\n\n**Pricing:**\n- Input: $1 per million tokens\n- Output: $5 per million tokens\n\n**Notable Limitation:**\nThe documentation doesn't explicitly state maximum output tokens or detailed context window size for Haiku 4.5. For complete technical specifications on those parameters, you'd need to consult the API reference or model overview documentation.",
142
- "durationMs": 5441,
143
- "url": "https://docs.claude.com/en/docs/about-claude/models/whats-new-claude-4-5"
144
- }
145
- },
146
- {
147
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
148
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
149
- "cwd": "C:\\git\\bedrock-wrapper",
150
- "permission_mode": "bypassPermissions",
151
- "hook_event_name": "PostToolUse",
152
- "tool_name": "WebSearch",
153
- "tool_input": {
154
- "query": "\"Claude Haiku 4.5\" maximum output tokens context window specifications"
155
- },
156
- "tool_response": {
157
- "query": "\"Claude Haiku 4.5\" maximum output tokens context window specifications",
158
- "results": [
159
- {
160
- "tool_use_id": "srvtoolu_01R6fmTMM3TNXoNKkQbPwiNk",
161
- "content": [
162
- {
163
- "title": "Anthropic is giving away its powerful Claude Haiku 4.5 AI for free to take on OpenAI | VentureBeat",
164
- "url": "https://venturebeat.com/ai/anthropic-is-giving-away-its-powerful-claude-haiku-4-5-ai-for-free-to-take"
165
- },
166
- {
167
- "title": "Anthropic Launches Claude Haiku 4.5 - The New Stack",
168
- "url": "https://thenewstack.io/anthropic-launches-claude-haiku-4-5/"
169
- },
170
- {
171
- "title": "Claude Haiku 4.5 Deep Dive: Cost, Capabilities, and the Multi-Agent Opportunity | Caylent",
172
- "url": "https://caylent.com/blog/claude-haiku-4-5-deep-dive-cost-capabilities-and-the-multi-agent-opportunity"
173
- },
174
- {
175
- "title": "Introducing Claude Haiku 4.5",
176
- "url": "https://simonwillison.net/2025/Oct/15/claude-haiku-45/"
177
- },
178
- {
179
- "title": "Models overview - Claude Docs",
180
- "url": "https://docs.claude.com/en/docs/about-claude/models/overview"
181
- },
182
- {
183
- "title": "Claude Haiku 4.5 vs 3.5 (2025): Team Workflow Comparison Guide",
184
- "url": "https://skywork.ai/blog/claude-haiku-4-5-vs-3-5-2025-comparison/"
185
- },
186
- {
187
- "title": "Claude Haiku 4.5 Review: Faster, Cheaper, Confidently Better",
188
- "url": "https://binaryverseai.com/claude-haiku-4-5-review-pricing-usage-benchmarks/"
189
- },
190
- {
191
- "title": "Claude API Cost Calculator 2025 - Live Pricing | Haiku 4.5",
192
- "url": "https://calculatequick.com/ai/claude-token-cost-calculator/"
193
- },
194
- {
195
- "title": "What Is Claude Haiku 4.5? Speed, Cost, and Use Cases Explained",
196
- "url": "https://skywork.ai/blog/claude-haiku-4-5-definition-speed-cost-use-cases/"
197
- },
198
- {
199
- "title": "Claude Haiku 4.5 | Hacker News",
200
- "url": "https://news.ycombinator.com/item?id=45595403"
201
- }
202
- ]
203
- },
204
- "Based on the search results, here are the key specifications for **Claude Haiku 4.5**:\n\n## Context Window\nThe model maintains a 200,000-token context window for standard users, with developers accessing the Claude Developer Platform able to use a 1-million-token context window.\n\n## Maximum Output Tokens\nClaude Haiku 4.5 supports a 200,000 token context window with up to 64,000 output tokens.(no content)This is a significant increase from just 8,192 for Haiku 3.5.\n\n## Pricing\nPricing for Haiku 4.5 will be $1 per million input tokens and $5 per million output tokens.\n\n## Additional Specifications\n- **Knowledge cutoff:** February 2025 (one month later than the January 2025 date for Sonnet 4 and 4.5)\n- **Release date:** October 15, 2025\n- **New capabilities:** The new Haiku is the first Haiku model to support reasoning (extended thinking), along with computer use and context awareness features\n- **Rate limits:** 50 RPM, 50,000 input tokens per minute, and 10,000 output tokens per minute for Haiku 4.5\n\nThe model is positioned as Anthropic's fastest and most cost-efficient option while delivering near-frontier performance on coding and agentic tasks."
205
- ],
206
- "durationSeconds": 20.325043600000004
207
- }
208
- },
209
- {
210
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
211
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
212
- "cwd": "C:\\git\\bedrock-wrapper",
213
- "permission_mode": "bypassPermissions",
214
- "hook_event_name": "PostToolUse",
215
- "tool_name": "Edit",
216
- "tool_input": {
217
- "file_path": "c:\\git\\bedrock-wrapper\\bedrock-models.js",
218
- "old_string": " },\n {\n // =====================\n // == Claude 4 Sonnet ==\n // =====================\n \"modelName\": \"Claude-4-Sonnet\",",
219
- "new_string": " },\n {\n // ======================\n // == Claude 4.5 Haiku ==\n // ======================\n \"modelName\": \"Claude-4-5-Haiku\",\n // \"modelId\": \"anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"modelId\": \"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 64000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ===============================\n // == Claude 4.5 Haiku Thinking ==\n // ===============================\n \"modelName\": \"Claude-4-5-Haiku-Thinking\",\n // \"modelId\": \"anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"modelId\": \"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 64000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =====================\n // == Claude 4 Sonnet ==\n // =====================\n \"modelName\": \"Claude-4-Sonnet\","
220
- },
221
- "tool_response": {
222
- "filePath": "c:\\git\\bedrock-wrapper\\bedrock-models.js",
223
- "oldString": " },\n {\n // =====================\n // == Claude 4 Sonnet ==\n // =====================\n \"modelName\": \"Claude-4-Sonnet\",",
224
- "newString": " },\n {\n // ======================\n // == Claude 4.5 Haiku ==\n // ======================\n \"modelName\": \"Claude-4-5-Haiku\",\n // \"modelId\": \"anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"modelId\": \"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 64000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ===============================\n // == Claude 4.5 Haiku Thinking ==\n // ===============================\n \"modelName\": \"Claude-4-5-Haiku-Thinking\",\n // \"modelId\": \"anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"modelId\": \"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 64000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =====================\n // == Claude 4 Sonnet ==\n // =====================\n \"modelName\": \"Claude-4-Sonnet\",",
225
- "originalFile": "// Description: This file contains the model configurations\n\n// NOTE: Not all models are available in all regions.\n// Check the bedrock documentation for availability.\n// The Llama 3.2 modelId's reference cross-region profile ids.\n// https://us-west-2.console.aws.amazon.com/bedrock/home?region=us-west-2#/cross-region-inference\n\nexport const bedrock_models = [\n {\n // =====================\n // == Claude 4.1 Opus ==\n // =====================\n \"modelName\": \"Claude-4-1-Opus\",\n // \"modelId\": \"anthropic.claude-opus-4-1-20250805-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-1-20250805-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==============================\n // == Claude 4.1 Opus Thinking ==\n // ==============================\n \"modelName\": \"Claude-4-1-Opus-Thinking\",\n // \"modelId\": \"anthropic.claude-opus-4-1-20250805-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-1-20250805-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ====================\n // == Claude 4 Opus ==\n // ====================\n \"modelName\": \"Claude-4-Opus\",\n // \"modelId\": \"anthropic.claude-opus-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==============================\n // == Claude 4 Opus Thinking ==\n // ==============================\n \"modelName\": \"Claude-4-Opus-Thinking\",\n // \"modelId\": \"anthropic.claude-opus-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-opus-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =======================\n // == Claude 4.5 Sonnet ==\n // =======================\n \"modelName\": \"Claude-4-5-Sonnet\",\n // \"modelId\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ================================\n // == Claude 4.5 Sonnet Thinking ==\n // ================================\n \"modelName\": \"Claude-4-5-Sonnet-Thinking\",\n // \"modelId\": \"anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-5-20250929-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =====================\n // == Claude 4 Sonnet ==\n // =====================\n \"modelName\": \"Claude-4-Sonnet\",\n // \"modelId\": \"anthropic.claude-sonnet-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==============================\n // == Claude 4 Sonnet Thinking ==\n // ==============================\n \"modelName\": \"Claude-4-Sonnet-Thinking\",\n // \"modelId\": \"anthropic.claude-sonnet-4-20250514-v1:0\",\n \"modelId\": \"us.anthropic.claude-sonnet-4-20250514-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"parameter_restrictions\": {\n \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]\n },\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ================================\n // == Claude 3.7 Sonnet Thinking ==\n // ================================\n \"modelName\": \"Claude-3-7-Sonnet-Thinking\",\n // \"modelId\": \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"modelId\": \"us.anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"thinking_response_chunk_element\": \"delta.thinking\",\n \"thinking_response_nonchunk_element\": \"content[0].thinking\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"],\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 16000\n },\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =======================\n // == Claude 3.7 Sonnet ==\n // =======================\n \"modelName\": \"Claude-3-7-Sonnet\",\n // \"modelId\": \"anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"modelId\": \"us.anthropic.claude-3-7-sonnet-20250219-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 131072,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\",\n \"anthropic_beta\": [\"output-128k-2025-02-19\"]\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ==========================\n // == Claude 3.5 Sonnet v2 ==\n // ==========================\n \"modelName\": \"Claude-3-5-Sonnet-v2\",\n \"modelId\": \"anthropic.claude-3-5-sonnet-20241022-v2:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =======================\n // == Claude 3.5 Sonnet ==\n // =======================\n \"modelName\": \"Claude-3-5-Sonnet\",\n \"modelId\": \"anthropic.claude-3-5-sonnet-20240620-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ======================\n // == Claude 3.5 Haiku ==\n // ======================\n \"modelName\": \"Claude-3-5-Haiku\",\n \"modelId\": \"anthropic.claude-3-5-haiku-20241022-v1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n }\n },\n {\n // ====================\n // == Claude 3 Haiku ==\n // ====================\n \"modelName\": \"Claude-3-Haiku\",\n \"modelId\": \"anthropic.claude-3-haiku-20240307-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"delta.text\",\n \"response_nonchunk_element\": \"content[0].text\",\n \"special_request_schema\": {\n \"anthropic_version\": \"bedrock-2023-05-31\"\n },\n \"image_support\": {\n \"max_image_size\": 20971520, // 20MB\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ===================\n // == Llama 3.3 70b ==\n // ===================\n \"modelName\": \"Llama-3-3-70b\",\n // \"modelId\": \"meta.llama3-3-70b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-3-70b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ==================\n // == Llama 3.2 1b ==\n // ==================\n \"modelName\": \"Llama-3-2-1b\",\n // \"modelId\": \"meta.llama3-2-1b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-1b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ==================\n // == Llama 3.2 3b ==\n // ==================\n \"modelName\": \"Llama-3-2-3b\",\n // \"modelId\": \"meta.llama3-2-3b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-3b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===================\n // == Llama 3.2 11b ==\n // ===================\n \"modelName\": \"Llama-3-2-11b\",\n // \"modelId\": \"meta.llama3-2-11b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-11b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===================\n // == Llama 3.2 90b ==\n // ===================\n \"modelName\": \"Llama-3-2-90b\",\n // \"modelId\": \"meta.llama3-2-90b-instruct-v1:0\",\n \"modelId\": \"us.meta.llama3-2-90b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ==================\n // == Llama 3.1 8b ==\n // ==================\n \"modelName\": \"Llama-3-1-8b\",\n \"modelId\": \"meta.llama3-1-8b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===================\n // == Llama 3.1 70b ==\n // ===================\n \"modelName\": \"Llama-3-1-70b\",\n \"modelId\": \"meta.llama3-1-70b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ====================\n // == Llama 3.1 405b ==\n // ====================\n \"modelName\": \"Llama-3-1-405b\",\n \"modelId\": \"meta.llama3-1-405b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ================\n // == Llama 3 8b ==\n // ================\n \"modelName\": \"Llama-3-8b\",\n \"modelId\": \"meta.llama3-8b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // =================\n // == Llama 3 70b ==\n // =================\n \"modelName\": \"Llama-3-70b\",\n \"modelId\": \"meta.llama3-70b-instruct-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<|begin_of_text|>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"<|start_header_id|>\",\n \"role_system_suffix\": \"<|end_header_id|>\",\n \"role_user_message_prefix\": \"\",\n \"role_user_message_suffix\": \"\",\n \"role_user_prefix\": \"<|start_header_id|>\",\n \"role_user_suffix\": \"<|end_header_id|>\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"<|start_header_id|>\",\n \"role_assistant_suffix\": \"<|end_header_id|>\",\n \"eom_text\": \"<|eot_id|>\",\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_gen_len\",\n \"max_supported_response_tokens\": 2048,\n \"response_chunk_element\": \"generation\"\n },\n {\n // ===============\n // == Nova Pro ==\n // ===============\n \"modelName\": \"Nova-Pro\",\n \"modelId\": \"us.amazon.nova-pro-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"maxTokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stopSequences\",\n \"response_chunk_element\": \"contentBlockDelta.delta.text\",\n \"response_nonchunk_element\": \"output.message.content[0].text\",\n \"special_request_schema\": {\n \"schemaVersion\": \"messages-v1\"\n },\n \"image_support\": {\n \"max_image_size\": 5242880, // 5MB per image\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // ================\n // == Nova Lite ==\n // ================\n \"modelName\": \"Nova-Lite\",\n \"modelId\": \"us.amazon.nova-lite-v1:0\",\n \"vision\": true,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"maxTokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stopSequences\",\n \"response_chunk_element\": \"contentBlockDelta.delta.text\",\n \"response_nonchunk_element\": \"output.message.content[0].text\",\n \"special_request_schema\": {\n \"schemaVersion\": \"messages-v1\"\n },\n \"image_support\": {\n \"max_image_size\": 5242880, // 5MB per image\n \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],\n \"max_images_per_request\": 10\n }\n },\n {\n // =================\n // == Nova Micro ==\n // =================\n \"modelName\": \"Nova-Micro\",\n \"modelId\": \"us.amazon.nova-micro-v1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": true,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"maxTokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stopSequences\",\n \"response_chunk_element\": \"contentBlockDelta.delta.text\",\n \"response_nonchunk_element\": \"output.message.content[0].text\",\n \"special_request_schema\": {\n \"schemaVersion\": \"messages-v1\",\n \"inferenceConfig\": {}\n }\n },\n {\n // ====================\n // == GPT-OSS-120B ==\n // ====================\n \"modelName\": \"GPT-OSS-120B\",\n \"modelId\": \"openai.gpt-oss-120b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-120b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"special_request_schema\": {}\n },\n {\n // ===================\n // == GPT-OSS-20B ==\n // ===================\n \"modelName\": \"GPT-OSS-20B\",\n \"modelId\": \"openai.gpt-oss-20b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-20b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"special_request_schema\": {}\n },\n {\n // ==============================\n // == GPT-OSS-120B-Thinking ==\n // ==============================\n \"modelName\": \"GPT-OSS-120B-Thinking\",\n \"modelId\": \"openai.gpt-oss-120b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-120b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"preserve_reasoning\": true,\n \"special_request_schema\": {}\n },\n {\n // =============================\n // == GPT-OSS-20B-Thinking ==\n // =============================\n \"modelName\": \"GPT-OSS-20B-Thinking\",\n \"modelId\": \"openai.gpt-oss-20b-1:0\",\n // \"modelId\": \"us.openai.gpt-oss-20b-1:0\",\n \"vision\": false,\n \"messages_api\": true,\n \"system_as_separate_field\": false,\n \"display_role_names\": true,\n \"max_tokens_param_name\": \"max_completion_tokens\",\n \"max_supported_response_tokens\": 5000,\n \"stop_sequences_param_name\": \"stop_sequences\",\n \"response_chunk_element\": \"choices[0].delta.content\",\n \"response_nonchunk_element\": \"choices[0].message.content\",\n \"streaming_supported\": false,\n \"preserve_reasoning\": true,\n \"special_request_schema\": {}\n },\n {\n // ================\n // == Mistral-7b ==\n // ================\n \"modelName\": \"Mistral-7b\",\n \"modelId\": \"mistral.mistral-7b-instruct-v0:2\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<s>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"\",\n \"role_system_suffix\": \"\",\n \"role_user_message_prefix\": \"[INST]\",\n \"role_user_message_suffix\": \"[/INST]\",\n \"role_user_prefix\": \"\",\n \"role_user_suffix\": \"\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"\",\n \"role_assistant_suffix\": \"\",\n \"eom_text\": \"</s>\",\n \"display_role_names\": false,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop\",\n \"response_chunk_element\": \"outputs[0].text\"\n },\n {\n // ==================\n // == Mixtral-8x7b ==\n // ==================\n \"modelName\": \"Mixtral-8x7b\",\n \"modelId\": \"mistral.mixtral-8x7b-instruct-v0:1\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<s>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"\",\n \"role_system_suffix\": \"\",\n \"role_user_message_prefix\": \"[INST]\",\n \"role_user_message_suffix\": \"[/INST]\",\n \"role_user_prefix\": \"\",\n \"role_user_suffix\": \"\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"\",\n \"role_assistant_suffix\": \"\",\n \"eom_text\": \"</s>\",\n \"display_role_names\": false,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 4096,\n \"stop_sequences_param_name\": \"stop\",\n \"response_chunk_element\": \"outputs[0].text\"\n },\n {\n // ===================\n // == Mistral Large ==\n // ===================\n \"modelName\": \"Mistral-Large\",\n \"modelId\": \"mistral.mistral-large-2402-v1:0\",\n \"vision\": false,\n \"messages_api\": false,\n \"bos_text\": \"<s>\",\n \"role_system_message_prefix\": \"\",\n \"role_system_message_suffix\": \"\",\n \"role_system_prefix\": \"\",\n \"role_system_suffix\": \"\",\n \"role_user_message_prefix\": \"[INST]\",\n \"role_user_message_suffix\": \"[/INST]\",\n \"role_user_prefix\": \"\",\n \"role_user_suffix\": \"\",\n \"role_assistant_message_prefix\": \"\",\n \"role_assistant_message_suffix\": \"\",\n \"role_assistant_prefix\": \"\",\n \"role_assistant_suffix\": \"\",\n \"eom_text\": \"</s>\",\n \"display_role_names\": false,\n \"max_tokens_param_name\": \"max_tokens\",\n \"max_supported_response_tokens\": 8192,\n \"stop_sequences_param_name\": \"stop\",\n \"response_chunk_element\": \"outputs[0].text\"\n },\n];",
226
- "structuredPatch": [
227
- {
228
- "oldStart": 193,
229
- "oldLines": 6,
230
- "newStart": 193,
231
- "newLines": 72,
232
- "lines": [
233
- " }",
234
- " },",
235
- " {",
236
- "+ // ======================",
237
- "+ // == Claude 4.5 Haiku ==",
238
- "+ // ======================",
239
- "+ \"modelName\": \"Claude-4-5-Haiku\",",
240
- "+ // \"modelId\": \"anthropic.claude-haiku-4-5-20251001-v1:0\",",
241
- "+ \"modelId\": \"us.anthropic.claude-haiku-4-5-20251001-v1:0\",",
242
- "+ \"vision\": true,",
243
- "+ \"messages_api\": true,",
244
- "+ \"system_as_separate_field\": true,",
245
- "+ \"display_role_names\": true,",
246
- "+ \"max_tokens_param_name\": \"max_tokens\",",
247
- "+ \"max_supported_response_tokens\": 64000,",
248
- "+ \"stop_sequences_param_name\": \"stop_sequences\",",
249
- "+ \"response_chunk_element\": \"delta.text\",",
250
- "+ \"response_nonchunk_element\": \"content[0].text\",",
251
- "+ \"thinking_response_chunk_element\": \"delta.thinking\",",
252
- "+ \"thinking_response_nonchunk_element\": \"content[0].thinking\",",
253
- "+ \"parameter_restrictions\": {",
254
- "+ \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]",
255
- "+ },",
256
- "+ \"special_request_schema\": {",
257
- "+ \"anthropic_version\": \"bedrock-2023-05-31\",",
258
- "+ \"anthropic_beta\": [\"output-128k-2025-02-19\"],",
259
- "+ },",
260
- "+ \"image_support\": {",
261
- "+ \"max_image_size\": 20971520, // 20MB",
262
- "+ \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],",
263
- "+ \"max_images_per_request\": 10",
264
- "+ }",
265
- "+ },",
266
- "+ {",
267
- "+ // ===============================",
268
- "+ // == Claude 4.5 Haiku Thinking ==",
269
- "+ // ===============================",
270
- "+ \"modelName\": \"Claude-4-5-Haiku-Thinking\",",
271
- "+ // \"modelId\": \"anthropic.claude-haiku-4-5-20251001-v1:0\",",
272
- "+ \"modelId\": \"us.anthropic.claude-haiku-4-5-20251001-v1:0\",",
273
- "+ \"vision\": true,",
274
- "+ \"messages_api\": true,",
275
- "+ \"system_as_separate_field\": true,",
276
- "+ \"display_role_names\": true,",
277
- "+ \"max_tokens_param_name\": \"max_tokens\",",
278
- "+ \"max_supported_response_tokens\": 64000,",
279
- "+ \"stop_sequences_param_name\": \"stop_sequences\",",
280
- "+ \"response_chunk_element\": \"delta.text\",",
281
- "+ \"response_nonchunk_element\": \"content[0].text\",",
282
- "+ \"thinking_response_chunk_element\": \"delta.thinking\",",
283
- "+ \"thinking_response_nonchunk_element\": \"content[0].thinking\",",
284
- "+ \"parameter_restrictions\": {",
285
- "+ \"mutually_exclusive\": [[\"temperature\", \"top_p\"]]",
286
- "+ },",
287
- "+ \"special_request_schema\": {",
288
- "+ \"anthropic_version\": \"bedrock-2023-05-31\",",
289
- "+ \"anthropic_beta\": [\"output-128k-2025-02-19\"],",
290
- "+ \"thinking\": {",
291
- "+ \"type\": \"enabled\",",
292
- "+ \"budget_tokens\": 16000",
293
- "+ },",
294
- "+ },",
295
- "+ \"image_support\": {",
296
- "+ \"max_image_size\": 20971520, // 20MB",
297
- "+ \"supported_formats\": [\"jpeg\", \"png\", \"gif\", \"webp\"],",
298
- "+ \"max_images_per_request\": 10",
299
- "+ }",
300
- "+ },",
301
- "+ {",
302
- " // =====================",
303
- " // == Claude 4 Sonnet ==",
304
- " // ====================="
305
- ]
306
- }
307
- ],
308
- "userModified": false,
309
- "replaceAll": false
310
- }
311
- },
312
- {
313
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
314
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
315
- "cwd": "C:\\git\\bedrock-wrapper",
316
- "permission_mode": "bypassPermissions",
317
- "hook_event_name": "PostToolUse",
318
- "tool_name": "Bash",
319
- "tool_input": {
320
- "command": "node -c bedrock-models.js",
321
- "description": "Check JavaScript syntax in bedrock-models.js"
322
- },
323
- "tool_response": {
324
- "stdout": "",
325
- "stderr": "",
326
- "interrupted": false,
327
- "isImage": false
328
- }
329
- },
330
- {
331
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
332
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
333
- "cwd": "C:\\git\\bedrock-wrapper",
334
- "permission_mode": "bypassPermissions",
335
- "hook_event_name": "PostToolUse",
336
- "tool_name": "Grep",
337
- "tool_input": {
338
- "pattern": "\\d+\\+?\\s*models?",
339
- "output_mode": "content",
340
- "-n": true,
341
- "-i": true
342
- },
343
- "tool_response": {
344
- "mode": "content",
345
- "numFiles": 0,
346
- "filenames": [],
347
- "content": "C:\\git\\bedrock-wrapper\\bedrock-models.js:5:// The Llama 3.2 modelId's reference cross-region profile ids.\nC:\\git\\bedrock-wrapper\\CHANGELOG.md:6:- Support for Claude Sonnet 4.5 models\r\nC:\\git\\bedrock-wrapper\\CHANGELOG.md:122:- Support for Claude 3.7 models\r\nC:\\git\\bedrock-wrapper\\CLAUDE.md:7:Bedrock Wrapper (v2.5.0) is an npm package that translates OpenAI-compatible API objects to AWS Bedrock's serverless inference LLMs. It supports 32+ models including Claude, Nova, GPT-OSS, Llama, and Mistral families with features like vision support, thinking modes, and stop sequences.\nC:\\git\\bedrock-wrapper\\README.md:266:#### Claude 4+ Models (Temperature/Top-P Mutual Exclusion)\r\nC:\\git\\bedrock-wrapper\\test-models-output.txt:6:Starting tests with 34 models using Both APIs (Comparison)...\nC:\\git\\bedrock-wrapper\\test-vision-models-output.txt:6:Starting vision tests with 15 models using Both APIs (Comparison)...\nC:\\git\\bedrock-wrapper\\test-stop-sequences-output.txt:8:Starting stop sequences tests with 34 models using Both APIs (Comparison)...",
348
- "numLines": 8
349
- }
350
- },
351
- {
352
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
353
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
354
- "cwd": "C:\\git\\bedrock-wrapper",
355
- "permission_mode": "bypassPermissions",
356
- "hook_event_name": "PostToolUse",
357
- "tool_name": "Read",
358
- "tool_input": {
359
- "file_path": "c:\\git\\bedrock-wrapper\\README.md",
360
- "offset": 1,
361
- "limit": 50
362
- },
363
- "tool_response": {
364
- "type": "text",
365
- "file": {
366
- "filePath": "c:\\git\\bedrock-wrapper\\README.md",
367
- "content": "# \u00f0\u0178\u00aa\u00a8 Bedrock Wrapper\n\nBedrock Wrapper is an npm package that simplifies the integration of existing OpenAI-compatible API objects with AWS Bedrock's serverless inference LLMs. Follow the steps below to integrate into your own application, or alternativly use the \u00f0\u0178\u201d\u20ac [Bedrock Proxy Endpoint](https://github.com/jparkerweb/bedrock-proxy-endpoint) project to spin up your own custom OpenAI server endpoint for even easier inference (using the standard `baseUrl`, and `apiKey` params).\n\n![bedrock-wrapper](https://raw.githubusercontent.com/jparkerweb/bedrock-wrapper/refs/heads/main/docs/bedrock-wrapper.jpg)\n\n---\n\n### Maintained by\n<a href=\"https://www.equilllabs.com\">\n <img src=\"https://raw.githubusercontent.com/jparkerweb/eQuill-Labs/refs/heads/main/src/static/images/logo-text-outline.png\" alt=\"eQuill Labs\" height=\"40\">\n</a>\n\n---\n\n### Install\n\n- install package: `npm install bedrock-wrapper`\n\n---\n\n### Usage\n\n1. import `bedrockWrapper` \n ```javascript\n import { bedrockWrapper } from \"bedrock-wrapper\";\n ```\n\n2. create an `awsCreds` object and fill in your AWS credentials \n ```javascript\n const awsCreds = {\n region: AWS_REGION,\n accessKeyId: AWS_ACCESS_KEY_ID,\n secretAccessKey: AWS_SECRET_ACCESS_KEY,\n };\n ```\n\n3. clone your openai chat completions object into `openaiChatCompletionsCreateObject` or create a new one and edit the values \n ```javascript\n const openaiChatCompletionsCreateObject = {\n \"messages\": messages,\n \"model\": \"Claude-4-5-Sonnet\",\n \"max_tokens\": LLM_MAX_GEN_TOKENS,\n \"stream\": true,\n \"temperature\": LLM_TEMPERATURE,\n \"top_p\": LLM_TOP_P,\n \"stop_sequences\": [\"STOP\", \"END\"], // Optional: sequences that will stop generation\n };\n ```\n",
368
- "numLines": 50,
369
- "startLine": 1,
370
- "totalLines": 355
371
- }
372
- }
373
- },
374
- {
375
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
376
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
377
- "cwd": "C:\\git\\bedrock-wrapper",
378
- "permission_mode": "bypassPermissions",
379
- "hook_event_name": "PostToolUse",
380
- "tool_name": "Edit",
381
- "tool_input": {
382
- "file_path": "c:\\git\\bedrock-wrapper\\README.md",
383
- "old_string": "| Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |",
384
- "new_string": "| Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku-Thinking | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |"
385
- },
386
- "tool_response": {
387
- "filePath": "c:\\git\\bedrock-wrapper\\README.md",
388
- "oldString": "| Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |",
389
- "newString": "| Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku-Thinking | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |",
390
- "originalFile": "# \u00f0\u0178\u00aa\u00a8 Bedrock Wrapper\n\nBedrock Wrapper is an npm package that simplifies the integration of existing OpenAI-compatible API objects with AWS Bedrock's serverless inference LLMs. Follow the steps below to integrate into your own application, or alternativly use the \u00f0\u0178\u201d\u20ac [Bedrock Proxy Endpoint](https://github.com/jparkerweb/bedrock-proxy-endpoint) project to spin up your own custom OpenAI server endpoint for even easier inference (using the standard `baseUrl`, and `apiKey` params).\n\n![bedrock-wrapper](https://raw.githubusercontent.com/jparkerweb/bedrock-wrapper/refs/heads/main/docs/bedrock-wrapper.jpg)\n\n---\n\n### Maintained by\n<a href=\"https://www.equilllabs.com\">\n <img src=\"https://raw.githubusercontent.com/jparkerweb/eQuill-Labs/refs/heads/main/src/static/images/logo-text-outline.png\" alt=\"eQuill Labs\" height=\"40\">\n</a>\n\n---\n\n### Install\n\n- install package: `npm install bedrock-wrapper`\n\n---\n\n### Usage\n\n1. import `bedrockWrapper` \n ```javascript\n import { bedrockWrapper } from \"bedrock-wrapper\";\n ```\n\n2. create an `awsCreds` object and fill in your AWS credentials \n ```javascript\n const awsCreds = {\n region: AWS_REGION,\n accessKeyId: AWS_ACCESS_KEY_ID,\n secretAccessKey: AWS_SECRET_ACCESS_KEY,\n };\n ```\n\n3. clone your openai chat completions object into `openaiChatCompletionsCreateObject` or create a new one and edit the values \n ```javascript\n const openaiChatCompletionsCreateObject = {\n \"messages\": messages,\n \"model\": \"Claude-4-5-Sonnet\",\n \"max_tokens\": LLM_MAX_GEN_TOKENS,\n \"stream\": true,\n \"temperature\": LLM_TEMPERATURE,\n \"top_p\": LLM_TOP_P,\n \"stop_sequences\": [\"STOP\", \"END\"], // Optional: sequences that will stop generation\n };\n ```\n\n the `messages` variable should be in openai's role/content format (not all models support system prompts)\n ```javascript\n messages = [\n {\n role: \"system\",\n content: \"You are a helpful AI assistant that follows instructions extremely well. Answer the user questions accurately. Think step by step before answering the question. You will get a $100 tip if you provide the correct answer.\",\n },\n {\n role: \"user\",\n content: \"Describe why openai api standard used by lots of serverless LLM api providers is better than aws bedrock invoke api offered by aws bedrock. Limit your response to five sentences.\",\n },\n {\n role: \"assistant\",\n content: \"\",\n },\n ]\n ```\n\n ***the `model` value should be the corresponding `modelName` value in the `bedrock_models` section below (see Supported Models below)***\n\n4. call the `bedrockWrapper` function and pass in the previously defined `awsCreds` and `openaiChatCompletionsCreateObject` objects \n ```javascript\n // create a variable to hold the complete response\n let completeResponse = \"\";\n // invoke the streamed bedrock api response\n for await (const chunk of bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject)) {\n completeResponse += chunk;\n // ---------------------------------------------------\n // -- each chunk is streamed as it is received here --\n // ---------------------------------------------------\n process.stdout.write(chunk); // \u00e2\u2021\u00a0 do stuff with the streamed chunk\n }\n // console.log(`\\n\\completeResponse:\\n${completeResponse}\\n`); // \u00e2\u2021\u00a0 optional do stuff with the complete response returned from the API reguardless of stream or not\n ```\n\n if calling the unstreamed version you can call bedrockWrapper like this \n ```javascript\n // create a variable to hold the complete response\n let completeResponse = \"\";\n if (!openaiChatCompletionsCreateObject.stream){ // invoke the unstreamed bedrock api response\n const response = await bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject);\n for await (const data of response) {\n completeResponse += data;\n }\n // ----------------------------------------------------\n // -- unstreamed complete response is available here --\n // ----------------------------------------------------\n console.log(`\\n\\completeResponse:\\n${completeResponse}\\n`); // \u00e2\u2021\u00a0 do stuff with the complete response\n }\n\n5. **NEW: Using the Converse API (optional)**\n \n You can now optionally use AWS Bedrock's Converse API instead of the Invoke API by passing `useConverseAPI: true` in the options parameter:\n ```javascript\n // Use the Converse API for unified request/response format across all models\n for await (const chunk of bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject, { useConverseAPI: true })) {\n completeResponse += chunk;\n process.stdout.write(chunk);\n }\n ```\n \n The Converse API provides:\n - **Consistent API**: Single request/response format across all models\n - **Simplified conversation management**: Better handling of multi-turn conversations\n - **System prompts**: Cleaner separation of system instructions\n - **Tool use support**: Native support for function calling (where supported)\n - **Unified multimodal**: Consistent handling of text and image inputs\n\n---\n\n### Supported Models\n\n| modelName | AWS Model Id | Image |\n|----------------------------|----------------------------------------------|-------|\n| Claude-4-1-Opus | us.anthropic.claude-opus-4-1-20250805-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-1-Opus-Thinking | us.anthropic.claude-opus-4-1-20250805-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Opus | us.anthropic.claude-opus-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Opus-Thinking | us.anthropic.claude-opus-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet-Thinking | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-7-Sonnet-Thinking | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-7-Sonnet | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Sonnet-v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Sonnet | anthropic.claude-3-5-sonnet-20240620-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 | \u00e2\udc9d\u0152 |\n| Claude-3-Haiku | anthropic.claude-3-haiku-20240307-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Pro | us.amazon.nova-pro-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Lite | us.amazon.nova-lite-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Micro | us.amazon.nova-micro-v1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-120B | openai.gpt-oss-120b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-120B-Thinking | openai.gpt-oss-120b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-20B | openai.gpt-oss-20b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-20B-Thinking | openai.gpt-oss-20b-1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-3-70b | us.meta.llama3-3-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-1b | us.meta.llama3-2-1b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-3b | us.meta.llama3-2-3b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-11b | us.meta.llama3-2-11b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-90b | us.meta.llama3-2-90b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-8b | meta.llama3-1-8b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-70b | meta.llama3-1-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-405b | meta.llama3-1-405b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-8b | meta.llama3-8b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-70b | meta.llama3-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Mistral-7b | mistral.mistral-7b-instruct-v0:2 | \u00e2\udc9d\u0152 |\n| Mixtral-8x7b | mistral.mixtral-8x7b-instruct-v0:1 | \u00e2\udc9d\u0152 |\n| Mistral-Large | mistral.mistral-large-2402-v1:0 | \u00e2\udc9d\u0152 |\n \nTo return the list progrmatically you can import and call `listBedrockWrapperSupportedModels`: \n```javascript\nimport { listBedrockWrapperSupportedModels } from 'bedrock-wrapper';\nconsole.log(`\\nsupported models:\\n${JSON.stringify(await listBedrockWrapperSupportedModels())}\\n`);\n```\n\nAdditional Bedrock model support can be added. \nPlease modify the `bedrock_models.js` file and submit a PR \u00f0\u0178\udc8f\u2020 or create an Issue.\n\n---\n\n### Image Support\n\nFor models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):\n\n```javascript\nmessages = [\n {\n role: \"system\",\n content: \"You are a helpful AI assistant that can analyze images.\",\n },\n {\n role: \"user\",\n content: [\n { type: \"text\", text: \"What's in this image?\" },\n { \n type: \"image_url\", \n image_url: {\n url: \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...\" // base64 encoded image\n }\n }\n ]\n }\n]\n```\n\nYou can also use a direct URL to an image instead of base64 encoding:\n\n```javascript\nmessages = [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: \"Describe this image in detail.\" },\n { \n type: \"image_url\", \n image_url: {\n url: \"https://example.com/path/to/image.jpg\" // direct URL to image\n }\n }\n ]\n }\n]\n```\n\nYou can include multiple images in a single message by adding more image_url objects to the content array.\n\n---\n\n### Stop Sequences\n\nStop sequences are custom text sequences that cause the model to stop generating text. This is useful for controlling where the model stops its response.\n\n```javascript\nconst openaiChatCompletionsCreateObject = {\n \"messages\": messages,\n \"model\": \"Claude-3-5-Sonnet\",\n \"max_tokens\": 100,\n \"stop_sequences\": [\"STOP\", \"END\", \"\\n\\n\"], // Array of stop sequences\n // OR use single string format:\n // \"stop\": \"STOP\"\n};\n```\n\n**Model Support:**\n- \u00e2\u0153\u2026 **Claude models**: Fully supported (up to 8,191 sequences)\n- \u00e2\u0153\u2026 **Nova models**: Fully supported (up to 4 sequences) \n- \u00e2\u0153\u2026 **GPT-OSS models**: Fully supported\n- \u00e2\u0153\u2026 **Mistral models**: Fully supported (up to 10 sequences)\n- \u00e2\udc9d\u0152 **Llama models**: Not supported (AWS Bedrock limitation)\n\n**Features:**\n- Compatible with OpenAI's `stop` parameter (single string or array)\n- Also accepts `stop_sequences` parameter for explicit usage\n- Automatic conversion between string and array formats\n- Model-specific parameter mapping handled automatically\n\n**Example Usage:**\n```javascript\n// Stop generation when model tries to output \"7\"\nconst result = await bedrockWrapper(awsCreds, {\n messages: [{ role: \"user\", content: \"Count from 1 to 10\" }],\n model: \"Claude-3-5-Sonnet\", // Use Claude, Nova, or Mistral models\n stop_sequences: [\"7\"]\n});\n// Response: \"1, 2, 3, 4, 5, 6,\" (stops before \"7\")\n\n// Note: Llama models will ignore stop sequences due to AWS Bedrock limitations\n```\n\n---\n\n### Parameter Restrictions\n\nSome AWS Bedrock models have specific parameter restrictions that are automatically handled by the wrapper:\n\n#### Claude 4+ Models (Temperature/Top-P Mutual Exclusion)\n\n**Affected Models:**\n- Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking\n- Claude-4-Sonnet & Claude-4-Sonnet-Thinking \n- Claude-4-Opus & Claude-4-Opus-Thinking\n- Claude-4-1-Opus & Claude-4-1-Opus-Thinking\n\n**Restriction:** These models cannot accept both `temperature` and `top_p` parameters simultaneously.\n\n**Automatic Handling:** When both parameters are provided, the wrapper automatically:\n1. **Keeps `temperature`** (prioritized as more commonly used)\n2. **Removes `top_p`** to prevent validation errors\n3. **Works with both APIs** (Invoke API and Converse API)\n\n```javascript\nconst request = {\n messages: [{ role: \"user\", content: \"Hello\" }],\n model: \"Claude-4-5-Sonnet\",\n temperature: 0.7, // \u00e2\u0153\u2026 Kept\n top_p: 0.9 // \u00e2\udc9d\u0152 Automatically removed\n};\n\n// No error thrown - wrapper handles the restriction automatically\nconst response = await bedrockWrapper(awsCreds, request);\n```\n\n**Why This Happens:** AWS Bedrock enforces this restriction on newer Claude models to ensure optimal performance and prevent conflicting sampling parameters.\n\n---\n\n### \u00f0\u0178\u00a7\u00aa Testing\n\nThe package includes comprehensive test suites to verify functionality:\n\n```bash\n# Test all models with the Both APIs (Comparison)\nnpm run test\n\n# Test all models with the Invoke API\nnpm run test:invoke\n\n# Test all models with the Converse API\nnpm run test:converse\n\n# Test vision/multimodal capabilities with Both APIs (Comparison)\nnpm run test-vision\n\n# Test vision/multimodal capabilities with Invoke API\nnpm run test-vision:invoke\n\n# Test vision/multimodal capabilities with Converse API\nnpm run test-vision:converse\n\n# Test stop sequences functionality with Both APIs (Comparison)\nnpm run test-stop\n\n# Test stop sequences functionality with Invoke API\nnpm run test-stop:invoke\n\n# Test stop sequences functionality with Converse API\nnpm run test-stop:converse\n\n# Interactive testing\nnpm run interactive\n```\n\n---\n\n### \u00f0\u0178\u201c\u00a2 P.S.\n\nIn case you missed it at the beginning of this doc, for an even easier setup, use the \u00f0\u0178\u201d\u20ac [Bedrock Proxy Endpoint](https://github.com/jparkerweb/bedrock-proxy-endpoint) project to spin up your own custom OpenAI server endpoint (using the standard `baseUrl`, and `apiKey` params).\n\n![bedrock-proxy-endpoing](./docs/bedrock-proxy-endpoint.jpg)\n\n---\n\n### \u00f0\u0178\u201c\u0161 References\n\n- [AWS Meta Llama Models User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-meta.html)\n- [AWS Mistral Models User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-mistral.html)\n- [OpenAI API](https://platform.openai.com/docs/api-reference/chat/create)\n- [AWS Bedrock](https://aws.amazon.com/bedrock/)\n- [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/)\n\n---\n\nPlease consider sending me a tip to support my work \u00f0\u0178\u02dc\u20ac\n# [\u00f0\u0178\udc8d\u00b5 tip me here](https://ko-fi.com/jparkerweb)\n",
391
- "structuredPatch": [
392
- {
393
- "oldStart": 128,
394
- "oldLines": 6,
395
- "newStart": 128,
396
- "newLines": 8,
397
- "lines": [
398
- " | Claude-4-Opus-Thinking | us.anthropic.claude-opus-4-20250514-v1:0 | \u00e2\u0153\u2026 |",
399
- " | Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |",
400
- " | Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |",
401
- "+| Claude-4-5-Haiku | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |",
402
- "+| Claude-4-5-Haiku-Thinking | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |",
403
- " | Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |",
404
- " | Claude-4-Sonnet-Thinking | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |",
405
- " | Claude-3-7-Sonnet-Thinking | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | \u00e2\u0153\u2026 |"
406
- ]
407
- }
408
- ],
409
- "userModified": false,
410
- "replaceAll": false
411
- }
412
- },
413
- {
414
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
415
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
416
- "cwd": "C:\\git\\bedrock-wrapper",
417
- "permission_mode": "bypassPermissions",
418
- "hook_event_name": "PostToolUse",
419
- "tool_name": "Edit",
420
- "tool_input": {
421
- "file_path": "c:\\git\\bedrock-wrapper\\README.md",
422
- "old_string": "For models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):",
423
- "new_string": "For models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 4.5 Haiku, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):"
424
- },
425
- "tool_response": {
426
- "filePath": "c:\\git\\bedrock-wrapper\\README.md",
427
- "oldString": "For models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):",
428
- "newString": "For models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 4.5 Haiku, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):",
429
- "originalFile": "# \u00f0\u0178\u00aa\u00a8 Bedrock Wrapper\n\nBedrock Wrapper is an npm package that simplifies the integration of existing OpenAI-compatible API objects with AWS Bedrock's serverless inference LLMs. Follow the steps below to integrate into your own application, or alternativly use the \u00f0\u0178\u201d\u20ac [Bedrock Proxy Endpoint](https://github.com/jparkerweb/bedrock-proxy-endpoint) project to spin up your own custom OpenAI server endpoint for even easier inference (using the standard `baseUrl`, and `apiKey` params).\n\n![bedrock-wrapper](https://raw.githubusercontent.com/jparkerweb/bedrock-wrapper/refs/heads/main/docs/bedrock-wrapper.jpg)\n\n---\n\n### Maintained by\n<a href=\"https://www.equilllabs.com\">\n <img src=\"https://raw.githubusercontent.com/jparkerweb/eQuill-Labs/refs/heads/main/src/static/images/logo-text-outline.png\" alt=\"eQuill Labs\" height=\"40\">\n</a>\n\n---\n\n### Install\n\n- install package: `npm install bedrock-wrapper`\n\n---\n\n### Usage\n\n1. import `bedrockWrapper` \n ```javascript\n import { bedrockWrapper } from \"bedrock-wrapper\";\n ```\n\n2. create an `awsCreds` object and fill in your AWS credentials \n ```javascript\n const awsCreds = {\n region: AWS_REGION,\n accessKeyId: AWS_ACCESS_KEY_ID,\n secretAccessKey: AWS_SECRET_ACCESS_KEY,\n };\n ```\n\n3. clone your openai chat completions object into `openaiChatCompletionsCreateObject` or create a new one and edit the values \n ```javascript\n const openaiChatCompletionsCreateObject = {\n \"messages\": messages,\n \"model\": \"Claude-4-5-Sonnet\",\n \"max_tokens\": LLM_MAX_GEN_TOKENS,\n \"stream\": true,\n \"temperature\": LLM_TEMPERATURE,\n \"top_p\": LLM_TOP_P,\n \"stop_sequences\": [\"STOP\", \"END\"], // Optional: sequences that will stop generation\n };\n ```\n\n the `messages` variable should be in openai's role/content format (not all models support system prompts)\n ```javascript\n messages = [\n {\n role: \"system\",\n content: \"You are a helpful AI assistant that follows instructions extremely well. Answer the user questions accurately. Think step by step before answering the question. You will get a $100 tip if you provide the correct answer.\",\n },\n {\n role: \"user\",\n content: \"Describe why openai api standard used by lots of serverless LLM api providers is better than aws bedrock invoke api offered by aws bedrock. Limit your response to five sentences.\",\n },\n {\n role: \"assistant\",\n content: \"\",\n },\n ]\n ```\n\n ***the `model` value should be the corresponding `modelName` value in the `bedrock_models` section below (see Supported Models below)***\n\n4. call the `bedrockWrapper` function and pass in the previously defined `awsCreds` and `openaiChatCompletionsCreateObject` objects \n ```javascript\n // create a variable to hold the complete response\n let completeResponse = \"\";\n // invoke the streamed bedrock api response\n for await (const chunk of bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject)) {\n completeResponse += chunk;\n // ---------------------------------------------------\n // -- each chunk is streamed as it is received here --\n // ---------------------------------------------------\n process.stdout.write(chunk); // \u00e2\u2021\u00a0 do stuff with the streamed chunk\n }\n // console.log(`\\n\\completeResponse:\\n${completeResponse}\\n`); // \u00e2\u2021\u00a0 optional do stuff with the complete response returned from the API reguardless of stream or not\n ```\n\n if calling the unstreamed version you can call bedrockWrapper like this \n ```javascript\n // create a variable to hold the complete response\n let completeResponse = \"\";\n if (!openaiChatCompletionsCreateObject.stream){ // invoke the unstreamed bedrock api response\n const response = await bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject);\n for await (const data of response) {\n completeResponse += data;\n }\n // ----------------------------------------------------\n // -- unstreamed complete response is available here --\n // ----------------------------------------------------\n console.log(`\\n\\completeResponse:\\n${completeResponse}\\n`); // \u00e2\u2021\u00a0 do stuff with the complete response\n }\n\n5. **NEW: Using the Converse API (optional)**\n \n You can now optionally use AWS Bedrock's Converse API instead of the Invoke API by passing `useConverseAPI: true` in the options parameter:\n ```javascript\n // Use the Converse API for unified request/response format across all models\n for await (const chunk of bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject, { useConverseAPI: true })) {\n completeResponse += chunk;\n process.stdout.write(chunk);\n }\n ```\n \n The Converse API provides:\n - **Consistent API**: Single request/response format across all models\n - **Simplified conversation management**: Better handling of multi-turn conversations\n - **System prompts**: Cleaner separation of system instructions\n - **Tool use support**: Native support for function calling (where supported)\n - **Unified multimodal**: Consistent handling of text and image inputs\n\n---\n\n### Supported Models\n\n| modelName | AWS Model Id | Image |\n|----------------------------|----------------------------------------------|-------|\n| Claude-4-1-Opus | us.anthropic.claude-opus-4-1-20250805-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-1-Opus-Thinking | us.anthropic.claude-opus-4-1-20250805-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Opus | us.anthropic.claude-opus-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Opus-Thinking | us.anthropic.claude-opus-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku-Thinking | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet-Thinking | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-7-Sonnet-Thinking | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-7-Sonnet | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Sonnet-v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Sonnet | anthropic.claude-3-5-sonnet-20240620-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 | \u00e2\udc9d\u0152 |\n| Claude-3-Haiku | anthropic.claude-3-haiku-20240307-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Pro | us.amazon.nova-pro-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Lite | us.amazon.nova-lite-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Micro | us.amazon.nova-micro-v1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-120B | openai.gpt-oss-120b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-120B-Thinking | openai.gpt-oss-120b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-20B | openai.gpt-oss-20b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-20B-Thinking | openai.gpt-oss-20b-1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-3-70b | us.meta.llama3-3-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-1b | us.meta.llama3-2-1b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-3b | us.meta.llama3-2-3b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-11b | us.meta.llama3-2-11b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-90b | us.meta.llama3-2-90b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-8b | meta.llama3-1-8b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-70b | meta.llama3-1-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-405b | meta.llama3-1-405b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-8b | meta.llama3-8b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-70b | meta.llama3-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Mistral-7b | mistral.mistral-7b-instruct-v0:2 | \u00e2\udc9d\u0152 |\n| Mixtral-8x7b | mistral.mixtral-8x7b-instruct-v0:1 | \u00e2\udc9d\u0152 |\n| Mistral-Large | mistral.mistral-large-2402-v1:0 | \u00e2\udc9d\u0152 |\n \nTo return the list progrmatically you can import and call `listBedrockWrapperSupportedModels`: \n```javascript\nimport { listBedrockWrapperSupportedModels } from 'bedrock-wrapper';\nconsole.log(`\\nsupported models:\\n${JSON.stringify(await listBedrockWrapperSupportedModels())}\\n`);\n```\n\nAdditional Bedrock model support can be added. \nPlease modify the `bedrock_models.js` file and submit a PR \u00f0\u0178\udc8f\u2020 or create an Issue.\n\n---\n\n### Image Support\n\nFor models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):\n\n```javascript\nmessages = [\n {\n role: \"system\",\n content: \"You are a helpful AI assistant that can analyze images.\",\n },\n {\n role: \"user\",\n content: [\n { type: \"text\", text: \"What's in this image?\" },\n { \n type: \"image_url\", \n image_url: {\n url: \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...\" // base64 encoded image\n }\n }\n ]\n }\n]\n```\n\nYou can also use a direct URL to an image instead of base64 encoding:\n\n```javascript\nmessages = [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: \"Describe this image in detail.\" },\n { \n type: \"image_url\", \n image_url: {\n url: \"https://example.com/path/to/image.jpg\" // direct URL to image\n }\n }\n ]\n }\n]\n```\n\nYou can include multiple images in a single message by adding more image_url objects to the content array.\n\n---\n\n### Stop Sequences\n\nStop sequences are custom text sequences that cause the model to stop generating text. This is useful for controlling where the model stops its response.\n\n```javascript\nconst openaiChatCompletionsCreateObject = {\n \"messages\": messages,\n \"model\": \"Claude-3-5-Sonnet\",\n \"max_tokens\": 100,\n \"stop_sequences\": [\"STOP\", \"END\", \"\\n\\n\"], // Array of stop sequences\n // OR use single string format:\n // \"stop\": \"STOP\"\n};\n```\n\n**Model Support:**\n- \u00e2\u0153\u2026 **Claude models**: Fully supported (up to 8,191 sequences)\n- \u00e2\u0153\u2026 **Nova models**: Fully supported (up to 4 sequences) \n- \u00e2\u0153\u2026 **GPT-OSS models**: Fully supported\n- \u00e2\u0153\u2026 **Mistral models**: Fully supported (up to 10 sequences)\n- \u00e2\udc9d\u0152 **Llama models**: Not supported (AWS Bedrock limitation)\n\n**Features:**\n- Compatible with OpenAI's `stop` parameter (single string or array)\n- Also accepts `stop_sequences` parameter for explicit usage\n- Automatic conversion between string and array formats\n- Model-specific parameter mapping handled automatically\n\n**Example Usage:**\n```javascript\n// Stop generation when model tries to output \"7\"\nconst result = await bedrockWrapper(awsCreds, {\n messages: [{ role: \"user\", content: \"Count from 1 to 10\" }],\n model: \"Claude-3-5-Sonnet\", // Use Claude, Nova, or Mistral models\n stop_sequences: [\"7\"]\n});\n// Response: \"1, 2, 3, 4, 5, 6,\" (stops before \"7\")\n\n// Note: Llama models will ignore stop sequences due to AWS Bedrock limitations\n```\n\n---\n\n### Parameter Restrictions\n\nSome AWS Bedrock models have specific parameter restrictions that are automatically handled by the wrapper:\n\n#### Claude 4+ Models (Temperature/Top-P Mutual Exclusion)\n\n**Affected Models:**\n- Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking\n- Claude-4-Sonnet & Claude-4-Sonnet-Thinking \n- Claude-4-Opus & Claude-4-Opus-Thinking\n- Claude-4-1-Opus & Claude-4-1-Opus-Thinking\n\n**Restriction:** These models cannot accept both `temperature` and `top_p` parameters simultaneously.\n\n**Automatic Handling:** When both parameters are provided, the wrapper automatically:\n1. **Keeps `temperature`** (prioritized as more commonly used)\n2. **Removes `top_p`** to prevent validation errors\n3. **Works with both APIs** (Invoke API and Converse API)\n\n```javascript\nconst request = {\n messages: [{ role: \"user\", content: \"Hello\" }],\n model: \"Claude-4-5-Sonnet\",\n temperature: 0.7, // \u00e2\u0153\u2026 Kept\n top_p: 0.9 // \u00e2\udc9d\u0152 Automatically removed\n};\n\n// No error thrown - wrapper handles the restriction automatically\nconst response = await bedrockWrapper(awsCreds, request);\n```\n\n**Why This Happens:** AWS Bedrock enforces this restriction on newer Claude models to ensure optimal performance and prevent conflicting sampling parameters.\n\n---\n\n### \u00f0\u0178\u00a7\u00aa Testing\n\nThe package includes comprehensive test suites to verify functionality:\n\n```bash\n# Test all models with the Both APIs (Comparison)\nnpm run test\n\n# Test all models with the Invoke API\nnpm run test:invoke\n\n# Test all models with the Converse API\nnpm run test:converse\n\n# Test vision/multimodal capabilities with Both APIs (Comparison)\nnpm run test-vision\n\n# Test vision/multimodal capabilities with Invoke API\nnpm run test-vision:invoke\n\n# Test vision/multimodal capabilities with Converse API\nnpm run test-vision:converse\n\n# Test stop sequences functionality with Both APIs (Comparison)\nnpm run test-stop\n\n# Test stop sequences functionality with Invoke API\nnpm run test-stop:invoke\n\n# Test stop sequences functionality with Converse API\nnpm run test-stop:converse\n\n# Interactive testing\nnpm run interactive\n```\n\n---\n\n### \u00f0\u0178\u201c\u00a2 P.S.\n\nIn case you missed it at the beginning of this doc, for an even easier setup, use the \u00f0\u0178\u201d\u20ac [Bedrock Proxy Endpoint](https://github.com/jparkerweb/bedrock-proxy-endpoint) project to spin up your own custom OpenAI server endpoint (using the standard `baseUrl`, and `apiKey` params).\n\n![bedrock-proxy-endpoing](./docs/bedrock-proxy-endpoint.jpg)\n\n---\n\n### \u00f0\u0178\u201c\u0161 References\n\n- [AWS Meta Llama Models User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-meta.html)\n- [AWS Mistral Models User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-mistral.html)\n- [OpenAI API](https://platform.openai.com/docs/api-reference/chat/create)\n- [AWS Bedrock](https://aws.amazon.com/bedrock/)\n- [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/)\n\n---\n\nPlease consider sending me a tip to support my work \u00f0\u0178\u02dc\u20ac\n# [\u00f0\u0178\udc8d\u00b5 tip me here](https://ko-fi.com/jparkerweb)\n",
430
- "structuredPatch": [
431
- {
432
- "oldStart": 172,
433
- "oldLines": 7,
434
- "newStart": 172,
435
- "newLines": 7,
436
- "lines": [
437
- " ",
438
- " ### Image Support",
439
- " ",
440
- "-For models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):",
441
- "+For models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 4.5 Haiku, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):",
442
- " ",
443
- " ```javascript",
444
- " messages = ["
445
- ]
446
- }
447
- ],
448
- "userModified": false,
449
- "replaceAll": false
450
- }
451
- },
452
- {
453
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
454
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
455
- "cwd": "C:\\git\\bedrock-wrapper",
456
- "permission_mode": "bypassPermissions",
457
- "hook_event_name": "PostToolUse",
458
- "tool_name": "Edit",
459
- "tool_input": {
460
- "file_path": "c:\\git\\bedrock-wrapper\\README.md",
461
- "old_string": "**Affected Models:**\n- Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking\n- Claude-4-Sonnet & Claude-4-Sonnet-Thinking \n- Claude-4-Opus & Claude-4-Opus-Thinking\n- Claude-4-1-Opus & Claude-4-1-Opus-Thinking",
462
- "new_string": "**Affected Models:**\n- Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking\n- Claude-4-5-Haiku & Claude-4-5-Haiku-Thinking\n- Claude-4-Sonnet & Claude-4-Sonnet-Thinking\n- Claude-4-Opus & Claude-4-Opus-Thinking\n- Claude-4-1-Opus & Claude-4-1-Opus-Thinking"
463
- },
464
- "tool_response": {
465
- "filePath": "c:\\git\\bedrock-wrapper\\README.md",
466
- "oldString": "**Affected Models:**\n- Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking\n- Claude-4-Sonnet & Claude-4-Sonnet-Thinking \n- Claude-4-Opus & Claude-4-Opus-Thinking\n- Claude-4-1-Opus & Claude-4-1-Opus-Thinking",
467
- "newString": "**Affected Models:**\n- Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking\n- Claude-4-5-Haiku & Claude-4-5-Haiku-Thinking\n- Claude-4-Sonnet & Claude-4-Sonnet-Thinking\n- Claude-4-Opus & Claude-4-Opus-Thinking\n- Claude-4-1-Opus & Claude-4-1-Opus-Thinking",
468
- "originalFile": "# \u00f0\u0178\u00aa\u00a8 Bedrock Wrapper\n\nBedrock Wrapper is an npm package that simplifies the integration of existing OpenAI-compatible API objects with AWS Bedrock's serverless inference LLMs. Follow the steps below to integrate into your own application, or alternativly use the \u00f0\u0178\u201d\u20ac [Bedrock Proxy Endpoint](https://github.com/jparkerweb/bedrock-proxy-endpoint) project to spin up your own custom OpenAI server endpoint for even easier inference (using the standard `baseUrl`, and `apiKey` params).\n\n![bedrock-wrapper](https://raw.githubusercontent.com/jparkerweb/bedrock-wrapper/refs/heads/main/docs/bedrock-wrapper.jpg)\n\n---\n\n### Maintained by\n<a href=\"https://www.equilllabs.com\">\n <img src=\"https://raw.githubusercontent.com/jparkerweb/eQuill-Labs/refs/heads/main/src/static/images/logo-text-outline.png\" alt=\"eQuill Labs\" height=\"40\">\n</a>\n\n---\n\n### Install\n\n- install package: `npm install bedrock-wrapper`\n\n---\n\n### Usage\n\n1. import `bedrockWrapper` \n ```javascript\n import { bedrockWrapper } from \"bedrock-wrapper\";\n ```\n\n2. create an `awsCreds` object and fill in your AWS credentials \n ```javascript\n const awsCreds = {\n region: AWS_REGION,\n accessKeyId: AWS_ACCESS_KEY_ID,\n secretAccessKey: AWS_SECRET_ACCESS_KEY,\n };\n ```\n\n3. clone your openai chat completions object into `openaiChatCompletionsCreateObject` or create a new one and edit the values \n ```javascript\n const openaiChatCompletionsCreateObject = {\n \"messages\": messages,\n \"model\": \"Claude-4-5-Sonnet\",\n \"max_tokens\": LLM_MAX_GEN_TOKENS,\n \"stream\": true,\n \"temperature\": LLM_TEMPERATURE,\n \"top_p\": LLM_TOP_P,\n \"stop_sequences\": [\"STOP\", \"END\"], // Optional: sequences that will stop generation\n };\n ```\n\n the `messages` variable should be in openai's role/content format (not all models support system prompts)\n ```javascript\n messages = [\n {\n role: \"system\",\n content: \"You are a helpful AI assistant that follows instructions extremely well. Answer the user questions accurately. Think step by step before answering the question. You will get a $100 tip if you provide the correct answer.\",\n },\n {\n role: \"user\",\n content: \"Describe why openai api standard used by lots of serverless LLM api providers is better than aws bedrock invoke api offered by aws bedrock. Limit your response to five sentences.\",\n },\n {\n role: \"assistant\",\n content: \"\",\n },\n ]\n ```\n\n ***the `model` value should be the corresponding `modelName` value in the `bedrock_models` section below (see Supported Models below)***\n\n4. call the `bedrockWrapper` function and pass in the previously defined `awsCreds` and `openaiChatCompletionsCreateObject` objects \n ```javascript\n // create a variable to hold the complete response\n let completeResponse = \"\";\n // invoke the streamed bedrock api response\n for await (const chunk of bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject)) {\n completeResponse += chunk;\n // ---------------------------------------------------\n // -- each chunk is streamed as it is received here --\n // ---------------------------------------------------\n process.stdout.write(chunk); // \u00e2\u2021\u00a0 do stuff with the streamed chunk\n }\n // console.log(`\\n\\completeResponse:\\n${completeResponse}\\n`); // \u00e2\u2021\u00a0 optional do stuff with the complete response returned from the API reguardless of stream or not\n ```\n\n if calling the unstreamed version you can call bedrockWrapper like this \n ```javascript\n // create a variable to hold the complete response\n let completeResponse = \"\";\n if (!openaiChatCompletionsCreateObject.stream){ // invoke the unstreamed bedrock api response\n const response = await bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject);\n for await (const data of response) {\n completeResponse += data;\n }\n // ----------------------------------------------------\n // -- unstreamed complete response is available here --\n // ----------------------------------------------------\n console.log(`\\n\\completeResponse:\\n${completeResponse}\\n`); // \u00e2\u2021\u00a0 do stuff with the complete response\n }\n\n5. **NEW: Using the Converse API (optional)**\n \n You can now optionally use AWS Bedrock's Converse API instead of the Invoke API by passing `useConverseAPI: true` in the options parameter:\n ```javascript\n // Use the Converse API for unified request/response format across all models\n for await (const chunk of bedrockWrapper(awsCreds, openaiChatCompletionsCreateObject, { useConverseAPI: true })) {\n completeResponse += chunk;\n process.stdout.write(chunk);\n }\n ```\n \n The Converse API provides:\n - **Consistent API**: Single request/response format across all models\n - **Simplified conversation management**: Better handling of multi-turn conversations\n - **System prompts**: Cleaner separation of system instructions\n - **Tool use support**: Native support for function calling (where supported)\n - **Unified multimodal**: Consistent handling of text and image inputs\n\n---\n\n### Supported Models\n\n| modelName | AWS Model Id | Image |\n|----------------------------|----------------------------------------------|-------|\n| Claude-4-1-Opus | us.anthropic.claude-opus-4-1-20250805-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-1-Opus-Thinking | us.anthropic.claude-opus-4-1-20250805-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Opus | us.anthropic.claude-opus-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Opus-Thinking | us.anthropic.claude-opus-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Sonnet-Thinking | us.anthropic.claude-sonnet-4-5-20250929-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-5-Haiku-Thinking | us.anthropic.claude-haiku-4-5-20251001-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-4-Sonnet-Thinking | us.anthropic.claude-sonnet-4-20250514-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-7-Sonnet-Thinking | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-7-Sonnet | us.anthropic.claude-3-7-sonnet-20250219-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Sonnet-v2 | anthropic.claude-3-5-sonnet-20241022-v2:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Sonnet | anthropic.claude-3-5-sonnet-20240620-v1:0 | \u00e2\u0153\u2026 |\n| Claude-3-5-Haiku | anthropic.claude-3-5-haiku-20241022-v1:0 | \u00e2\udc9d\u0152 |\n| Claude-3-Haiku | anthropic.claude-3-haiku-20240307-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Pro | us.amazon.nova-pro-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Lite | us.amazon.nova-lite-v1:0 | \u00e2\u0153\u2026 |\n| Nova-Micro | us.amazon.nova-micro-v1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-120B | openai.gpt-oss-120b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-120B-Thinking | openai.gpt-oss-120b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-20B | openai.gpt-oss-20b-1:0 | \u00e2\udc9d\u0152 |\n| GPT-OSS-20B-Thinking | openai.gpt-oss-20b-1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-3-70b | us.meta.llama3-3-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-1b | us.meta.llama3-2-1b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-3b | us.meta.llama3-2-3b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-11b | us.meta.llama3-2-11b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-2-90b | us.meta.llama3-2-90b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-8b | meta.llama3-1-8b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-70b | meta.llama3-1-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-1-405b | meta.llama3-1-405b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-8b | meta.llama3-8b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Llama-3-70b | meta.llama3-70b-instruct-v1:0 | \u00e2\udc9d\u0152 |\n| Mistral-7b | mistral.mistral-7b-instruct-v0:2 | \u00e2\udc9d\u0152 |\n| Mixtral-8x7b | mistral.mixtral-8x7b-instruct-v0:1 | \u00e2\udc9d\u0152 |\n| Mistral-Large | mistral.mistral-large-2402-v1:0 | \u00e2\udc9d\u0152 |\n \nTo return the list progrmatically you can import and call `listBedrockWrapperSupportedModels`: \n```javascript\nimport { listBedrockWrapperSupportedModels } from 'bedrock-wrapper';\nconsole.log(`\\nsupported models:\\n${JSON.stringify(await listBedrockWrapperSupportedModels())}\\n`);\n```\n\nAdditional Bedrock model support can be added. \nPlease modify the `bedrock_models.js` file and submit a PR \u00f0\u0178\udc8f\u2020 or create an Issue.\n\n---\n\n### Image Support\n\nFor models with image support (Claude 4+ series including Claude 4.5 Sonnet, Claude 4.5 Haiku, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3 Haiku, Nova Pro, and Nova Lite), you can include images in your messages using the following format (not all models support system prompts):\n\n```javascript\nmessages = [\n {\n role: \"system\",\n content: \"You are a helpful AI assistant that can analyze images.\",\n },\n {\n role: \"user\",\n content: [\n { type: \"text\", text: \"What's in this image?\" },\n { \n type: \"image_url\", \n image_url: {\n url: \"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEA...\" // base64 encoded image\n }\n }\n ]\n }\n]\n```\n\nYou can also use a direct URL to an image instead of base64 encoding:\n\n```javascript\nmessages = [\n {\n role: \"user\",\n content: [\n { type: \"text\", text: \"Describe this image in detail.\" },\n { \n type: \"image_url\", \n image_url: {\n url: \"https://example.com/path/to/image.jpg\" // direct URL to image\n }\n }\n ]\n }\n]\n```\n\nYou can include multiple images in a single message by adding more image_url objects to the content array.\n\n---\n\n### Stop Sequences\n\nStop sequences are custom text sequences that cause the model to stop generating text. This is useful for controlling where the model stops its response.\n\n```javascript\nconst openaiChatCompletionsCreateObject = {\n \"messages\": messages,\n \"model\": \"Claude-3-5-Sonnet\",\n \"max_tokens\": 100,\n \"stop_sequences\": [\"STOP\", \"END\", \"\\n\\n\"], // Array of stop sequences\n // OR use single string format:\n // \"stop\": \"STOP\"\n};\n```\n\n**Model Support:**\n- \u00e2\u0153\u2026 **Claude models**: Fully supported (up to 8,191 sequences)\n- \u00e2\u0153\u2026 **Nova models**: Fully supported (up to 4 sequences) \n- \u00e2\u0153\u2026 **GPT-OSS models**: Fully supported\n- \u00e2\u0153\u2026 **Mistral models**: Fully supported (up to 10 sequences)\n- \u00e2\udc9d\u0152 **Llama models**: Not supported (AWS Bedrock limitation)\n\n**Features:**\n- Compatible with OpenAI's `stop` parameter (single string or array)\n- Also accepts `stop_sequences` parameter for explicit usage\n- Automatic conversion between string and array formats\n- Model-specific parameter mapping handled automatically\n\n**Example Usage:**\n```javascript\n// Stop generation when model tries to output \"7\"\nconst result = await bedrockWrapper(awsCreds, {\n messages: [{ role: \"user\", content: \"Count from 1 to 10\" }],\n model: \"Claude-3-5-Sonnet\", // Use Claude, Nova, or Mistral models\n stop_sequences: [\"7\"]\n});\n// Response: \"1, 2, 3, 4, 5, 6,\" (stops before \"7\")\n\n// Note: Llama models will ignore stop sequences due to AWS Bedrock limitations\n```\n\n---\n\n### Parameter Restrictions\n\nSome AWS Bedrock models have specific parameter restrictions that are automatically handled by the wrapper:\n\n#### Claude 4+ Models (Temperature/Top-P Mutual Exclusion)\n\n**Affected Models:**\n- Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking\n- Claude-4-Sonnet & Claude-4-Sonnet-Thinking \n- Claude-4-Opus & Claude-4-Opus-Thinking\n- Claude-4-1-Opus & Claude-4-1-Opus-Thinking\n\n**Restriction:** These models cannot accept both `temperature` and `top_p` parameters simultaneously.\n\n**Automatic Handling:** When both parameters are provided, the wrapper automatically:\n1. **Keeps `temperature`** (prioritized as more commonly used)\n2. **Removes `top_p`** to prevent validation errors\n3. **Works with both APIs** (Invoke API and Converse API)\n\n```javascript\nconst request = {\n messages: [{ role: \"user\", content: \"Hello\" }],\n model: \"Claude-4-5-Sonnet\",\n temperature: 0.7, // \u00e2\u0153\u2026 Kept\n top_p: 0.9 // \u00e2\udc9d\u0152 Automatically removed\n};\n\n// No error thrown - wrapper handles the restriction automatically\nconst response = await bedrockWrapper(awsCreds, request);\n```\n\n**Why This Happens:** AWS Bedrock enforces this restriction on newer Claude models to ensure optimal performance and prevent conflicting sampling parameters.\n\n---\n\n### \u00f0\u0178\u00a7\u00aa Testing\n\nThe package includes comprehensive test suites to verify functionality:\n\n```bash\n# Test all models with the Both APIs (Comparison)\nnpm run test\n\n# Test all models with the Invoke API\nnpm run test:invoke\n\n# Test all models with the Converse API\nnpm run test:converse\n\n# Test vision/multimodal capabilities with Both APIs (Comparison)\nnpm run test-vision\n\n# Test vision/multimodal capabilities with Invoke API\nnpm run test-vision:invoke\n\n# Test vision/multimodal capabilities with Converse API\nnpm run test-vision:converse\n\n# Test stop sequences functionality with Both APIs (Comparison)\nnpm run test-stop\n\n# Test stop sequences functionality with Invoke API\nnpm run test-stop:invoke\n\n# Test stop sequences functionality with Converse API\nnpm run test-stop:converse\n\n# Interactive testing\nnpm run interactive\n```\n\n---\n\n### \u00f0\u0178\u201c\u00a2 P.S.\n\nIn case you missed it at the beginning of this doc, for an even easier setup, use the \u00f0\u0178\u201d\u20ac [Bedrock Proxy Endpoint](https://github.com/jparkerweb/bedrock-proxy-endpoint) project to spin up your own custom OpenAI server endpoint (using the standard `baseUrl`, and `apiKey` params).\n\n![bedrock-proxy-endpoing](./docs/bedrock-proxy-endpoint.jpg)\n\n---\n\n### \u00f0\u0178\u201c\u0161 References\n\n- [AWS Meta Llama Models User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-meta.html)\n- [AWS Mistral Models User Guide](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-mistral.html)\n- [OpenAI API](https://platform.openai.com/docs/api-reference/chat/create)\n- [AWS Bedrock](https://aws.amazon.com/bedrock/)\n- [AWS SDK for JavaScript](https://aws.amazon.com/sdk-for-javascript/)\n\n---\n\nPlease consider sending me a tip to support my work \u00f0\u0178\u02dc\u20ac\n# [\u00f0\u0178\udc8d\u00b5 tip me here](https://ko-fi.com/jparkerweb)\n",
469
- "structuredPatch": [
470
- {
471
- "oldStart": 269,
472
- "oldLines": 7,
473
- "newStart": 269,
474
- "newLines": 8,
475
- "lines": [
476
- " ",
477
- " **Affected Models:**",
478
- " - Claude-4-5-Sonnet & Claude-4-5-Sonnet-Thinking",
479
- "-- Claude-4-Sonnet & Claude-4-Sonnet-Thinking ",
480
- "+- Claude-4-5-Haiku & Claude-4-5-Haiku-Thinking",
481
- "+- Claude-4-Sonnet & Claude-4-Sonnet-Thinking",
482
- " - Claude-4-Opus & Claude-4-Opus-Thinking",
483
- " - Claude-4-1-Opus & Claude-4-1-Opus-Thinking",
484
- " "
485
- ]
486
- }
487
- ],
488
- "userModified": false,
489
- "replaceAll": false
490
- }
491
- },
492
- {
493
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
494
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
495
- "cwd": "C:\\git\\bedrock-wrapper",
496
- "permission_mode": "bypassPermissions",
497
- "hook_event_name": "PostToolUse",
498
- "tool_name": "Read",
499
- "tool_input": {
500
- "file_path": "c:\\git\\bedrock-wrapper\\CHANGELOG.md"
501
- },
502
- "tool_response": {
503
- "type": "text",
504
- "file": {
505
- "filePath": "c:\\git\\bedrock-wrapper\\CHANGELOG.md",
506
- "content": "# Changelog\nAll notable changes to this project will be documented in this file.\n\n## [2.6.1] - 2025-09-30 (Claude Sonnet 4.5)\n### Added\n- Support for Claude Sonnet 4.5 models\n - Claude-4-5-Sonnet\n - Claude-4-5-Sonnet-Thinking\n\n## [2.5.0] - 2025-08-12 (Converse API)\n### Added\n- Support for Converse API (streaming and non-streaming)\n\n### Technical Details\n- **Model Configuration**: All models use standard messages API format\n- **API Compatibility**: Supports OpenAI-style requests\n- **Response Processing**: Automatic reasoning tag handling based on model variant\n- **Streaming Fallback**: Automatic detection and fallback to non-streaming for unsupported models\n- **Testing Coverage**: Full integration with existing test suites and interactive example\n\n## [2.4.5] - 2025-08-06 (GPT-OSS Models)\n### Added\n- Support for OpenAI GPT-OSS models on AWS Bedrock\n - GPT-OSS-120B (120B parameter open weight model)\n - GPT-OSS-20B (20B parameter open weight model)\n - GPT-OSS-120B-Thinking (with reasoning tag preservation)\n - GPT-OSS-20B-Thinking (with reasoning tag preservation)\n- `<reasoning>` tag processing for GPT-OSS thinking variants\n - Regular GPT-OSS models automatically strip `<reasoning>` tags\n - Thinking variants preserve `<reasoning>` tags (similar to Claude's `<think>` tags)\n- Non-streaming support for GPT-OSS models (streaming not supported by AWS Bedrock)\n- OpenAI-compatible API format with `max_completion_tokens` parameter\n\n### Technical Details\n- **Model Configuration**: All GPT-OSS models use standard messages API format\n- **API Compatibility**: Supports OpenAI-style requests with Apache 2.0 licensed models\n- **Response Processing**: Automatic reasoning tag handling based on model variant\n- **Streaming Fallback**: Automatic detection and fallback to non-streaming for unsupported models\n- **Testing Coverage**: Full integration with existing test suites and interactive example\n\n## [2.4.4] - 2025-08-05 (Claude 4.1 Opus)\n### Added\n- Support for Claude 4.1 Opus models\n - Claude-4-1-Opus\n - Claude-4-1-Opus-Thinking\n\n## [2.4.3] - 2025-07-31 (Stop Sequences Fixes)\n### Fixed\n- **Critical Discovery**: Removed stop sequences support from Llama models\n - AWS Bedrock does not support stop sequences for Llama models (confirmed via official AWS documentation)\n - Llama models only support: `prompt`, `temperature`, `top_p`, `max_gen_len`, `images`\n - This is an AWS Bedrock limitation, not a wrapper limitation\n- Fixed Nova model configuration conflicts that were causing stop sequence inconsistencies\n - Removed conflicting empty `inferenceConfig: {}` from Nova model configurations\n- Improved error handling for empty responses when stop sequences trigger early\n\n### Updated\n- **Documentation corrections**\n - Corrected stop sequences support claims (removed \"all models support\" language)\n - Added accurate model-specific support matrix with sequence limits\n - Added comprehensive stop sequences support table with AWS documentation references\n- **Model Support Matrix** now clearly documented:\n - \u00e2\u0153\u2026 Claude models: Full support (up to 8,191 sequences) \n - \u00e2\u0153\u2026 Nova models: Full support (up to 4 sequences)\n - \u00e2\u0153\u2026 Mistral models: Full support (up to 10 sequences)\n - \u00e2\udc9d\u0152 Llama models: Not supported (AWS Bedrock limitation)\n\n### Technical Details\n- Based on comprehensive research of official AWS Bedrock documentation\n- All changes maintain full backward compatibility\n- Test results show significant improvements in stop sequences reliability for supported models\n- Added detailed explanations to help users understand AWS Bedrock's actual capabilities\n\n## [2.4.2] - 2025-07-31 (Stop Sequences Support)\n### Added\n- Stop sequences support for compatible models\n - OpenAI-compatible `stop` and `stop_sequences` parameters\n - Automatic string-to-array conversion for compatibility\n - Model-specific parameter mapping (stop_sequences for Claude, stopSequences for Nova, stop for Mistral)\n- Enhanced request building logic to include stop sequences in appropriate API formats\n- Comprehensive stop sequences testing and validation with `npm run test-stop`\n\n### Fixed\n- **Critical Discovery**: Removed stop sequences support from Llama models\n - AWS Bedrock does not support stop sequences for Llama models (confirmed via official documentation)\n - Llama models only support: `prompt`, `temperature`, `top_p`, `max_gen_len`, `images`\n - This is an AWS Bedrock limitation, not a wrapper limitation\n- Fixed Nova model configuration conflicts that were causing stop sequence inconsistencies\n- Improved error handling for empty responses when stop sequences trigger early\n\n### Technical Details\n- **Model Support Matrix**:\n - \u00e2\u0153\u2026 Claude models: Full support (up to 8,191 sequences)\n - \u00e2\u0153\u2026 Nova models: Full support (up to 4 sequences)\n - \u00e2\u0153\u2026 Mistral models: Full support (up to 10 sequences)\n - \u00e2\udc9d\u0152 Llama models: Not supported (AWS Bedrock limitation)\n- Updated request construction for both messages API and prompt-based models\n- Supports both single string and array formats for stop sequences\n- Maintains full backward compatibility with existing API usage\n- Added comprehensive documentation in README.md and CLAUDE.md explaining support limitations\n\n## [2.4.0] - 2025-07-24 (AWS Nova Models)\n### Added\n- Support for AWS Nova models\n - Nova-Pro (300K context, multimodal, 5K output tokens)\n - Nova-Lite (300K context, multimodal, optimized for speed)\n - Nova-Micro (128K context, text-only, lowest latency)\n- Nova-specific API format handling with schemaVersion \"messages-v1\"\n- Proper inferenceConfig parameter structure for Nova models\n- Automatic content array formatting for Nova message compatibility\n\n## [2.3.1] - 2025-05-22 (Claude 4 Opus / Sonnet)\n### Added\n- Support for Claude 4 Opus & Claude 4 Sonnet models\n - Claude-4-Opus\n - Claude-4-Opus-Thinking\n - Claude-4-Sonnet\n - Claude-4-Sonnet-Thinking\n\n## [2.3.0] - 2025-02-15 (Claude 3.7 & Image Support)\n### Added\n- Support for Claude 3.7 models\n - Claude-3-7-Sonnet\n - Claude-3-7-Sonnet-Thinking\n- Image support for compatible Claude models\n - Claude 3.5 Sonnet\n - Claude 3.5 Sonnet v2\n - Claude 3.7 Sonnet\n - Claude 3.7 Sonnet Thinking\n- Enhanced message handling for multimodal content\n- Documentation for image support usage\n\n### Changed\n- Updated model configuration for image-capable models\n- Improved response handling for multimodal inputs\n\n## [2.2.0] - 2025-01-01 (Llama 3.3 70b)\n### Added\n- Support for Llama 3.3 70b\n\n## [2.1.0] - 2024-11-21 (Claude 3.5 Haiku)\n### Added\n- Support for Claude 3.5 Haiku\n\n## [2.0.0] - 2024-10-31 (Claude Sonnet & Haiku)\n### Added\n- Support for Anthropic Sonnet & Haiku models\n - Claude-3-5-Sonnet-v2\n - Claude-3-5-Sonnet\n - Claude-3-Haiku\n- Interactive example script for testing models\n- Testing script with streaming and non-streaming support for all models\n- Stardardize output to be a string via Streamed and non-Streamed responses \n > **NOTE:** This is a breaking change for previous non-streaming responses. Existing streaming responses will remain unchanged.\n\n### Changed\n- Complete architecture overhaul for better model support\n- Improved message handling with role-based formatting\n- Enhanced error handling and response processing\n- Standardized model configuration format\n- Updated AWS SDK integration\n\n### Technical Details\n- Implemented messages API support for compatible models\n- Added system message handling as separate field where supported\n- Configurable token limits per model\n- Flexible response parsing with chunk/non-chunk handling\n- Cross-region profile support for certain models\n\n## [1.3.0] - 2024-07-24 (Llama3.2)\n### Added\n- Support for Llama 3.2 series models\n - Llama-3-2-1b\n - Llama-3-2-3b\n - Llama-3-2-11b\n - Llama-3-2-90b\n\n## [1.1.0] - 2024-07-24 (Llama3.1)\n### Added\n- Support for Llama 3.1 series models\n - Llama-3-1-8b\n - Llama-3-1-70b\n\n\n## [1.0.14] - 2024-05-06 (Initial Stable Release)\n### Added\n- Initial stablerelease of Bedrock Wrapper\n- Basic AWS Bedrock integration\n- OpenAI-compatible API object support\n- Basic model support \n - Llama-3-8b\n - Llama-3-70b\n - Mistral-7b\n - Mixtral-8x7b\n - Mistral-Large\n",
507
- "numLines": 196,
508
- "startLine": 1,
509
- "totalLines": 196
510
- }
511
- }
512
- },
513
- {
514
- "session_id": "ab845abf-67e2-4cb9-95e2-3942e38326c7",
515
- "transcript_path": "C:\\Users\\Justin.Parker\\.claude\\projects\\C--git-bedrock-wrapper\\ab845abf-67e2-4cb9-95e2-3942e38326c7.jsonl",
516
- "cwd": "C:\\git\\bedrock-wrapper",
517
- "permission_mode": "bypassPermissions",
518
- "hook_event_name": "PostToolUse",
519
- "tool_name": "Edit",
520
- "tool_input": {
521
- "file_path": "c:\\git\\bedrock-wrapper\\CHANGELOG.md",
522
- "old_string": "# Changelog\nAll notable changes to this project will be documented in this file.\n\n## [2.6.1] - 2025-09-30 (Claude Sonnet 4.5)\n### Added\n- Support for Claude Sonnet 4.5 models\n - Claude-4-5-Sonnet\n - Claude-4-5-Sonnet-Thinking",
523
- "new_string": "# Changelog\nAll notable changes to this project will be documented in this file.\n\n## [2.6.2] - 2025-10-16 (Claude Haiku 4.5)\n### Added\n- Support for Claude Haiku 4.5 models\n - Claude-4-5-Haiku\n - Claude-4-5-Haiku-Thinking\n- Extended thinking support for Haiku 4.5 (first Haiku model with thinking capabilities)\n- Vision support for Haiku 4.5 (20MB max image size, JPEG/PNG/GIF/WebP formats)\n- 64,000 max output tokens (significant increase from Claude 3.5 Haiku's 8,192)\n- Temperature/Top-P mutual exclusion parameter handling for Haiku 4.5 models\n\n## [2.6.1] - 2025-09-30 (Claude Sonnet 4.5)\n### Added\n- Support for Claude Sonnet 4.5 models\n - Claude-4-5-Sonnet\n - Claude-4-5-Sonnet-Thinking"
524
- },
525
- "tool_response": {
526
- "filePath": "c:\\git\\bedrock-wrapper\\CHANGELOG.md",
527
- "oldString": "# Changelog\nAll notable changes to this project will be documented in this file.\n\n## [2.6.1] - 2025-09-30 (Claude Sonnet 4.5)\n### Added\n- Support for Claude Sonnet 4.5 models\n - Claude-4-5-Sonnet\n - Claude-4-5-Sonnet-Thinking",
528
- "newString": "# Changelog\nAll notable changes to this project will be documented in this file.\n\n## [2.6.2] - 2025-10-16 (Claude Haiku 4.5)\n### Added\n- Support for Claude Haiku 4.5 models\n - Claude-4-5-Haiku\n - Claude-4-5-Haiku-Thinking\n- Extended thinking support for Haiku 4.5 (first Haiku model with thinking capabilities)\n- Vision support for Haiku 4.5 (20MB max image size, JPEG/PNG/GIF/WebP formats)\n- 64,000 max output tokens (significant increase from Claude 3.5 Haiku's 8,192)\n- Temperature/Top-P mutual exclusion parameter handling for Haiku 4.5 models\n\n## [2.6.1] - 2025-09-30 (Claude Sonnet 4.5)\n### Added\n- Support for Claude Sonnet 4.5 models\n - Claude-4-5-Sonnet\n - Claude-4-5-Sonnet-Thinking",
529
- "originalFile": "# Changelog\nAll notable changes to this project will be documented in this file.\n\n## [2.6.1] - 2025-09-30 (Claude Sonnet 4.5)\n### Added\n- Support for Claude Sonnet 4.5 models\n - Claude-4-5-Sonnet\n - Claude-4-5-Sonnet-Thinking\n\n## [2.5.0] - 2025-08-12 (Converse API)\n### Added\n- Support for Converse API (streaming and non-streaming)\n\n### Technical Details\n- **Model Configuration**: All models use standard messages API format\n- **API Compatibility**: Supports OpenAI-style requests\n- **Response Processing**: Automatic reasoning tag handling based on model variant\n- **Streaming Fallback**: Automatic detection and fallback to non-streaming for unsupported models\n- **Testing Coverage**: Full integration with existing test suites and interactive example\n\n## [2.4.5] - 2025-08-06 (GPT-OSS Models)\n### Added\n- Support for OpenAI GPT-OSS models on AWS Bedrock\n - GPT-OSS-120B (120B parameter open weight model)\n - GPT-OSS-20B (20B parameter open weight model)\n - GPT-OSS-120B-Thinking (with reasoning tag preservation)\n - GPT-OSS-20B-Thinking (with reasoning tag preservation)\n- `<reasoning>` tag processing for GPT-OSS thinking variants\n - Regular GPT-OSS models automatically strip `<reasoning>` tags\n - Thinking variants preserve `<reasoning>` tags (similar to Claude's `<think>` tags)\n- Non-streaming support for GPT-OSS models (streaming not supported by AWS Bedrock)\n- OpenAI-compatible API format with `max_completion_tokens` parameter\n\n### Technical Details\n- **Model Configuration**: All GPT-OSS models use standard messages API format\n- **API Compatibility**: Supports OpenAI-style requests with Apache 2.0 licensed models\n- **Response Processing**: Automatic reasoning tag handling based on model variant\n- **Streaming Fallback**: Automatic detection and fallback to non-streaming for unsupported models\n- **Testing Coverage**: Full integration with existing test suites and interactive example\n\n## [2.4.4] - 2025-08-05 (Claude 4.1 Opus)\n### Added\n- Support for Claude 4.1 Opus models\n - Claude-4-1-Opus\n - Claude-4-1-Opus-Thinking\n\n## [2.4.3] - 2025-07-31 (Stop Sequences Fixes)\n### Fixed\n- **Critical Discovery**: Removed stop sequences support from Llama models\n - AWS Bedrock does not support stop sequences for Llama models (confirmed via official AWS documentation)\n - Llama models only support: `prompt`, `temperature`, `top_p`, `max_gen_len`, `images`\n - This is an AWS Bedrock limitation, not a wrapper limitation\n- Fixed Nova model configuration conflicts that were causing stop sequence inconsistencies\n - Removed conflicting empty `inferenceConfig: {}` from Nova model configurations\n- Improved error handling for empty responses when stop sequences trigger early\n\n### Updated\n- **Documentation corrections**\n - Corrected stop sequences support claims (removed \"all models support\" language)\n - Added accurate model-specific support matrix with sequence limits\n - Added comprehensive stop sequences support table with AWS documentation references\n- **Model Support Matrix** now clearly documented:\n - \u00e2\u0153\u2026 Claude models: Full support (up to 8,191 sequences) \n - \u00e2\u0153\u2026 Nova models: Full support (up to 4 sequences)\n - \u00e2\u0153\u2026 Mistral models: Full support (up to 10 sequences)\n - \u00e2\udc9d\u0152 Llama models: Not supported (AWS Bedrock limitation)\n\n### Technical Details\n- Based on comprehensive research of official AWS Bedrock documentation\n- All changes maintain full backward compatibility\n- Test results show significant improvements in stop sequences reliability for supported models\n- Added detailed explanations to help users understand AWS Bedrock's actual capabilities\n\n## [2.4.2] - 2025-07-31 (Stop Sequences Support)\n### Added\n- Stop sequences support for compatible models\n - OpenAI-compatible `stop` and `stop_sequences` parameters\n - Automatic string-to-array conversion for compatibility\n - Model-specific parameter mapping (stop_sequences for Claude, stopSequences for Nova, stop for Mistral)\n- Enhanced request building logic to include stop sequences in appropriate API formats\n- Comprehensive stop sequences testing and validation with `npm run test-stop`\n\n### Fixed\n- **Critical Discovery**: Removed stop sequences support from Llama models\n - AWS Bedrock does not support stop sequences for Llama models (confirmed via official documentation)\n - Llama models only support: `prompt`, `temperature`, `top_p`, `max_gen_len`, `images`\n - This is an AWS Bedrock limitation, not a wrapper limitation\n- Fixed Nova model configuration conflicts that were causing stop sequence inconsistencies\n- Improved error handling for empty responses when stop sequences trigger early\n\n### Technical Details\n- **Model Support Matrix**:\n - \u00e2\u0153\u2026 Claude models: Full support (up to 8,191 sequences)\n - \u00e2\u0153\u2026 Nova models: Full support (up to 4 sequences)\n - \u00e2\u0153\u2026 Mistral models: Full support (up to 10 sequences)\n - \u00e2\udc9d\u0152 Llama models: Not supported (AWS Bedrock limitation)\n- Updated request construction for both messages API and prompt-based models\n- Supports both single string and array formats for stop sequences\n- Maintains full backward compatibility with existing API usage\n- Added comprehensive documentation in README.md and CLAUDE.md explaining support limitations\n\n## [2.4.0] - 2025-07-24 (AWS Nova Models)\n### Added\n- Support for AWS Nova models\n - Nova-Pro (300K context, multimodal, 5K output tokens)\n - Nova-Lite (300K context, multimodal, optimized for speed)\n - Nova-Micro (128K context, text-only, lowest latency)\n- Nova-specific API format handling with schemaVersion \"messages-v1\"\n- Proper inferenceConfig parameter structure for Nova models\n- Automatic content array formatting for Nova message compatibility\n\n## [2.3.1] - 2025-05-22 (Claude 4 Opus / Sonnet)\n### Added\n- Support for Claude 4 Opus & Claude 4 Sonnet models\n - Claude-4-Opus\n - Claude-4-Opus-Thinking\n - Claude-4-Sonnet\n - Claude-4-Sonnet-Thinking\n\n## [2.3.0] - 2025-02-15 (Claude 3.7 & Image Support)\n### Added\n- Support for Claude 3.7 models\n - Claude-3-7-Sonnet\n - Claude-3-7-Sonnet-Thinking\n- Image support for compatible Claude models\n - Claude 3.5 Sonnet\n - Claude 3.5 Sonnet v2\n - Claude 3.7 Sonnet\n - Claude 3.7 Sonnet Thinking\n- Enhanced message handling for multimodal content\n- Documentation for image support usage\n\n### Changed\n- Updated model configuration for image-capable models\n- Improved response handling for multimodal inputs\n\n## [2.2.0] - 2025-01-01 (Llama 3.3 70b)\n### Added\n- Support for Llama 3.3 70b\n\n## [2.1.0] - 2024-11-21 (Claude 3.5 Haiku)\n### Added\n- Support for Claude 3.5 Haiku\n\n## [2.0.0] - 2024-10-31 (Claude Sonnet & Haiku)\n### Added\n- Support for Anthropic Sonnet & Haiku models\n - Claude-3-5-Sonnet-v2\n - Claude-3-5-Sonnet\n - Claude-3-Haiku\n- Interactive example script for testing models\n- Testing script with streaming and non-streaming support for all models\n- Stardardize output to be a string via Streamed and non-Streamed responses \n > **NOTE:** This is a breaking change for previous non-streaming responses. Existing streaming responses will remain unchanged.\n\n### Changed\n- Complete architecture overhaul for better model support\n- Improved message handling with role-based formatting\n- Enhanced error handling and response processing\n- Standardized model configuration format\n- Updated AWS SDK integration\n\n### Technical Details\n- Implemented messages API support for compatible models\n- Added system message handling as separate field where supported\n- Configurable token limits per model\n- Flexible response parsing with chunk/non-chunk handling\n- Cross-region profile support for certain models\n\n## [1.3.0] - 2024-07-24 (Llama3.2)\n### Added\n- Support for Llama 3.2 series models\n - Llama-3-2-1b\n - Llama-3-2-3b\n - Llama-3-2-11b\n - Llama-3-2-90b\n\n## [1.1.0] - 2024-07-24 (Llama3.1)\n### Added\n- Support for Llama 3.1 series models\n - Llama-3-1-8b\n - Llama-3-1-70b\n\n\n## [1.0.14] - 2024-05-06 (Initial Stable Release)\n### Added\n- Initial stablerelease of Bedrock Wrapper\n- Basic AWS Bedrock integration\n- OpenAI-compatible API object support\n- Basic model support \n - Llama-3-8b\n - Llama-3-70b\n - Mistral-7b\n - Mixtral-8x7b\n - Mistral-Large\n",
530
- "structuredPatch": [
531
- {
532
- "oldStart": 1,
533
- "oldLines": 6,
534
- "newStart": 1,
535
- "newLines": 16,
536
- "lines": [
537
- " # Changelog",
538
- " All notable changes to this project will be documented in this file.",
539
- " ",
540
- "+## [2.6.2] - 2025-10-16 (Claude Haiku 4.5)",
541
- "+### Added",
542
- "+- Support for Claude Haiku 4.5 models",
543
- "+ - Claude-4-5-Haiku",
544
- "+ - Claude-4-5-Haiku-Thinking",
545
- "+- Extended thinking support for Haiku 4.5 (first Haiku model with thinking capabilities)",
546
- "+- Vision support for Haiku 4.5 (20MB max image size, JPEG/PNG/GIF/WebP formats)",
547
- "+- 64,000 max output tokens (significant increase from Claude 3.5 Haiku's 8,192)",
548
- "+- Temperature/Top-P mutual exclusion parameter handling for Haiku 4.5 models",
549
- "+",
550
- " ## [2.6.1] - 2025-09-30 (Claude Sonnet 4.5)",
551
- " ### Added",
552
- " - Support for Claude Sonnet 4.5 models"
553
- ]
554
- }
555
- ],
556
- "userModified": false,
557
- "replaceAll": false
558
- }
559
- }
560
- ]