114 lines
2.6 KiB
Julia
114 lines
2.6 KiB
Julia
using Revise, JSON, Dates, UUIDs, PrettyPrinting, LibPQ, Base64, DataFrames, DataStructures, HTTP, Base64,
|
|
NATS, Base.Threads
|
|
using YiemAgent, GeneralUtils, msghandler
|
|
|
|
|
|
""" Debug
|
|
|
|
using JSON, NATS, msghandler
|
|
using NATS
|
|
|
|
conn = NATS.connect("nats.yiem.cc")
|
|
|
|
sub = NATS.subscribe(conn, "sommanion.debug") do msg
|
|
payload = NATS.payload(msg)
|
|
@info "debug" payload
|
|
|
|
open("./log/error.log", "a") do io
|
|
println(io, payload)
|
|
end
|
|
end
|
|
|
|
NATS.publish(conn, "sommanion.debug", "order-123")
|
|
|
|
|
|
# ---------------------------- inject this code into codebase to debug --------------------------- #
|
|
try
|
|
batch = someFunction(x, y, z)
|
|
catch e
|
|
bt = catch_backtrace()
|
|
err_msg = sprint() do io
|
|
showerror(io, e, bt)
|
|
println(io)
|
|
end
|
|
|
|
agentEventSink(err_msg)
|
|
end
|
|
|
|
"""
|
|
|
|
struct text2textInstructLLM
|
|
natsConn::NATS.Connection
|
|
topic::String
|
|
senderID::String
|
|
fileserver_url::String
|
|
end
|
|
|
|
function (t::text2textInstructLLM)(openai_msg::Dict{String, Any})
|
|
|
|
payloads = [("msg", openai_msg, "dictionary")] # List of tuples
|
|
_, msg_envelope_json_str = msghandler.smartpack(
|
|
t.topic,
|
|
payloads;
|
|
sender_id=t.senderID,
|
|
msg_purpose="text2text",
|
|
fileserver_url=t.fileserver_url)
|
|
|
|
reply = NATS.request(t.natsConn, t.topic, msg_envelope_json_str, timeout=180)
|
|
|
|
incoming_env_json_str = String(reply.payload)
|
|
incoming_env = msghandler.smartunpack(incoming_env_json_str)
|
|
_llm_response = incoming_env["payloads"][1][2]
|
|
llm_response = _llm_response["choices"][1]
|
|
|
|
return llm_response
|
|
end
|
|
|
|
|
|
|
|
struct agentEventSink
|
|
natsConn::NATS.Connection
|
|
topic::String
|
|
senderID::String
|
|
end
|
|
|
|
function (aes::agentEventSink)(msg::String)
|
|
NATS.publish(aes.natsConn, aes.topic, msg)
|
|
end
|
|
|
|
|
|
|
|
config = JSON.parsefile("./appconfig.json")
|
|
agent_conn = NATS.connect(config["nats_server_info"]["url"])
|
|
|
|
|
|
#WORKING load tools
|
|
text2text_llm = text2textInstructLLM(agent_conn,
|
|
config["externalservice"]["servicesloadbalancer"]["nats"],
|
|
"sender",
|
|
config["externalservice"]["fileserver"]["url"])
|
|
|
|
debugNats = agentEventSink(agent_conn, "sommanion.debug", "sender")
|
|
|
|
agent = YiemAgent.yiemAgent(
|
|
text2text_llm;
|
|
agentEventSink=debugNats
|
|
)
|
|
|
|
msg = Dict(
|
|
"role" => "user",
|
|
"content" => [
|
|
Dict("type" => "text", "text" => "What's the weather in Bangkok?"),
|
|
# Dict(
|
|
# "type" => "image_url",
|
|
# "image_url" => Dict("url" => "data:mime_type;base64,image2_base64_string")
|
|
# ),
|
|
]
|
|
)
|
|
|
|
push!(agent.inputChannel, msg)
|
|
|
|
|
|
|
|
|