fix: pass context to provider for stream data parsing (#1475)

* fix: pass context to provider for stream data parsing

* fix: luatype

---------

Co-authored-by: yetone <yetoneful@gmail.com>
This commit is contained in:
brook hong
2025-03-04 00:20:27 +08:00
committed by GitHub
parent c6d5527ea8
commit 6bd966e8e2
4 changed files with 8 additions and 6 deletions

View File

@@ -154,6 +154,8 @@ end
function M._stream(opts)
local provider = opts.provider or Providers[Config.provider]
---@cast provider AvanteProviderFunctor
local prompt_opts = M.generate_prompts(opts)
---@type string
@@ -285,10 +287,10 @@ function M._stream(opts)
{ once = true }
)
end
provider.parse_stream_data(data, handler_opts)
provider.parse_stream_data(resp_ctx, data, handler_opts)
else
if provider.parse_stream_data ~= nil then
provider.parse_stream_data(data, handler_opts)
provider.parse_stream_data(resp_ctx, data, handler_opts)
else
parse_stream_data(data)
end

View File

@@ -28,7 +28,7 @@ function M.build_bedrock_payload(prompt_opts, body_opts)
return model_handler.build_bedrock_payload(prompt_opts, body_opts)
end
function M.parse_stream_data(data, opts)
function M.parse_stream_data(ctx, data, opts)
-- @NOTE: Decode and process Bedrock response
-- Each response contains a Base64-encoded `bytes` field, which is decoded into JSON.
-- The `type` field in the decoded JSON determines how the response is handled.
@@ -37,7 +37,7 @@ function M.parse_stream_data(data, opts)
local jsn = vim.json.decode(bedrock_data_match)
local data_stream = vim.base64.decode(jsn.bytes)
local json = vim.json.decode(data_stream)
M.parse_response({}, data_stream, json.type, opts)
M.parse_response(ctx, data_stream, json.type, opts)
end
end

View File

@@ -57,7 +57,7 @@ function M.parse_messages(opts)
return { messages = messages }
end
function M.parse_stream_data(data, opts)
function M.parse_stream_data(ctx, data, opts)
---@type CohereChatResponse
local json = vim.json.decode(data)
if json.type ~= nil then

View File

@@ -239,7 +239,7 @@ vim.g.avante_login = vim.g.avante_login
---@field tool_use_list? AvanteLLMToolUse[]
---@field retry_after? integer
---
---@alias AvanteStreamParser fun(line: string, handler_opts: AvanteHandlerOptions): nil
---@alias AvanteStreamParser fun(ctx: any, line: string, handler_opts: AvanteHandlerOptions): nil
---@alias AvanteLLMStartCallback fun(opts: AvanteLLMStartCallbackOptions): nil
---@alias AvanteLLMChunkCallback fun(chunk: string): any
---@alias AvanteLLMStopCallback fun(opts: AvanteLLMStopCallbackOptions): nil