feat: support tools in bedrock (#1598)

This commit is contained in:
brook hong
2025-03-17 13:42:18 +08:00
committed by GitHub
parent 3504e64407
commit e204ca1cf3
7 changed files with 25 additions and 7 deletions

View File

@@ -6,6 +6,7 @@
---@field role "user" | "assistant"
---@field content [AvanteBedrockClaudeTextMessage][]
local P = require("avante.providers")
local Claude = require("avante.providers.claude")
---@class AvanteBedrockModelHandler
@@ -20,6 +21,7 @@ M.role_map = {
M.is_disable_stream = Claude.is_disable_stream
M.parse_messages = Claude.parse_messages
M.parse_response = Claude.parse_response
M.transform_tool = Claude.transform_tool
---@param provider AvanteProviderFunctor
---@param prompt_opts AvantePromptOptions
@@ -29,10 +31,21 @@ function M.build_bedrock_payload(provider, prompt_opts, request_body)
local system_prompt = prompt_opts.system_prompt or ""
local messages = provider:parse_messages(prompt_opts)
local max_tokens = request_body.max_tokens or 2000
local provider_conf, _ = P.parse_config(provider)
local disable_tools = provider_conf.disable_tools or false
local tools = {}
if not disable_tools and prompt_opts.tools then
for _, tool in ipairs(prompt_opts.tools) do
table.insert(tools, provider:transform_tool(tool))
end
end
local payload = {
anthropic_version = "bedrock-2023-05-31",
max_tokens = max_tokens,
messages = messages,
tools = tools,
system = system_prompt,
}
return vim.tbl_deep_extend("force", payload, request_body or {})