34 lines
1.3 KiB
Lua
34 lines
1.3 KiB
Lua
|
|
-- Pull all mood_* entries, ask LLM to summarize trends.
|
|||
|
|
local all = jarvis.memory.all()
|
|||
|
|
local moods = {}
|
|||
|
|
for _, rec in ipairs(all) do
|
|||
|
|
if rec.key:sub(1, 5) == "mood_" then
|
|||
|
|
table.insert(moods, rec.value)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if #moods == 0 then
|
|||
|
|
return jarvis.cmd.not_found("Записей о настроении пока нет.")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- Trim to most-recent-ish 30 entries (memory.all isn't ordered, but mood_<ts> keys sort)
|
|||
|
|
table.sort(moods)
|
|||
|
|
local recent = {}
|
|||
|
|
local start = math.max(1, #moods - 30 + 1)
|
|||
|
|
for i = start, #moods do
|
|||
|
|
table.insert(recent, moods[i])
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local joined = table.concat(recent, "\n")
|
|||
|
|
|
|||
|
|
local summary = jarvis.llm({
|
|||
|
|
{ role = "system", content = "Ты — психотерапевт-помощник. На основе записей пользователя о настроении дай короткую сводку (3-5 предложений) на русском: общий тон, тренды, выдели хороший/плохой день. Без банальностей, без советов." },
|
|||
|
|
{ role = "user", content = "Записи:\n" .. joined }
|
|||
|
|
}, { max_tokens = 250, temperature = 0.5 })
|
|||
|
|
|
|||
|
|
if not summary or summary == "" then
|
|||
|
|
return jarvis.cmd.error("Не получилось обобщить. Возможно, нет связи с LLM.")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
return jarvis.cmd.ok(summary)
|