-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
implement .bind, fix call options, add docs
- Loading branch information
1 parent
03d0954
commit 864905e
Showing
6 changed files
with
237 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
|
||
import { BedrockChat } from "@langchain/community/chat_models/bedrock"; | ||
// Or, from web environments: | ||
// import { BedrockChat } from "@langchain/community/chat_models/bedrock/web"; | ||
import { z } from "zod"; | ||
import { zodToJsonSchema } from "zod-to-json-schema"; | ||
|
||
const model = new BedrockChat({ | ||
region: process.env.BEDROCK_AWS_REGION, | ||
model: "anthropic.claude-3-sonnet-20240229-v1:0", | ||
maxRetries: 0, | ||
credentials: { | ||
secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!, | ||
accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!, | ||
}, | ||
}); | ||
|
||
const weatherSchema = z | ||
.object({ | ||
city: z.string().describe("The city to get the weather for"), | ||
state: z.string().describe("The state to get the weather for").optional(), | ||
}) | ||
.describe("Get the weather for a city"); | ||
|
||
const modelWithTools = model.bindTools([ | ||
{ | ||
name: "weather_tool", | ||
description: weatherSchema.description, | ||
input_schema: zodToJsonSchema(weatherSchema), | ||
}, | ||
]); | ||
// Optionally, you can bind tools via the `.bind` method: | ||
// const modelWithTools = model.bind({ | ||
// tools: [ | ||
// { | ||
// name: "weather_tool", | ||
// description: weatherSchema.description, | ||
// input_schema: zodToJsonSchema(weatherSchema), | ||
// }, | ||
// ], | ||
// }); | ||
|
||
const res = await modelWithTools.invoke("What's the weather in New York?"); | ||
console.log(res); | ||
|
||
/* | ||
AIMessage { | ||
additional_kwargs: { id: 'msg_bdrk_01JF7hb4PNQPywP4gnBbgpHi' }, | ||
response_metadata: { | ||
stop_reason: 'tool_use', | ||
usage: { input_tokens: 300, output_tokens: 85 } | ||
}, | ||
tool_calls: [ | ||
{ | ||
name: 'weather_tool', | ||
args: { | ||
city: 'New York', | ||
state: 'NY' | ||
}, | ||
id: 'toolu_bdrk_01AtEZRTCKioFXqhoNcpgaV7' | ||
} | ||
], | ||
} | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
|
||
import { BedrockChat } from "@langchain/community/chat_models/bedrock"; | ||
// Or, from web environments: | ||
// import { BedrockChat } from "@langchain/community/chat_models/bedrock/web"; | ||
import { z } from "zod"; | ||
|
||
const model = new BedrockChat({ | ||
region: process.env.BEDROCK_AWS_REGION, | ||
model: "anthropic.claude-3-sonnet-20240229-v1:0", | ||
maxRetries: 0, | ||
credentials: { | ||
secretAccessKey: process.env.BEDROCK_AWS_SECRET_ACCESS_KEY!, | ||
accessKeyId: process.env.BEDROCK_AWS_ACCESS_KEY_ID!, | ||
}, | ||
}); | ||
|
||
const weatherSchema = z | ||
.object({ | ||
city: z.string().describe("The city to get the weather for"), | ||
state: z.string().describe("The state to get the weather for").optional(), | ||
}) | ||
.describe("Get the weather for a city"); | ||
|
||
const modelWithStructuredOutput = model.withStructuredOutput(weatherSchema, { | ||
name: "weather_tool", // Optional, defaults to 'extract' | ||
}); | ||
|
||
const res = await modelWithStructuredOutput.invoke( | ||
"What's the weather in New York?" | ||
); | ||
console.log(res); | ||
|
||
/* | ||
{ city: 'New York', state: 'NY' } | ||
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters