From a88f2c17b21b05529634643da42f25a0e18d3366 Mon Sep 17 00:00:00 2001 From: Patrice Bechard Date: Tue, 14 Oct 2025 14:04:05 -0400 Subject: [PATCH 1/3] add support for AnthropicBedrock models --- src/agentlab/llm/chat_api.py | 39 +++++++++++++++++++++++++++++++++ src/agentlab/llm/llm_configs.py | 17 ++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/agentlab/llm/chat_api.py b/src/agentlab/llm/chat_api.py index 9ee68838..6fa2eb76 100644 --- a/src/agentlab/llm/chat_api.py +++ b/src/agentlab/llm/chat_api.py @@ -553,3 +553,42 @@ def make_model(self): temperature=self.temperature, max_tokens=self.max_new_tokens, ) + + +class BedrockChatModel(AnthropicChatModel): + def __init__( + self, + model_name, + api_key=None, + temperature=0.5, + max_tokens=100, + max_retry=4, + ): + self.model_name = model_name + self.temperature = temperature + self.max_tokens = max_tokens + self.max_retry = max_retry + + if ( + not os.getenv("AWS_REGION") + or not os.getenv("AWS_ACCESS_KEY") + or not os.getenv("AWS_SECRET_KEY") + ): + raise ValueError( + "AWS_REGION, AWS_ACCESS_KEY and AWS_SECRET_KEY must be set in the environment when using BedrockChatModel" + ) + + self.client = anthropic.AnthropicBedrock( + aws_region=os.getenv("AWS_REGION"), + aws_access_key=os.getenv("AWS_ACCESS_KEY"), + aws_secret_key=os.getenv("AWS_SECRET_KEY"), + ) + +@dataclass +class BedrockModelArgs(BaseModelArgs): + def make_model(self): + return BedrockChatModel( + model_name=self.model_name, + temperature=self.temperature, + max_tokens=self.max_new_tokens, + ) diff --git a/src/agentlab/llm/llm_configs.py b/src/agentlab/llm/llm_configs.py index c1ee458f..62be858d 100644 --- a/src/agentlab/llm/llm_configs.py +++ b/src/agentlab/llm/llm_configs.py @@ -6,6 +6,7 @@ OpenAIModelArgs, OpenRouterModelArgs, SelfHostedModelArgs, + BedrockModelArgs, ) default_oss_llms_args = { @@ -209,6 +210,22 @@ max_new_tokens=16_384, temperature=1e-1, ), + # ------------ Anthropic / Bedrock ------------# + "bedrock/claude-3.7-sonnet": BedrockModelArgs( + model_name="us.anthropic.claude-3-7-sonnet-20250219-v1:0", + max_new_tokens=16_384, + temperature=1e-1, + ), + "bedrock/claude-4.0-sonnet": BedrockModelArgs( + model_name="us.anthropic.claude-sonnet-4-20250514-v1:0", + max_new_tokens=16_384, + temperature=1e-1, + ), + "bedrock/claude-4.5-sonnet": BedrockModelArgs( + model_name="us.anthropic.claude-sonnet-4-5-20250929-v1:0", + max_new_tokens=16_384, + temperature=1e-1, + ), # ---------------- OSS LLMs ----------------# "meta-llama/Meta-Llama-3-70B-Instruct": SelfHostedModelArgs( model_name="meta-llama/Meta-Llama-3-70B-Instruct", From 5fc929eaee30ec4c79953644fc826b4d5a517a9a Mon Sep 17 00:00:00 2001 From: Patrice Bechard Date: Tue, 14 Oct 2025 14:05:43 -0400 Subject: [PATCH 2/3] formatting --- src/agentlab/llm/chat_api.py | 6 +++--- src/agentlab/llm/llm_configs.py | 11 +++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/agentlab/llm/chat_api.py b/src/agentlab/llm/chat_api.py index 6fa2eb76..13109ff9 100644 --- a/src/agentlab/llm/chat_api.py +++ b/src/agentlab/llm/chat_api.py @@ -6,13 +6,12 @@ from functools import partial from typing import Optional +import agentlab.llm.tracking as tracking import anthropic import openai -from openai import NOT_GIVEN, OpenAI - -import agentlab.llm.tracking as tracking from agentlab.llm.base_api import AbstractChatModel, BaseModelArgs from agentlab.llm.llm_utils import AIMessage, Discussion +from openai import NOT_GIVEN, OpenAI def make_system_message(content: str) -> dict: @@ -584,6 +583,7 @@ def __init__( aws_secret_key=os.getenv("AWS_SECRET_KEY"), ) + @dataclass class BedrockModelArgs(BaseModelArgs): def make_model(self): diff --git a/src/agentlab/llm/llm_configs.py b/src/agentlab/llm/llm_configs.py index 62be858d..e03003f0 100644 --- a/src/agentlab/llm/llm_configs.py +++ b/src/agentlab/llm/llm_configs.py @@ -1,13 +1,12 @@ -from openai import NOT_GIVEN - from agentlab.llm.chat_api import ( AnthropicModelArgs, AzureModelArgs, + BedrockModelArgs, OpenAIModelArgs, OpenRouterModelArgs, SelfHostedModelArgs, - BedrockModelArgs, ) +from openai import NOT_GIVEN default_oss_llms_args = { "n_retry_server": 4, @@ -211,17 +210,17 @@ temperature=1e-1, ), # ------------ Anthropic / Bedrock ------------# - "bedrock/claude-3.7-sonnet": BedrockModelArgs( + "bedrock/claude-3-7-sonnet": BedrockModelArgs( model_name="us.anthropic.claude-3-7-sonnet-20250219-v1:0", max_new_tokens=16_384, temperature=1e-1, ), - "bedrock/claude-4.0-sonnet": BedrockModelArgs( + "bedrock/claude-4-0-sonnet": BedrockModelArgs( model_name="us.anthropic.claude-sonnet-4-20250514-v1:0", max_new_tokens=16_384, temperature=1e-1, ), - "bedrock/claude-4.5-sonnet": BedrockModelArgs( + "bedrock/claude-4-5-sonnet": BedrockModelArgs( model_name="us.anthropic.claude-sonnet-4-5-20250929-v1:0", max_new_tokens=16_384, temperature=1e-1, From 4f71589d7894acb29460ca27c436f012860f5179 Mon Sep 17 00:00:00 2001 From: Patrice Bechard Date: Tue, 14 Oct 2025 14:07:55 -0400 Subject: [PATCH 3/3] formatting --- src/agentlab/llm/chat_api.py | 5 +++-- src/agentlab/llm/llm_configs.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/agentlab/llm/chat_api.py b/src/agentlab/llm/chat_api.py index 13109ff9..aa5ae4fc 100644 --- a/src/agentlab/llm/chat_api.py +++ b/src/agentlab/llm/chat_api.py @@ -6,12 +6,13 @@ from functools import partial from typing import Optional -import agentlab.llm.tracking as tracking import anthropic import openai +from openai import NOT_GIVEN, OpenAI + +import agentlab.llm.tracking as tracking from agentlab.llm.base_api import AbstractChatModel, BaseModelArgs from agentlab.llm.llm_utils import AIMessage, Discussion -from openai import NOT_GIVEN, OpenAI def make_system_message(content: str) -> dict: diff --git a/src/agentlab/llm/llm_configs.py b/src/agentlab/llm/llm_configs.py index e03003f0..e0e12e6b 100644 --- a/src/agentlab/llm/llm_configs.py +++ b/src/agentlab/llm/llm_configs.py @@ -1,3 +1,5 @@ +from openai import NOT_GIVEN + from agentlab.llm.chat_api import ( AnthropicModelArgs, AzureModelArgs, @@ -6,7 +8,6 @@ OpenRouterModelArgs, SelfHostedModelArgs, ) -from openai import NOT_GIVEN default_oss_llms_args = { "n_retry_server": 4,