refactor: summarize memory (#1508)
This commit is contained in:
52
lua/avante/utils/history.lua
Normal file
52
lua/avante/utils/history.lua
Normal file
@@ -0,0 +1,52 @@
|
||||
local Utils = require("avante.utils")
|
||||
|
||||
---@class avante.utils.history
|
||||
local M = {}
|
||||
|
||||
---@param entries avante.ChatHistoryEntry[]
|
||||
---@return avante.ChatHistoryEntry[]
|
||||
function M.filter_active_entries(entries)
|
||||
local entries_ = {}
|
||||
|
||||
for i = #entries, 1, -1 do
|
||||
local entry = entries[i]
|
||||
if entry.reset_memory then break end
|
||||
if
|
||||
entry.request == nil
|
||||
or entry.original_response == nil
|
||||
or entry.request == ""
|
||||
or entry.original_response == ""
|
||||
then
|
||||
break
|
||||
end
|
||||
table.insert(entries_, 1, entry)
|
||||
end
|
||||
|
||||
return entries_
|
||||
end
|
||||
|
||||
---@param entries avante.ChatHistoryEntry[]
|
||||
---@return AvanteLLMMessage[]
|
||||
function M.entries_to_llm_messages(entries)
|
||||
local messages = {}
|
||||
for _, entry in ipairs(entries) do
|
||||
local user_content = ""
|
||||
if entry.selected_file ~= nil then
|
||||
user_content = user_content .. "SELECTED FILE: " .. entry.selected_file.filepath .. "\n\n"
|
||||
end
|
||||
if entry.selected_code ~= nil then
|
||||
user_content = user_content
|
||||
.. "SELECTED CODE:\n\n```"
|
||||
.. entry.selected_code.filetype
|
||||
.. "\n"
|
||||
.. entry.selected_code.content
|
||||
.. "\n```\n\n"
|
||||
end
|
||||
user_content = user_content .. "USER PROMPT:\n\n" .. entry.request
|
||||
table.insert(messages, { role = "user", content = user_content })
|
||||
table.insert(messages, { role = "assistant", content = Utils.trim_think_content(entry.original_response) })
|
||||
end
|
||||
return messages
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user