Skip to content

Commit 32bc4c2

Browse files
fix(aws): add lc_aliases for model_id/region_name in ChatBedrockConverse (#9322)
1 parent 97e7547 commit 32bc4c2

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

libs/providers/langchain-aws/src/chat_models.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,6 +659,8 @@ export class ChatBedrockConverse
659659
get lc_aliases(): { [key: string]: string } | undefined {
660660
return {
661661
apiKey: "API_KEY_NAME",
662+
model: "model_id",
663+
region: "region_name",
662664
};
663665
}
664666

libs/providers/langchain-aws/src/tests/chat_models.test.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { describe, expect, test, it } from "vitest";
1717
import { convertToConverseMessages } from "../utils/message_inputs.js";
1818
import { handleConverseStreamContentBlockDelta } from "../utils/message_outputs.js";
1919
import { ChatBedrockConverse } from "../chat_models.js";
20+
import { load } from "@langchain/core/load";
2021

2122
describe("convertToConverseMessages", () => {
2223
const testCases: {
@@ -666,3 +667,43 @@ describe("tool_choice works for supported models", () => {
666667
}
667668
);
668669
});
670+
671+
test("Test ChatBedrockConverse deserialization from model_id and region_name", async () => {
672+
delete process.env.AWS_ACCESS_KEY_ID;
673+
delete process.env.AWS_SECRET_ACCESS_KEY;
674+
delete process.env.AWS_DEFAULT_REGION;
675+
676+
// Simulate a serialized ChatBedrockConverse with Python naming (model_id, region_name)
677+
// This matches the format that LangSmith Hub stores prompts with model configuration
678+
const serialized = JSON.stringify({
679+
lc: 1,
680+
type: "constructor",
681+
id: [
682+
"langchain",
683+
"chat_models",
684+
"chat_bedrock_converse",
685+
"ChatBedrockConverse",
686+
],
687+
kwargs: {
688+
model_id: "anthropic.claude-3-sonnet-20240229-v1:0",
689+
region_name: "us-west-2",
690+
temperature: 0.7,
691+
credentials: {
692+
accessKeyId: "test-key",
693+
secretAccessKey: "test-secret",
694+
},
695+
},
696+
});
697+
698+
const loaded = await load<ChatBedrockConverse>(serialized, {
699+
importMap: {
700+
chat_models__chat_bedrock_converse: { ChatBedrockConverse },
701+
},
702+
});
703+
704+
// Verify deserialization correctly maps model_id -> model and region_name -> region
705+
expect(loaded).toBeInstanceOf(ChatBedrockConverse);
706+
expect(loaded.model).toBe("anthropic.claude-3-sonnet-20240229-v1:0");
707+
expect(loaded.region).toBe("us-west-2");
708+
expect(loaded.temperature).toBe(0.7);
709+
});

0 commit comments

Comments
 (0)