Files
YiemAgent/test/runtest.jl
narawat lamaiin d042c1d9c3 update
2024-07-25 20:27:12 +07:00

119 lines
3.2 KiB
Julia

using Revise # remove when this package is completed
using YiemAgent, GeneralUtils, JSON3, MQTTClient, Dates, UUIDs, LibPQ
using Base.Threads
# ---------------------------------------------- 100 --------------------------------------------- #
config = copy(JSON3.read("config.json"))
instanceInternalTopic = config[:serviceInternalTopic][:mqtttopic] * "/1"
client, connection = MakeConnection(config[:mqttServerInfo][:broker],
config[:mqttServerInfo][:port])
receiveUserMsgChannel = Channel{Dict}(4)
receiveInternalMsgChannel = Channel{Dict}(4)
println(typeof(connection))
msgMeta = GeneralUtils.generate_msgMeta(
"N/A",
replyTopic = config[:servicetopic][:mqtttopic] # ask frontend reply to this instance_chat_topic
)
# commConfig = Dict(
# :mqttServerInfo=> config[:mqttServerInfo],
# :receivemsg=> Dict(
# :prompt=> config[:servicetopic][:mqtttopic], # topic to receive prompt i.e. frontend send msg to this topic
# ),
# :externalservice=> config[:externalservice],
# )
function executeSQL(sql::T) where {T<:AbstractString}
DBconnection = LibPQ.Connection("host=192.168.88.12 port=5432 dbname=yiem_wine_assistant user=yiem password=yiem@Postgres_0.0")
result = LibPQ.execute(DBconnection, sql)
close(DBconnection)
return result
end
function text2textInstructLLM(prompt::String)
msgMeta = GeneralUtils.generate_msgMeta(
config[:externalservice][:text2textinstruct][:mqtttopic],
senderName= "yiemagent",
senderId= string(uuid4()),
receiverName= "text2textinstruct",
mqttBroker= config[:mqttServerInfo][:broker],
mqttBrokerPort= config[:mqttServerInfo][:port],
)
outgoingMsg = Dict(
:msgMeta=> msgMeta,
:payload=> Dict(
:text=> prompt,
:kwargs=> Dict(
:max_tokens=> 1024,
:stop=> ["<|eot_id|>"],
:temperature=> 0.2,
)
)
)
_response = GeneralUtils.sendReceiveMqttMsg(outgoingMsg)
response = _response[:response][:text]
return response
end
# Instantiate an agent
a = YiemAgent.sommelier(
text2textInstructLLM,
executeSQL;
name="assistant",
id="testingSessionID", # agent instance id
)
# response = YiemAgent.conversation(a, Dict(:text=> "newtopic",) )
# response = YiemAgent.conversation(a, Dict(:text=> "Hello, I would like a get a bottle of wine."))
# println("---> YiemAgent: ", response)
# response = YiemAgent.conversation(a, Dict(:text=> "I'm having a graduation party this evening. I'll pay at most 30 bucks."))
# function main()
# userinput = "Hello, I would like a get a bottle of wine."
# for i in 1:10
# response = YiemAgent.conversation(a, Dict(:text=> userinput))
# println("")
# println("--> assistant response: \n", response)
# println("")
# println("--> user input:")
# userinput = readline()
# end
# end
# main()
# input = "query=\"off dry, medium tannin, French Rosé\""
input = "wine_type: rose, country: France, sweetness: 2, tannin: 3"
YiemAgent.winestock(a, input)
"""
I'm having a graduation party this evening. I'll pay at most 30 bucks.
I have no idea. The party will be formal. What type of wine people usually get for this occasion?
What about sparkling Rose?
"""