fix: reuse parse_messages and remove parse_response_data and have a good function name for check env exists (#1386)
This commit is contained in:
@@ -209,39 +209,7 @@ M.role_map = {
|
|||||||
assistant = "assistant",
|
assistant = "assistant",
|
||||||
}
|
}
|
||||||
|
|
||||||
function M.parse_messages(opts)
|
M.parse_messages = OpenAI.parse_messages
|
||||||
local messages = {
|
|
||||||
{ role = "system", content = opts.system_prompt },
|
|
||||||
}
|
|
||||||
vim
|
|
||||||
.iter(opts.messages)
|
|
||||||
:each(function(msg) table.insert(messages, { role = M.role_map[msg.role], content = msg.content }) end)
|
|
||||||
|
|
||||||
if opts.tool_histories then
|
|
||||||
for _, tool_history in ipairs(opts.tool_histories) do
|
|
||||||
table.insert(messages, {
|
|
||||||
role = M.role_map["assistant"],
|
|
||||||
tool_calls = {
|
|
||||||
{
|
|
||||||
id = tool_history.tool_use.id,
|
|
||||||
type = "function",
|
|
||||||
["function"] = {
|
|
||||||
name = tool_history.tool_use.name,
|
|
||||||
arguments = tool_history.tool_use.input_json,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
local result_content = tool_history.tool_result.content or ""
|
|
||||||
table.insert(messages, {
|
|
||||||
role = "tool",
|
|
||||||
tool_call_id = tool_history.tool_result.tool_use_id,
|
|
||||||
content = tool_history.tool_result.is_error and "Error: " .. result_content or result_content,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return messages
|
|
||||||
end
|
|
||||||
|
|
||||||
M.parse_response = OpenAI.parse_response
|
M.parse_response = OpenAI.parse_response
|
||||||
|
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ function E.setup(opts)
|
|||||||
vim.fn.setenv(var, value)
|
vim.fn.setenv(var, value)
|
||||||
vim.g.avante_login = true
|
vim.g.avante_login = true
|
||||||
else
|
else
|
||||||
if not opts.provider.has() then
|
if not opts.provider.is_env_set() then
|
||||||
Utils.warn("Failed to set " .. var .. ". Avante won't work as expected", { once = true })
|
Utils.warn("Failed to set " .. var .. ". Avante won't work as expected", { once = true })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -137,7 +137,7 @@ function E.setup(opts)
|
|||||||
"noice",
|
"noice",
|
||||||
}
|
}
|
||||||
|
|
||||||
if not vim.tbl_contains(exclude_filetypes, vim.bo.filetype) and not opts.provider.has() then
|
if not vim.tbl_contains(exclude_filetypes, vim.bo.filetype) and not opts.provider.is_env_set() then
|
||||||
DressingState.winid = api.nvim_get_current_win()
|
DressingState.winid = api.nvim_get_current_win()
|
||||||
vim.ui.input({ default = "", prompt = "Enter " .. var .. ": " }, on_confirm)
|
vim.ui.input({ default = "", prompt = "Enter " .. var .. ": " }, on_confirm)
|
||||||
for _, winid in ipairs(api.nvim_list_wins()) do
|
for _, winid in ipairs(api.nvim_list_wins()) do
|
||||||
@@ -203,7 +203,9 @@ M = setmetatable(M, {
|
|||||||
|
|
||||||
---@diagnostic disable: undefined-field,no-unknown,inject-field
|
---@diagnostic disable: undefined-field,no-unknown,inject-field
|
||||||
if Config.vendors[k] ~= nil then
|
if Config.vendors[k] ~= nil then
|
||||||
Opts.parse_response = Opts.parse_response_data
|
if Opts.parse_response_data ~= nil then
|
||||||
|
Utils.error("parse_response_data is not supported for avante.nvim vendors")
|
||||||
|
end
|
||||||
if Opts.__inherited_from ~= nil then
|
if Opts.__inherited_from ~= nil then
|
||||||
local BaseOpts = M.get_config(Opts.__inherited_from)
|
local BaseOpts = M.get_config(Opts.__inherited_from)
|
||||||
local ok, module = pcall(require, "avante.providers." .. Opts.__inherited_from)
|
local ok, module = pcall(require, "avante.providers." .. Opts.__inherited_from)
|
||||||
@@ -223,9 +225,9 @@ M = setmetatable(M, {
|
|||||||
-- default to gpt-4o as tokenizer
|
-- default to gpt-4o as tokenizer
|
||||||
if t[k].tokenizer_id == nil then t[k].tokenizer_id = "gpt-4o" end
|
if t[k].tokenizer_id == nil then t[k].tokenizer_id = "gpt-4o" end
|
||||||
|
|
||||||
if t[k].use_xml_format == nil then t[k].use_xml_format = false end
|
if t[k].use_xml_format == nil then t[k].use_xml_format = true end
|
||||||
|
|
||||||
if t[k].has == nil then t[k].has = function() return E.parse_envvar(t[k]) ~= nil end end
|
if t[k].is_env_set == nil then t[k].is_env_set = function() return E.parse_envvar(t[k]) ~= nil end end
|
||||||
|
|
||||||
if t[k].setup == nil then
|
if t[k].setup == nil then
|
||||||
local provider_conf = M.parse_config(t[k])
|
local provider_conf = M.parse_config(t[k])
|
||||||
|
|||||||
@@ -243,7 +243,6 @@ vim.g.avante_login = vim.g.avante_login
|
|||||||
---@alias AvanteLLMConfigHandler fun(opts: AvanteSupportedProvider): AvanteDefaultBaseProvider, table<string, any>
|
---@alias AvanteLLMConfigHandler fun(opts: AvanteSupportedProvider): AvanteDefaultBaseProvider, table<string, any>
|
||||||
---
|
---
|
||||||
---@class AvanteProvider: AvanteSupportedProvider
|
---@class AvanteProvider: AvanteSupportedProvider
|
||||||
---@field parse_response_data AvanteResponseParser
|
|
||||||
---@field parse_curl_args? AvanteCurlArgsParser
|
---@field parse_curl_args? AvanteCurlArgsParser
|
||||||
---@field parse_stream_data? AvanteStreamParser
|
---@field parse_stream_data? AvanteStreamParser
|
||||||
---@field parse_api_key? fun(): string | nil
|
---@field parse_api_key? fun(): string | nil
|
||||||
@@ -254,7 +253,7 @@ vim.g.avante_login = vim.g.avante_login
|
|||||||
---@field parse_response AvanteResponseParser
|
---@field parse_response AvanteResponseParser
|
||||||
---@field parse_curl_args AvanteCurlArgsParser
|
---@field parse_curl_args AvanteCurlArgsParser
|
||||||
---@field setup fun(): nil
|
---@field setup fun(): nil
|
||||||
---@field has fun(): boolean
|
---@field is_env_set fun(): boolean
|
||||||
---@field api_key_name string
|
---@field api_key_name string
|
||||||
---@field tokenizer_id string | "gpt-4o"
|
---@field tokenizer_id string | "gpt-4o"
|
||||||
---@field use_xml_format boolean
|
---@field use_xml_format boolean
|
||||||
@@ -263,18 +262,7 @@ vim.g.avante_login = vim.g.avante_login
|
|||||||
---@field parse_stream_data? AvanteStreamParser
|
---@field parse_stream_data? AvanteStreamParser
|
||||||
---@field on_error? fun(result: table<string, any>): nil
|
---@field on_error? fun(result: table<string, any>): nil
|
||||||
---
|
---
|
||||||
---@class AvanteBedrockProviderFunctor
|
---@class AvanteBedrockProviderFunctor: AvanteProviderFunctor
|
||||||
---@field parse_response AvanteResponseParser
|
|
||||||
---@field parse_curl_args AvanteCurlArgsParser
|
|
||||||
---@field setup fun(): nil
|
|
||||||
---@field has fun(): boolean
|
|
||||||
---@field api_key_name string
|
|
||||||
---@field tokenizer_id string | "gpt-4o"
|
|
||||||
---@field use_xml_format boolean
|
|
||||||
---@field model? string
|
|
||||||
---@field parse_api_key fun(): string | nil
|
|
||||||
---@field parse_stream_data? AvanteStreamParser
|
|
||||||
---@field on_error? fun(result: table<string, any>): nil
|
|
||||||
---@field load_model_handler fun(): AvanteBedrockModelHandler
|
---@field load_model_handler fun(): AvanteBedrockModelHandler
|
||||||
---@field build_bedrock_payload? fun(prompt_opts: AvantePromptOptions, body_opts: table<string, any>): table<string, any>
|
---@field build_bedrock_payload? fun(prompt_opts: AvantePromptOptions, body_opts: table<string, any>): table<string, any>
|
||||||
---
|
---
|
||||||
|
|||||||
Reference in New Issue
Block a user