using Revise # remove when this package is completed using YiemAgent, GeneralUtils, JSON3, MQTTClient, Dates, UUIDs using Base.Threads # ---------------------------------------------- 100 --------------------------------------------- # config = copy(JSON3.read("config.json")) instanceInternalTopic = config[:serviceInternalTopic][:value] * "/1" client, connection = MakeConnection(config[:mqttBroker][:value], 1883) msgMeta = GeneralUtils.generate_msgMeta( "N/A", replyTopic = config[:servicetopic][:value] # ask frontend reply to this instance_chat_topic ) agentConfig = Dict( :receiveprompt=>Dict( :mqtttopic=> config[:servicetopic][:value], # topic to receive prompt i.e. frontend send msg to this topic ), :receiveinternal=>Dict( :mqtttopic=> instanceInternalTopic, # receive topic for model's internal ), :text2text=>Dict( :mqtttopic=> config[:text2text][:value], ), ) # Instantiate an agent tools=Dict( # update input format "askbox"=> Dict( :description => "Useful for when you need to ask the user for more context. Do not ask the user their own question.", :input => """Input is a text in JSON format.{\"Q1\": \"How are you doing?\", \"Q2\": \"How may I help you?\"}""", :output => "" , :func => nothing, ), # "winestock"=> Dict( # :description => "A handy tool for searching wine in your inventory that match the user preferences.", # :input => """Input is a JSON-formatted string that contains a detailed and precise search query.{\"wine type\": \"rose\", \"price\": \"max 35\", \"sweetness level\": \"sweet\", \"intensity level\": \"light bodied\", \"Tannin level\": \"low\", \"Acidity level\": \"low\"}""", # :output => """Output are wines that match the search query in JSON format.""", # :func => ChatAgent.winestock, # ), "finalanswer"=> Dict( :description => "Useful for when you are ready to recommend wines to the user.", :input => """{\"finalanswer\": \"some text\"}.{\"finalanswer\": \"I recommend Zena Crown Vista\"}""", :output => "" , :func => nothing, ), ) a = YiemAgent.sommelier( client, msgMeta, agentConfig, name= "testAgent", id= "testid", # agent instance id tools=tools, ) response = YiemAgent.conversation(a, "hello")