From 7ba7e0c6390f0719a47e91d419d5045ceca6f28f Mon Sep 17 00:00:00 2001 From: narawat lamaiin Date: Tue, 15 Oct 2024 21:13:15 +0700 Subject: [PATCH] update --- src/interface.jl | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/interface.jl b/src/interface.jl index b9229a9..e9639d4 100644 --- a/src/interface.jl +++ b/src/interface.jl @@ -1149,17 +1149,21 @@ function generatechat(a::sommelier) pprintln(Dict(responsedict)) # check if LLM recommend wine before checking inventory - isMemEmpty = isempty(a.memory[:shortmem]) - if occursin("Yes", responsedict[:mentioning_winery]) && isMemEmpty - errornote = "Note: You can't recommend wines yet. You must check your inventory before recommending wine to the user." - error("You must check your inventory before recommending wine") - elseif occursin("(check", responsedict[:chat]) || occursin("*check", responsedict[:chat]) || - occursin("inventory)", responsedict[:chat]) || occursin("inventory*", responsedict[:chat]) - - errornote = "Note: You can't recommend wines yet. You must check your inventory before recommending wine to the user." - error("You must check your inventory before recommending wine") - else - errornote = "" + ind = 1:length(a.memory[:events]) + timeline = "" + for (i, event) in enumerate(a.memory[:events][ind]) + if event[:outcome] === nothing + timeline *= "$i) $(event[:subject])> $(event[:action_or_dialogue])\n" + else + timeline *= "$i) $(event[:subject])> $(event[:action_or_dialogue]) $(event[:outcome])\n" + end + end + mentioned_winery = strip.(split(responsedict[:mentioning_winery], ",")) + for i in mentioned_winery + if i != "None" && i != "" && !occursin(i, timeline) + errornote = "Note: Before recommending a wine, ensure it's in your inventory. Check your stock first." + error("Before recommending a wine, ensure it's in your inventory. Check your stock first.") + end end a.memory[:CHATBOX] = "" # delete content because it no longer used.