-
Notifications
You must be signed in to change notification settings - Fork 2.6k
docs[minor]: bedrock tool calling/WSO docs #5735
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 2 commits
03d0954
864905e
8d5ce55
668cb48
ff0bf42
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
|
||
import { BedrockChat } from "@langchain/community/chat_models/bedrock"; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hey there! I've reviewed the code and flagged a specific change related to accessing environment variables using |
||
// 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' | ||
} | ||
], | ||
} | ||
*/ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hey there! 👋 I've reviewed the code changes in this PR and flagged it for your review. The added code explicitly accesses environment variables using |
||
import { BedrockChat } from "@langchain/community/chat_models/bedrock"; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Hey there! 👋 I've reviewed the code changes and noticed that environment variables are being accessed using |
||
// 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' } | ||
*/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey team, just a heads up that I've flagged a change in the PR for review. The added code explicitly accesses environment variables using
process.env
, so it's important to ensure that this is handled securely and appropriately. Let me know if you have any questions or need further clarification!