update
This commit is contained in:
@@ -85,19 +85,42 @@ using ..type, ..util, ..llmfunction
|
||||
Signature\n
|
||||
-----
|
||||
""" #TODO update document
|
||||
function conversation(a::T, usermsg::String) where {T<:agent}
|
||||
function conversation(a::T) where {T<:agent}
|
||||
while true
|
||||
println("---> conversation loop")
|
||||
println("---> a.receiveUserMsgChannel ready = $(isready(a.receiveUserMsgChannel))")
|
||||
#TODO add "newtopic" command to delete history
|
||||
|
||||
# add usermsg to a.chathistory
|
||||
addNewMessage(a, "user", usermsg)
|
||||
|
||||
#WORKING if the last used tool is a chatbox
|
||||
if a.plan[:currenttrajectory][end][:action] == "chatbox"
|
||||
# usermsg -> observation and continue actor loop as planned
|
||||
# check for incoming user message
|
||||
if isready(a.receiveUserMsgChannel)
|
||||
incomingMsg = take!(a.receiveUserMsgChannel)
|
||||
@show incomingMsg
|
||||
end
|
||||
|
||||
|
||||
else # a new thinking
|
||||
# # if new user message available
|
||||
|
||||
# # if new message == "newtopic"
|
||||
# #TODO add "newtopic" command to delete history
|
||||
|
||||
|
||||
|
||||
|
||||
# # else
|
||||
# # add usermsg to a.chathistory
|
||||
# addNewMessage(a, "user", usermsg)
|
||||
|
||||
# #WORKING if the last used tool is a chatbox
|
||||
# # if a.plan[:currenttrajectory][end][:action] == "chatbox"
|
||||
# # usermsg -> observation and continue actor loop as planned
|
||||
|
||||
|
||||
# # else # a new thinking
|
||||
# # planning with MCTS() -> best plan
|
||||
|
||||
# # actor loop(best plan)
|
||||
|
||||
# # end
|
||||
sleep(3)
|
||||
end
|
||||
|
||||
|
||||
@@ -109,35 +132,36 @@ function conversation(a::T, usermsg::String) where {T<:agent}
|
||||
|
||||
|
||||
|
||||
workstate = nothing
|
||||
response = nothing
|
||||
|
||||
_ = addNewMessage(a, "user", usermsg)
|
||||
isuseplan = isUsePlans(a)
|
||||
# newinfo = extractinfo(a, usermsg)
|
||||
# a.env = newinfo !== nothing ? updateEnvState(a, newinfo) : a.env
|
||||
@show isuseplan
|
||||
# workstate = nothing
|
||||
# response = nothing
|
||||
|
||||
if isuseplan # use plan before responding
|
||||
if haskey(a.memory[:shortterm], "User:") == false #TODO should change role if user want to buy wine.
|
||||
a.memory[:shortterm]["User:"] = usermsg
|
||||
end
|
||||
workstate, response = work(a)
|
||||
end
|
||||
# _ = addNewMessage(a, "user", usermsg)
|
||||
# isuseplan = isUsePlans(a)
|
||||
# # newinfo = extractinfo(a, usermsg)
|
||||
# # a.env = newinfo !== nothing ? updateEnvState(a, newinfo) : a.env
|
||||
# @show isuseplan
|
||||
|
||||
# if LLM using askbox, use returning msg form askbox as conversation response
|
||||
if workstate == "askbox" || workstate == "formulatedUserResponse"
|
||||
#TODO paraphrase msg so that it is human friendlier word.
|
||||
else
|
||||
response = chat_mistral_openorca(a)
|
||||
response = split(response, "\n\n")[1]
|
||||
response = split(response, "\n\n")[1]
|
||||
end
|
||||
# if isuseplan # use plan before responding
|
||||
# if haskey(a.memory[:shortterm], "User:") == false #TODO should change role if user want to buy wine.
|
||||
# a.memory[:shortterm]["User:"] = usermsg
|
||||
# end
|
||||
# workstate, response = work(a)
|
||||
# end
|
||||
|
||||
# # if LLM using askbox, use returning msg form askbox as conversation response
|
||||
# if workstate == "askbox" || workstate == "formulatedUserResponse"
|
||||
# #TODO paraphrase msg so that it is human friendlier word.
|
||||
# else
|
||||
# response = chat_mistral_openorca(a)
|
||||
# response = split(response, "\n\n")[1]
|
||||
# response = split(response, "\n\n")[1]
|
||||
# end
|
||||
|
||||
# response = removeTrailingCharacters(response)
|
||||
# _ = addNewMessage(a, "assistant", response)
|
||||
|
||||
response = removeTrailingCharacters(response)
|
||||
_ = addNewMessage(a, "assistant", response)
|
||||
|
||||
return response
|
||||
end
|
||||
|
||||
|
||||
|
||||
10
src/type.jl
10
src/type.jl
@@ -76,7 +76,7 @@ abstract type agent end
|
||||
|
||||
Signature\n
|
||||
-----
|
||||
""" #TODO update document
|
||||
""" #TODO update docstring
|
||||
@kwdef mutable struct sommelier <: agent
|
||||
name::String
|
||||
id::String
|
||||
@@ -113,11 +113,13 @@ abstract type agent end
|
||||
msgMeta::Dict{Symbol, Any} # a template for msgMeta
|
||||
|
||||
# put incoming message here. waiting for further processing
|
||||
incomingUserMsg::Channel{Dict} = Channel{Dict}(8) # for user communication
|
||||
internalMsg::Channel{Dict} = Channel{Dict}(8) # for internal communication
|
||||
receiveUserMsgChannel::Channel{Dict} = Channel{Dict}(8) # for incoming user communication
|
||||
receiveInternalMsgChannel::Channel{Dict} = Channel{Dict}(8) # for internal communication
|
||||
end
|
||||
|
||||
function sommelier(
|
||||
receiveUserMsgChannel::Channel,
|
||||
receiveInternalMsgChannel::Channel,
|
||||
mqttClient,
|
||||
msgMeta::Dict= GeneralUtils.generate_msgMeta("N/A"),
|
||||
config::Dict = Dict(
|
||||
@@ -153,6 +155,8 @@ function sommelier(
|
||||
#NEXTVERSION set agent according to config
|
||||
|
||||
newAgent = sommelier(
|
||||
receiveUserMsgChannel= receiveUserMsgChannel,
|
||||
receiveInternalMsgChannel= receiveInternalMsgChannel,
|
||||
name= name,
|
||||
id= id,
|
||||
config= config,
|
||||
|
||||
Reference in New Issue
Block a user