fix: Always handle the extra response outside of stream, such as the exceptions from bedrock (#1526)
This commit is contained in:
@@ -246,8 +246,10 @@ function M.curl(opts)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function parse_response_without_stream(data)
|
local function parse_response_without_stream(data)
|
||||||
|
if provider.parse_response_without_stream then
|
||||||
provider:parse_response_without_stream(data, current_event_state, handler_opts)
|
provider:parse_response_without_stream(data, current_event_state, handler_opts)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local completed = false
|
local completed = false
|
||||||
|
|
||||||
@@ -354,8 +356,8 @@ function M.curl(opts)
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- If stream is not enabled, then handle the response here
|
-- Always handle the extra response outside of stream, such as the exceptions from bedrock
|
||||||
if provider:is_disable_stream() and result.status == 200 then
|
if result.status == 200 then
|
||||||
vim.schedule(function()
|
vim.schedule(function()
|
||||||
completed = true
|
completed = true
|
||||||
parse_response_without_stream(result.body)
|
parse_response_without_stream(result.body)
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ M.api_key_name = "AZURE_OPENAI_API_KEY"
|
|||||||
M.parse_messages = O.parse_messages
|
M.parse_messages = O.parse_messages
|
||||||
M.parse_response = O.parse_response
|
M.parse_response = O.parse_response
|
||||||
M.parse_response_without_stream = O.parse_response_without_stream
|
M.parse_response_without_stream = O.parse_response_without_stream
|
||||||
M.is_disable_stream = O.is_disable_stream
|
|
||||||
M.is_o_series_model = O.is_o_series_model
|
M.is_o_series_model = O.is_o_series_model
|
||||||
M.role_map = O.role_map
|
M.role_map = O.role_map
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ M.role_map = {
|
|||||||
assistant = "assistant",
|
assistant = "assistant",
|
||||||
}
|
}
|
||||||
|
|
||||||
M.is_disable_stream = Claude.is_disable_stream
|
|
||||||
M.parse_messages = Claude.parse_messages
|
M.parse_messages = Claude.parse_messages
|
||||||
M.parse_response = Claude.parse_response
|
M.parse_response = Claude.parse_response
|
||||||
|
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ M.role_map = {
|
|||||||
assistant = "assistant",
|
assistant = "assistant",
|
||||||
}
|
}
|
||||||
|
|
||||||
function M:is_disable_stream() return false end
|
|
||||||
|
|
||||||
function M:parse_messages(opts)
|
function M:parse_messages(opts)
|
||||||
---@type AvanteClaudeMessage[]
|
---@type AvanteClaudeMessage[]
|
||||||
local messages = {}
|
local messages = {}
|
||||||
|
|||||||
@@ -47,8 +47,6 @@ M.role_map = {
|
|||||||
assistant = "assistant",
|
assistant = "assistant",
|
||||||
}
|
}
|
||||||
|
|
||||||
function M:is_disable_stream() return false end
|
|
||||||
|
|
||||||
function M:parse_messages(opts)
|
function M:parse_messages(opts)
|
||||||
local messages = {
|
local messages = {
|
||||||
{ role = "system", content = opts.system_prompt },
|
{ role = "system", content = opts.system_prompt },
|
||||||
|
|||||||
@@ -209,8 +209,6 @@ M.role_map = {
|
|||||||
assistant = "assistant",
|
assistant = "assistant",
|
||||||
}
|
}
|
||||||
|
|
||||||
function M:is_disable_stream() return false end
|
|
||||||
|
|
||||||
M.parse_messages = OpenAI.parse_messages
|
M.parse_messages = OpenAI.parse_messages
|
||||||
|
|
||||||
M.parse_response = OpenAI.parse_response
|
M.parse_response = OpenAI.parse_response
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ M.role_map = {
|
|||||||
}
|
}
|
||||||
-- M.tokenizer_id = "google/gemma-2b"
|
-- M.tokenizer_id = "google/gemma-2b"
|
||||||
|
|
||||||
function M:is_disable_stream() return false end
|
|
||||||
|
|
||||||
function M:parse_messages(opts)
|
function M:parse_messages(opts)
|
||||||
local contents = {}
|
local contents = {}
|
||||||
local prev_role = nil
|
local prev_role = nil
|
||||||
|
|||||||
@@ -14,8 +14,6 @@ M.role_map = {
|
|||||||
M.parse_messages = P.openai.parse_messages
|
M.parse_messages = P.openai.parse_messages
|
||||||
M.is_o_series_model = P.openai.is_o_series_model
|
M.is_o_series_model = P.openai.is_o_series_model
|
||||||
|
|
||||||
function M:is_disable_stream() return false end
|
|
||||||
|
|
||||||
function M:parse_stream_data(ctx, data, handler_opts)
|
function M:parse_stream_data(ctx, data, handler_opts)
|
||||||
local ok, json_data = pcall(vim.json.decode, data)
|
local ok, json_data = pcall(vim.json.decode, data)
|
||||||
if not ok or not json_data then
|
if not ok or not json_data then
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ M.role_map = {
|
|||||||
assistant = "assistant",
|
assistant = "assistant",
|
||||||
}
|
}
|
||||||
|
|
||||||
function M:is_disable_stream() return false end
|
|
||||||
|
|
||||||
---@param tool AvanteLLMTool
|
---@param tool AvanteLLMTool
|
||||||
---@return AvanteOpenAITool
|
---@return AvanteOpenAITool
|
||||||
function M.transform_tool(tool)
|
function M.transform_tool(tool)
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ M.role_map = {
|
|||||||
assistant = "model",
|
assistant = "model",
|
||||||
}
|
}
|
||||||
|
|
||||||
M.is_disable_stream = Gemini.is_disable_stream
|
|
||||||
M.parse_messages = Gemini.parse_messages
|
M.parse_messages = Gemini.parse_messages
|
||||||
M.parse_response = Gemini.parse_response
|
M.parse_response = Gemini.parse_response
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ M.role_map = {
|
|||||||
assistant = "assistant",
|
assistant = "assistant",
|
||||||
}
|
}
|
||||||
|
|
||||||
M.is_disable_stream = P.claude.is_disable_stream
|
|
||||||
M.parse_messages = P.claude.parse_messages
|
M.parse_messages = P.claude.parse_messages
|
||||||
M.parse_response = P.claude.parse_response
|
M.parse_response = P.claude.parse_response
|
||||||
M.parse_api_key = Vertex.parse_api_key
|
M.parse_api_key = Vertex.parse_api_key
|
||||||
|
|||||||
@@ -261,7 +261,6 @@ vim.g.avante_login = vim.g.avante_login
|
|||||||
---@field parse_messages AvanteMessagesParser
|
---@field parse_messages AvanteMessagesParser
|
||||||
---@field parse_response AvanteResponseParser
|
---@field parse_response AvanteResponseParser
|
||||||
---@field parse_curl_args AvanteCurlArgsParser
|
---@field parse_curl_args AvanteCurlArgsParser
|
||||||
---@field is_disable_stream fun(self: AvanteProviderFunctor): boolean
|
|
||||||
---@field setup fun(): nil
|
---@field setup fun(): nil
|
||||||
---@field is_env_set fun(): boolean
|
---@field is_env_set fun(): boolean
|
||||||
---@field api_key_name string
|
---@field api_key_name string
|
||||||
|
|||||||
Reference in New Issue
Block a user