update
This commit is contained in:
@@ -292,7 +292,7 @@ function decisionMaker(a::T; recent::Integer=5)::Dict{Symbol,Any} where {T<:agen
|
|||||||
Third, explain the potential impact each option could bring to the user."
|
Third, explain the potential impact each option could bring to the user."
|
||||||
- ENDCONVERSATION which you can use when you believe the user has concluded their interaction, to properly end the conversation with them. Input is "NA".
|
- ENDCONVERSATION which you can use when you believe the user has concluded their interaction, to properly end the conversation with them. Input is "NA".
|
||||||
5) Action_input: input of the action
|
5) Action_input: input of the action
|
||||||
6) Mentioning_winery: Are there any winery names mentioned in your response? Can be the names of the wineries or "None".
|
6) Mentioning_winery: Are there any winery mentioned in your response? Can be the names of the wineries or "None".
|
||||||
|
|
||||||
You should only respond in format as described below:
|
You should only respond in format as described below:
|
||||||
Understanding: ...
|
Understanding: ...
|
||||||
@@ -382,21 +382,12 @@ function decisionMaker(a::T; recent::Integer=5)::Dict{Symbol,Any} where {T<:agen
|
|||||||
#[WORKING] check whether winery is from agent's memory
|
#[WORKING] check whether winery is from agent's memory
|
||||||
mentioned_winery = strip.(split(responsedict[:mentioning_winery], ","))
|
mentioned_winery = strip.(split(responsedict[:mentioning_winery], ","))
|
||||||
for i in mentioned_winery
|
for i in mentioned_winery
|
||||||
if i != "None" && !occursin(i, timeline)
|
if i != "None" && i != "" && !occursin(i, timeline)
|
||||||
errornote = "Note: Before recommending a wine, ensure it's in your inventory. Check your stock first."
|
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.")
|
error("Before recommending a wine, ensure it's in your inventory. Check your stock first.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# # check if LLM recommend wine before checking inventory
|
|
||||||
# isMemEmpty = isempty(a.memory[:shortmem])
|
|
||||||
# if !occursin("None", responsedict[:mentioning_winery]) && isMemEmpty &&
|
|
||||||
# responsedict[:action_name] != "CHECKINVENTORY"
|
|
||||||
|
|
||||||
# errornote = "Note: You can't recommend wines yet. You must check your inventory before recommending wine to the user."
|
|
||||||
# error("You can't recommend wines yet. You must check your inventory before recommending wines")
|
|
||||||
# else
|
|
||||||
|
|
||||||
if responsedict[:action_name] == "PRESENTBOX" && mentioned_winery == "None"
|
if responsedict[:action_name] == "PRESENTBOX" && mentioned_winery == "None"
|
||||||
errornote = "Note: Before recommending a wine, ensure it's in your inventory. Check your stock first."
|
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.")
|
error("Before recommending a wine, ensure it's in your inventory. Check your stock first.")
|
||||||
@@ -982,10 +973,10 @@ julia>
|
|||||||
"""
|
"""
|
||||||
function think(a::T)::NamedTuple{(:actionname, :result),Tuple{String,String}} where {T<:agent}
|
function think(a::T)::NamedTuple{(:actionname, :result),Tuple{String,String}} where {T<:agent}
|
||||||
|
|
||||||
a.memory[:recap] = generateSituationReport(a, a.text2textInstructLLM; skiprecent=5)
|
a.memory[:recap] = generateSituationReport(a, a.text2textInstructLLM; skiprecent=3)
|
||||||
a.memory[:QandA] = generatequestion(a, a.text2textInstructLLM; recent=5)
|
a.memory[:QandA] = generatequestion(a, a.text2textInstructLLM; recent=3)
|
||||||
|
|
||||||
thoughtDict = decisionMaker(a; recent=5)
|
thoughtDict = decisionMaker(a; recent=3)
|
||||||
|
|
||||||
actionname = thoughtDict[:action_name]
|
actionname = thoughtDict[:action_name]
|
||||||
actioninput = thoughtDict[:action_input]
|
actioninput = thoughtDict[:action_input]
|
||||||
@@ -1090,7 +1081,7 @@ function generatechat(a::sommelier)
|
|||||||
|
|
||||||
You should then respond to the user with:
|
You should then respond to the user with:
|
||||||
1) Mentioning_winery: Are there any winery names mentioned in your response? Can be the names of the wineries or "None".
|
1) Mentioning_winery: Are there any winery names mentioned in your response? Can be the names of the wineries or "None".
|
||||||
2) Chat: Given the situation, How would you respond to the user in a way that expresses your thoughts while keeping the conversation going smoothly?
|
2) Chat: Given the situation, how would you respond to the user in a way that expresses your thoughts while keeping the conversation going smoothly?
|
||||||
|
|
||||||
You should only respond in format as described below:
|
You should only respond in format as described below:
|
||||||
Mentioning_winery: ...
|
Mentioning_winery: ...
|
||||||
@@ -1405,6 +1396,7 @@ function generatequestion(a, text2textInstructLLM::Function; recent=nothing)::St
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
errornote = ""
|
errornote = ""
|
||||||
|
noise = ""
|
||||||
response = nothing # store for show when error msg show up
|
response = nothing # store for show when error msg show up
|
||||||
|
|
||||||
for attempt in 1:10
|
for attempt in 1:10
|
||||||
@@ -1412,6 +1404,7 @@ function generatequestion(a, text2textInstructLLM::Function; recent=nothing)::St
|
|||||||
Recap: $(a.memory[:recap])
|
Recap: $(a.memory[:recap])
|
||||||
Your recent events: $timeline
|
Your recent events: $timeline
|
||||||
$errornote
|
$errornote
|
||||||
|
$noise
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_prompt =
|
_prompt =
|
||||||
@@ -1459,6 +1452,7 @@ function generatequestion(a, text2textInstructLLM::Function; recent=nothing)::St
|
|||||||
errorMsg = String(take!(io))
|
errorMsg = String(take!(io))
|
||||||
st = sprint((io, v) -> show(io, "text/plain", v), stacktrace(catch_backtrace()))
|
st = sprint((io, v) -> show(io, "text/plain", v), stacktrace(catch_backtrace()))
|
||||||
println("\nAttempt $attempt. Error occurred: $errorMsg\n$st ", @__FILE__, " ", @__LINE__)
|
println("\nAttempt $attempt. Error occurred: $errorMsg\n$st ", @__FILE__, " ", @__LINE__)
|
||||||
|
noise = GeneralUtils.randstrings(3, 5)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
error("generatequestion failed to generate a thought ", response)
|
error("generatequestion failed to generate a thought ", response)
|
||||||
|
|||||||
Reference in New Issue
Block a user