From 1914b527083de83c189071db303407de0ddd021a Mon Sep 17 00:00:00 2001
From: patryktop <patryk.porebski@toptal.com>
Date: Wed, 26 Feb 2025 23:38:14 +0100
Subject: [PATCH] feat: add Claude 3.7 Sonnet model to community package
 (#1683)

---
 .changeset/metal-moments-train.md                  |  5 +++++
 .../community/src/llm/bedrock/anthropic/types.ts   | 14 +++++++++++++-
 packages/community/src/llm/bedrock/index.ts        | 13 +++++++++++++
 3 files changed, 31 insertions(+), 1 deletion(-)
 create mode 100644 .changeset/metal-moments-train.md

diff --git a/.changeset/metal-moments-train.md b/.changeset/metal-moments-train.md
new file mode 100644
index 000000000..63f567edd
--- /dev/null
+++ b/.changeset/metal-moments-train.md
@@ -0,0 +1,5 @@
+---
+"@llamaindex/community": patch
+---
+
+Added Claude 3.7 Sonnet support
diff --git a/packages/community/src/llm/bedrock/anthropic/types.ts b/packages/community/src/llm/bedrock/anthropic/types.ts
index 9dfbdb77e..ead00d1a9 100644
--- a/packages/community/src/llm/bedrock/anthropic/types.ts
+++ b/packages/community/src/llm/bedrock/anthropic/types.ts
@@ -6,7 +6,19 @@ export type ToolChoice =
   | { type: "auto" }
   | { type: "tool"; name: string };
 
-export type AnthropicAdditionalChatOptions = { toolChoice: ToolChoice };
+export interface ThinkingConfigDisabled {
+  type: "disabled";
+}
+
+export interface ThinkingConfigEnabled {
+  budget_tokens: number;
+  type: "enabled";
+}
+
+export type AnthropicAdditionalChatOptions = {
+  toolChoice: ToolChoice;
+  thinking?: ThinkingConfigDisabled | ThinkingConfigEnabled;
+};
 
 type Usage = {
   input_tokens: number;
diff --git a/packages/community/src/llm/bedrock/index.ts b/packages/community/src/llm/bedrock/index.ts
index d1873ee04..676544133 100644
--- a/packages/community/src/llm/bedrock/index.ts
+++ b/packages/community/src/llm/bedrock/index.ts
@@ -69,6 +69,7 @@ export const BEDROCK_MODELS = {
   ANTHROPIC_CLAUDE_3_5_SONNET: "anthropic.claude-3-5-sonnet-20240620-v1:0",
   ANTHROPIC_CLAUDE_3_5_SONNET_V2: "anthropic.claude-3-5-sonnet-20241022-v2:0",
   ANTHROPIC_CLAUDE_3_5_HAIKU: "anthropic.claude-3-5-haiku-20241022-v1:0",
+  ANTHROPIC_CLAUDE_3_7_SONNET: "anthropic.claude-3-7-sonnet-20250219-v1:0",
   META_LLAMA2_13B_CHAT: "meta.llama2-13b-chat-v1",
   META_LLAMA2_70B_CHAT: "meta.llama2-70b-chat-v1",
   META_LLAMA3_8B_INSTRUCT: "meta.llama3-8b-instruct-v1:0",
@@ -100,6 +101,8 @@ export const INFERENCE_BEDROCK_MODELS = {
     "us.anthropic.claude-3-5-sonnet-20240620-v1:0",
   US_ANTHROPIC_CLAUDE_3_5_SONNET_V2:
     "us.anthropic.claude-3-5-sonnet-20241022-v2:0",
+  US_ANTHROPIC_CLAUDE_3_7_SONNET:
+    "us.anthropic.claude-3-7-sonnet-20250219-v1:0",
   US_META_LLAMA_3_2_1B_INSTRUCT: "us.meta.llama3-2-1b-instruct-v1:0",
   US_META_LLAMA_3_2_3B_INSTRUCT: "us.meta.llama3-2-3b-instruct-v1:0",
   US_META_LLAMA_3_2_11B_INSTRUCT: "us.meta.llama3-2-11b-instruct-v1:0",
@@ -113,6 +116,8 @@ export const INFERENCE_BEDROCK_MODELS = {
   EU_ANTHROPIC_CLAUDE_3_SONNET: "eu.anthropic.claude-3-sonnet-20240229-v1:0",
   EU_ANTHROPIC_CLAUDE_3_5_SONNET:
     "eu.anthropic.claude-3-5-sonnet-20240620-v1:0",
+  EU_ANTHROPIC_CLAUDE_3_7_SONNET:
+    "eu.anthropic.claude-3-7-sonnet-20250219-v1:0",
   EU_META_LLAMA_3_2_1B_INSTRUCT: "eu.meta.llama3-2-1b-instruct-v1:0",
   EU_META_LLAMA_3_2_3B_INSTRUCT: "eu.meta.llama3-2-3b-instruct-v1:0",
 };
@@ -132,6 +137,8 @@ export const INFERENCE_TO_BEDROCK_MAP: Record<
     BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_SONNET,
   [INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_5_SONNET]:
     BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
+  [INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_7_SONNET]:
+    BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
   [INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_5_SONNET_V2]:
     BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2,
   [INFERENCE_BEDROCK_MODELS.US_ANTHROPIC_CLAUDE_3_5_HAIKU]:
@@ -158,6 +165,8 @@ export const INFERENCE_TO_BEDROCK_MAP: Record<
     BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_SONNET,
   [INFERENCE_BEDROCK_MODELS.EU_ANTHROPIC_CLAUDE_3_5_SONNET]:
     BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
+  [INFERENCE_BEDROCK_MODELS.EU_ANTHROPIC_CLAUDE_3_7_SONNET]:
+    BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
   [INFERENCE_BEDROCK_MODELS.EU_META_LLAMA_3_2_1B_INSTRUCT]:
     BEDROCK_MODELS.META_LLAMA3_2_1B_INSTRUCT,
   [INFERENCE_BEDROCK_MODELS.EU_META_LLAMA_3_2_3B_INSTRUCT]:
@@ -191,6 +200,7 @@ const CHAT_ONLY_MODELS = {
   [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET]: 200000,
   [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2]: 200000,
   [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU]: 200000,
+  [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET]: 200000,
   [BEDROCK_MODELS.META_LLAMA2_13B_CHAT]: 2048,
   [BEDROCK_MODELS.META_LLAMA2_70B_CHAT]: 4096,
   [BEDROCK_MODELS.META_LLAMA3_8B_INSTRUCT]: 8192,
@@ -230,6 +240,7 @@ export const STREAMING_MODELS = new Set([
   BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
   BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2,
   BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU,
+  BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
   BEDROCK_MODELS.META_LLAMA2_13B_CHAT,
   BEDROCK_MODELS.META_LLAMA2_70B_CHAT,
   BEDROCK_MODELS.META_LLAMA3_8B_INSTRUCT,
@@ -256,6 +267,7 @@ export const TOOL_CALL_MODELS: BEDROCK_MODELS[] = [
   BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET,
   BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2,
   BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU,
+  BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET,
   BEDROCK_MODELS.META_LLAMA3_1_405B_INSTRUCT,
   BEDROCK_MODELS.META_LLAMA3_2_1B_INSTRUCT,
   BEDROCK_MODELS.META_LLAMA3_2_3B_INSTRUCT,
@@ -294,6 +306,7 @@ export const BEDROCK_MODEL_MAX_TOKENS: Partial<Record<BEDROCK_MODELS, number>> =
     [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET]: 4096,
     [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_SONNET_V2]: 8192,
     [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_5_HAIKU]: 8192,
+    [BEDROCK_MODELS.ANTHROPIC_CLAUDE_3_7_SONNET]: 8192,
     [BEDROCK_MODELS.META_LLAMA2_13B_CHAT]: 2048,
     [BEDROCK_MODELS.META_LLAMA2_70B_CHAT]: 2048,
     [BEDROCK_MODELS.META_LLAMA3_8B_INSTRUCT]: 2048,
-- 
GitLab