From 87bc6a46a14fa8351b033ea7a9f2e1cfe5dcde33 Mon Sep 17 00:00:00 2001 From: narawat Date: Thu, 16 Jul 2026 22:31:40 +0700 Subject: [PATCH] update --- Manifest.toml | 32 ++++++---- Project.toml | 4 +- etc.jl | 137 +++++++++++++++++++++++++++++++++--------- image.png | Bin 0 -> 104524 bytes src/interface.jl | 145 +++++++++++++++++++++++++++++++-------------- src/llmfunction.jl | 86 +++++++++++---------------- src/type.jl | 7 ++- 7 files changed, 273 insertions(+), 138 deletions(-) create mode 100644 image.png diff --git a/Manifest.toml b/Manifest.toml index 8bc7203..a134300 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,7 +2,7 @@ julia_version = "1.12.6" manifest_format = "2.0" -project_hash = "a5128932115e2d3aa9658af105ac712db061d523" +project_hash = "1e317787f914f6d857feb7c23bb910d1185caed9" [[deps.Accessors]] deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] @@ -97,9 +97,9 @@ uuid = "944b1d66-785c-5afd-91f1-9de20f533193" version = "0.7.8" [[deps.CommonSolve]] -git-tree-sha1 = "99ee296f88c12485402e37c2fd025f95ae097637" +git-tree-sha1 = "eeaad7cef88554c2fa56b5a3f71cfd5cb708c662" uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.9" +version = "0.2.11" [[deps.Compat]] deps = ["TOML", "UUIDs"] @@ -246,9 +246,13 @@ version = "0.1.10" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "91e0e5c68d02bcdaae76d3c8ceb4361e8f28d2e9" +git-tree-sha1 = "6621fef488e496356c9c9625d0562c12a6070819" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.5" +version = "1.20.0" +weakdeps = ["HTTP"] + + [deps.FileIO.extensions] + HTTPExt = "HTTP" [[deps.FilePathsBase]] deps = ["Compat", "Dates"] @@ -311,9 +315,9 @@ version = "1.14.0" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "Dates", "EnumX", "PrecompileTools", "Random", "Reseau", "SHA", "URIs", "UUIDs", "Zlib_jll"] -git-tree-sha1 = "eda1d37cb55d90a17d0957c75841138c88b361a1" +git-tree-sha1 = "c2c808326222b6dc4bec295a83b55f79aeec98e0" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "2.5.4" +version = "2.5.5" [[deps.HashArrayMappedTries]] git-tree-sha1 = "2eaa69a7cab70a52b9687c8bf950a5a93ec895ae" @@ -678,15 +682,17 @@ version = "0.4.2" [[deps.PrettyTables]] deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "REPL", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "624de6279ab7d94fc9f672f0068107eb6619732c" +git-tree-sha1 = "ebf455bb866ee6737030e3d3816bb6a0683c4325" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "3.3.2" +version = "3.4.0" [deps.PrettyTables.extensions] + PrettyTablesExcelExt = "XLSX" PrettyTablesTypstryExt = "Typstry" [deps.PrettyTables.weakdeps] Typstry = "f0ed7684-a786-439e-b1e3-3b82803b501e" + XLSX = "fdbf4ff8-1666-58a4-91e7-1b58723a45e0" [[deps.Printf]] deps = ["Unicode"] @@ -767,9 +773,9 @@ version = "0.5.1+0" [[deps.Roots]] deps = ["Accessors", "CommonSolve", "Printf"] -git-tree-sha1 = "ed45bcc7cf3c8887595b973f2b1efbe91dcc50ec" +git-tree-sha1 = "a7caaf7ba8cf307112ca443784d1b56b4a591455" uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -version = "3.0.1" +version = "3.0.5" [deps.Roots.extensions] RootsChainRulesCoreExt = "ChainRulesCore" @@ -1047,10 +1053,10 @@ uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" version = "1.6.1" [[deps.YiemAgent]] -deps = ["CSV", "DataFrames", "DataStructures", "Dates", "HTTP", "JSON", "LLMMCTS", "LibPQ", "NATS", "PrettyPrinting", "Random", "Revise", "SQLLLM", "Serialization", "URIs", "UUIDs"] +deps = ["CSV", "DataFrames", "DataStructures", "Dates", "GeneralUtils", "HTTP", "JSON", "LLMMCTS", "LibPQ", "NATS", "PrettyPrinting", "Random", "Revise", "SQLLLM", "Serialization", "URIs", "UUIDs"] path = "." uuid = "e012c34b-7f78-48e0-971c-7abb83b6f0a2" -version = "0.6.4" +version = "0.6.5" [[deps.Zlib_jll]] deps = ["Libdl"] diff --git a/Project.toml b/Project.toml index ccb543e..b8a7aa7 100644 --- a/Project.toml +++ b/Project.toml @@ -1,9 +1,10 @@ name = "YiemAgent" uuid = "e012c34b-7f78-48e0-971c-7abb83b6f0a2" -version = "0.6.4" +version = "0.6.5" authors = ["narawat lamaiin "] [deps] +Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" @@ -23,6 +24,7 @@ URIs = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" [compat] +Base64 = "1.11.0" CSV = "0.10.15" DataFrames = "1.7.0" GeneralUtils = "0.5.1" diff --git a/etc.jl b/etc.jl index 4b46fd2..bc26067 100644 --- a/etc.jl +++ b/etc.jl @@ -1,28 +1,111 @@ +using HTTP, JSON, URIs, Random, PrettyPrinting, UUIDs, Dates, DataFrames, DataStructures +using GeneralUtils, SQLLLM, YiemAgent + +config = JSON.parsefile("./appconfig.json") +host_url, _port = split(config["externalservice"]["sommpanion_db"]["url"], ':') +port = parse(Int, _port) +dbname = "winedb" +user = config["externalservice"]["sommpanion_db"]["user"] +password = config["externalservice"]["sommpanion_db"]["password"] +pg_conn_str = "host=$host_url port=$port dbname=$dbname user=$user password=$password" + + function execute_sql_winedb(sql::T) where {T<:AbstractString} + host_url, _port = split(config["externalservice"]["sommpanion_db"]["url"], ':') + port = parse(Int, _port) + dbname = "winedb" + user = config["externalservice"]["sommpanion_db"]["user"] + password = config["externalservice"]["sommpanion_db"]["password"] + db_connection = LibPQ.Connection("host=$host_url port=$port dbname=$dbname user=$user password=$password") + result = nothing + try + result = LibPQ.execute(db_connection, sql) + catch e + LibPQ.close(db_connection) + end + + LibPQ.close(db_connection) + return result + end + + + +sql = """ -CREATE TABLE "public"."wine" ( - "wine_id" uuid DEFAULT gen_random_uuid() NOT NULL, - "seo_name" character varying(128) NOT NULL, - "wine_name" character varying(128) NOT NULL, - "winery" character varying(128) NOT NULL, - "vintage" integer NOT NULL, - "region" character varying(128) NOT NULL, - "country" character varying(128) NOT NULL, - "wine_type" character varying(128) NOT NULL, - "grape" character varying(128) NOT NULL, - "serving_temperature" character varying(128) NOT NULL, - "intensity" integer NULL, - "sweetness" integer NULL, - "tannin" integer NULL, - "acidity" integer NULL, - "fizziness" integer NULL, - "tasting_notes" text NULL, - "image_url" jsonb NULL, - "manufacturer_sku" text NULL, - "note" text NULL, - "other_attributes" jsonb NULL, - "created_time" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NULL, - "updated_time" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NULL, - "description" text NULL, - PRIMARY KEY (wine_id) -); -""" \ No newline at end of file +SELECT T1.winery, T1.wine_name, T1.wine_id, T1.vintage, T1.region, T1.country, T1.wine_type, T1.grape, T1.serving_temperature, T1.sweetness, T1.intensity, T1.tannin, T1.acidity, T1.tasting_notes, T2.price, T2.currency, T1.image_url, T3.retailer_name, T3.retailer_id FROM "wine" AS T1 JOIN "retailer_wine" AS T2 ON T1.wine_id = T2.wine_id JOIN "retailer" AS T3 ON T2.retailer_id = T3.retailer_id WHERE T1.wine_name = 'Montrachet Grand Cru' AND T1.winery = 'Domaine Jacques Prieur' AND T3.retailer_name = 'Yiem Wines Ltd' AND T3.retailer_id = 'f54eab6b-7650-4448-b009-c53f3efbcc3b'; +""" + +textresult, sql_result_raw, _, _ = YiemAgent.SQLexecution(execute_sql_winedb, sql) +result_vec = GeneralUtils.dfToVectorDict(sql_result_raw) + +for d in result_vec + wine_name = d["wine_name"] + image_url_json_str = d["image_url"] + image_url_json_obj = JSON.parse(image_url_json) + base_url = "http://192.168.88.106:8080/" + image_base64 = + if haskey(image_url_json_obj, "bottle") + url = base_url * image_url_json_obj["bottle"] + image_data = HTTP.get(url) # vector{int} data + image_base64_string = base64encode(image_data) + else + nothing + end + d["image"] = image_base64 +end + + + + + + + + + + +using LibPQ +using Tables + +""" + update_car_regions_one_by_one(conn::LibPQ.Connection, target_word::String) + +Iterates through all rows in the 'car' table where the region is "German", +and updates them one-by-one to the `target_word`. +""" +function update_car_regions_one_by_one(pg_conn_str::String, replace_word::String , target_word::String) + conn = LibPQ.Connection(pg_conn_str) + # 1. Fetch the target rows. Assumes 'id' is the primary key. + # We select the ID to target rows individually during the update step. + select_query = "SELECT id FROM car WHERE region = '$replace_word';" + + result = execute(conn, select_query) + rows = Tables.rows(result) + + # 2. Prepare the update statement for execution reuse + # Using explicit types for parameter placeholders ($1, $2) + update_query = "UPDATE car SET region = \$1 WHERE id = \$2;" + + println("Starting one-by-one update...") + updated_count = 0 + + # 3. Iterate through rows one-by-one + for row in rows + # LibPQ row values are accessed via properties or column names + row_id = row.id + + # Execute the parameterized statement safely + execute(conn, update_query, [target_word, row_id]) + updated_count += 1 + end + + println("Successfully updated \$updated_count rows.") + return updated_count +end + + + + + + + + + diff --git a/image.png b/image.png new file mode 100644 index 0000000000000000000000000000000000000000..c8926fcf0745b8ef4ceba61ddd1c97d1ab1bbc9a GIT binary patch literal 104524 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%0D~c1(LN)eNglV)4V7QcbyP%m30YoV~ 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

p?XTi1o;354;)m*Q6VFB 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%0A>60+VFIW)y;_&20H{Yc!o9X()Up!yQL#dHb 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 i>7b%>aK@`W?fxgI$ggEQ@tB """ - + @info "YiemAgent decisionMaker() 2 " @__LINE__ # add context to text of the latest message (in the front). # use for loop because in openai format, each msg may contain both text and image. for d in a.chathistory[end]["content"] @@ -123,28 +123,27 @@ function decisionMaker(a::T; recentevents::Integer=20, maxattempt=10 response = nothing # placeholder for show when error msg show up for attempt in 1:maxattempt - if attempt > 1 - println("\nYiemAgent decisionMaker() attempt $attempt/$maxattempt ", @__FILE__, ":", @__LINE__, " $(Dates.now())") - end + @info "YiemAgent decisionMaker() 3 " @__LINE__ msg = Dict( "model" => "gemma-4-E4B-it-UD-Q4_K_XL", "messages" => a.chathistory, "temperature" => 0.7 ) - + @info "YiemAgent decisionMaker() 4 " @__LINE__ response = a.context.text2textInstructLLM(a.id, msg) + @info "YiemAgent decisionMaker() 5 " @__LINE__ response = GeneralUtils.clean_json_response(response) response = GeneralUtils.remove_french_accents(response) think, response = GeneralUtils.extractthink(response) response = String(split(response, ", observation")[1]) # in case LLM generate observation key which it isn't supposed to response = strip(response) - + @info "YiemAgent decisionMaker() 6 " @__LINE__ # dollar sign in Julia means string interpolation while occursin('$', response) response = replace(response, '$' => "USD") end - + @info "YiemAgent decisionMaker() 7 " @__LINE__ responsedict = nothing if occursin(requiredKeys[2], response) try @@ -155,14 +154,24 @@ function decisionMaker(a::T; recentevents::Integer=20, maxattempt=10 continue end end - + @info "YiemAgent decisionMaker() 8 " @__LINE__ # check whether all answer's key points are in responsedict + println("\n---") + println(responsedict) + println("---\n") ispass, errormsg = GeneralUtils.checkAgentResponse_JSON(responsedict, requiredKeys) + @info "YiemAgent decisionMaker() 9 " @__LINE__ if !ispass errornote = errormsg println("\nERROR YiemAgent decisionMaker() $errornote --(not qualify response)-> $responsedict", @__FILE__, ":", @__LINE__, " $(Dates.now())\n") continue end + @info "YiemAgent decisionMaker() 10 " @__LINE__ + if responsedict["action_input"] == "CHAT_BOX" && + occursin("similar", responsedict["action_input"]) + @info "illegal CHAT_BOX search term" @__LINE__ + continue + end # if responsedict["action_name"] ∉ ["CHAT_BOX", "SEARCH_WINE_DATABASE", "PRESENT_WINE_GUIDELINE", "END_CONVER_GUIDELINE"] # errornote = "Your previous attempt didn't use the given functions" @@ -172,7 +181,7 @@ function decisionMaker(a::T; recentevents::Integer=20, maxattempt=10 # println("\nYiem decisionMaker() ", @__FILE__, ":", @__LINE__, " $(Dates.now())") # pprintln(responsedict) - + @info "YiemAgent decisionMaker() 11 " @__LINE__ return responsedict end error("DecisionMaker failed to generate a thought ", response) @@ -380,49 +389,85 @@ function conversation(a::sommelier; userinput::Union{Dict{String, Any}, JSON.Obj @info "YiemAgent conversation() 2-3 think count $loopcount " @__LINE__ thoughtdict, result_raw = think(a) + @info "YiemAgent conversation() 2-4 think count $loopcount " @__LINE__ if thoughtdict["action_name"] ∈ ["CHAT_BOX"] - @info "YiemAgent conversation() 2-4 think count $loopcount " @__LINE__ + @info "YiemAgent conversation() 2-5 think count $loopcount " @__LINE__ + assistant_response = Dict{String, Any}( "role" => "assistant", "content" => [Dict("type" => "text", "text" => thoughtdict["action_input"]),] ) addNewMessage(a, "assistant", assistant_response; maximumMsg=maximumMsg) - @info "YiemAgent conversation() 2-5 think count $loopcount " @__LINE__ - return thoughtdict["action_input"] - # elseif thoughtdict["action_name"] ∈ ["CHAT_BOX"] - # @info "YiemAgent conversation() 2-4 think count $loopcount " @__LINE__ - # assistant_response = Dict{String, Any}( - # "role" => "assistant", - # "content" => [ - # Dict("type" => "text", "text" => thoughtdict["action_input"]), - # Dict( #WORKING put 1st image here - # "type" => "image_url", - # "image_url" => Dict("url" => image1_data_uri) - # ), - # Dict( #WORKING put 2nd image here - # "type" => "image_url", - # "image_url" => Dict("url" => image2_data_uri) - # ), - # ] - # ) - # addNewMessage(a, "assistant", assistant_response; maximumMsg=maximumMsg) - # return thoughtdict["action_input"] #XXX change output from string to dict - else + items_info = [] + if haskey(a.memory["shortmem"], "items_info") + for (i, item) in enumerate(a.memory["shortmem"]["items_info"]) + if haskey(item, "wine_name") && occursin(item["wine_name"], thoughtdict["action_input"]) + push!(items_info, item) + deleteat!(a.memory["shortmem"]["items_info"], i) + end + end + end + + response_to_frontend = Dict{String, Any}( + "role" => "assistant", + "content" => [ + Dict("type" => "text", "text" => thoughtdict["action_input"]), + Dict( + "type" => "items_info", + "items_info" => items_info + ), + ] + ) + + """ intended message to send to frontend should have the following format. + response_to_frontend = Dict{String, Any}( + "role" => "assistant", + "content" => [ + Dict("type" => "text", "text" => "assistant_text_response"), + Dict( + "type" => "items_info", + "items_info" => [ + Dict( + "wine_name"=> "wine name 1", + "wine_id"=> "...", + "image"=> base64 encoded image, + ... + ), + Dict( + "wine_name"=> "wine name 2", + "wine_id"=> "...", + "image"=> base64 encoded image, + ... + ), + ] + ), + ] + ) + """ + + @info "YiemAgent conversation() 2-6 think count $loopcount " @__LINE__ + return response_to_frontend + else # still in action + @info "YiemAgent conversation() 2-7 think count $loopcount " @__LINE__ action_name = thoughtdict["action_name"] action_input = thoughtdict["action_input"] + @info "YiemAgent conversation() 2-8 think count $loopcount " @__LINE__ action_call = Dict{String, Any}( "role" => "action_call", "content" => [Dict("type" => "text", "text" => "{action_name: $action_name, action_input: $action_input}"),] ) + @info "YiemAgent conversation() 2-9 think count $loopcount " @__LINE__ addNewMessage(a, "action_call", action_call; maximumMsg=maximumMsg) - + @info "YiemAgent conversation() 2-10 think count $loopcount " @__LINE__ action_result = thoughtdict["action_result"] actionresult = Dict{String, Any}( "role" => "action_result", "content" => [Dict("type" => "text", "text" => "$action_result"),] ) + @info "YiemAgent conversation() 2-11 think count $loopcount " @__LINE__ addNewMessage(a, "actionresult", actionresult; maximumMsg=maximumMsg) + @info "YiemAgent conversation() 2-12 think count $loopcount " @__LINE__ end end end @@ -442,15 +487,16 @@ julia> """ function think(a::T)::NamedTuple{(:thoughtdict, :result_raw), Tuple{OrderedDict, Any}} where {T<:agent} # a.memory[:recap] = generateSituationReport(a, a.context["text"2textInstructLLM]; skiprecent=0) + @info "YiemAgent think() 1-1 " @__LINE__ thoughtdict = decisionMaker(a) - @info "YiemAgent think() 1 " @__LINE__ + @info "YiemAgent think() 1-2 " @__LINE__ # pprintln(thoughtdict) result_raw = nothing if thoughtdict["action_name"] ∈ ["CHAT_BOX"] - @info "YiemAgent think() 2 " @__LINE__ + @info "YiemAgent think() 2-1 " @__LINE__ thoughtdict, result_raw = generatechat!(a) - + @info "YiemAgent think() 2-2 " @__LINE__ elseif thoughtdict["action_name"] == "END_CONVER_GUIDELINE" @info "YiemAgent think() 3 " @__LINE__ thoughtdict, result_raw = end_conversation_guideline!(a, thoughtdict) @@ -462,7 +508,14 @@ function think(a::T)::NamedTuple{(:thoughtdict, :result_raw), Tuple{OrderedDict, elseif thoughtdict["action_name"] == "SEARCH_WINE_DATABASE" @info "YiemAgent think() 5 " @__LINE__ thoughtdict, result_raw = search_wine_database!(a, thoughtdict; useSQLLLM=false) - #WORKING result_raw will be a df. i need to get images so i can send to frontend + if result_raw !== nothing && result_raw isa Vector + if haskey(a.memory["shortmem"], "items_info") + append!(a.memory["shortmem"]["items_info"], result_raw) + else + a.memory["shortmem"]["items_info"] = result_raw + end + end + else @info "YiemAgent think() 6 " @__LINE__ error("condition is not defined ", @__FILE__, ":", @__LINE__, " $(Dates.now())") @@ -629,7 +682,7 @@ function generatechat!(a::T; maxattempt::Integer=10 "action_name": "...", "action_input": "..." """ - + @info "YiemAgent generatechat!() 1 " @__LINE__ system_msg = Dict( "role" => "system", "content" => [ @@ -644,7 +697,7 @@ function generatechat!(a::T; maxattempt::Integer=10 errornote = "N/A" response = nothing # placeholder for show when error msg show up - + @info "YiemAgent generatechat!() 2 " @__LINE__ for attempt in 1:maxattempt if attempt > 1 println("\nYiemAgent generatechat() attempt $attempt/$maxattempt ", @__FILE__, ":", @__LINE__, " $(Dates.now())") @@ -660,10 +713,9 @@ function generatechat!(a::T; maxattempt::Integer=10 response = GeneralUtils.clean_json_response(response) response = GeneralUtils.remove_french_accents(response) think, response = GeneralUtils.extractthink(response) - response = String(split(response, ", observation")[1]) # in case LLM generate observation key which it isn't supposed to - - response = strip(response) + response = strip(response) + @info "YiemAgent generatechat!() 3 " @__LINE__ responsedict = nothing if occursin(requiredKeys[2], response) try @@ -673,8 +725,12 @@ function generatechat!(a::T; maxattempt::Integer=10 println("\nERROR YiemAgent generatechat() failed to parse response: $response ", @__FILE__, ":", @__LINE__, " $(Dates.now())") continue end + else + println("\nERROR YiemAgent generatechat() $errornote --(not qualify response)> $responsedict", @__FILE__, ":", @__LINE__, " $(Dates.now())\n") + continue end + @info "YiemAgent generatechat!() 4 " @__LINE__ # check whether all answer's key points are in responsedict ispass, errormsg = GeneralUtils.checkAgentResponse_JSON(responsedict, requiredKeys) if !ispass @@ -682,7 +738,7 @@ function generatechat!(a::T; maxattempt::Integer=10 println("\nERROR YiemAgent generatechat() $errornote --(not qualify response)> $responsedict", @__FILE__, ":", @__LINE__, " $(Dates.now())\n") continue end - + @info "YiemAgent generatechat!() 5 " @__LINE__ # if responsedict["action_name"] ∉ ["CHAT_BOX", "SEARCH_WINE_DATABASE", "PRESENT_WINE_GUIDELINE", "END_CONVER_GUIDELINE"] # errornote = "Your previous attempt didn't use the given functions" # println("\nERROR YiemAgent decisionMaker() $errornote --(not qualify response)--> $(responsedict["action_name"])", @__FILE__, ":", @__LINE__, " $(Dates.now())") @@ -691,7 +747,8 @@ function generatechat!(a::T; maxattempt::Integer=10 # println("\nYiem decisionMaker() ", @__FILE__, ":", @__LINE__, " $(Dates.now())") # pprintln(responsedict) - + responsedict["action_result"] = "Action result is the next user dialogue." + @info "YiemAgent generatechat!() 6 " @__LINE__ return (thoughtdict=responsedict, result_raw=responsedict["action_input"]) end error("YiemAgent generatechat() failed to generate a thought ", response) diff --git a/src/llmfunction.jl b/src/llmfunction.jl index 116e764..3c3fb65 100644 --- a/src/llmfunction.jl +++ b/src/llmfunction.jl @@ -2,9 +2,10 @@ module llmfunction export virtualWineUserChatbox, jsoncorrection, search_wine_database!, # recommendbox, virtualWineUserRecommendbox, userChatbox, userRecommendbox, extractWineAttributes_1, - extractWineAttributes_2, paraphrase + extractWineAttributes_2, paraphrase, SQLexecution -using HTTP, JSON, URIs, Random, PrettyPrinting, UUIDs, Dates, DataFrames, DataStructures +using HTTP, JSON, URIs, Random, PrettyPrinting, UUIDs, Dates, DataFrames, DataStructures, + Base64 using GeneralUtils, SQLLLM using ..type, ..util @@ -211,7 +212,7 @@ pushfirst!(virtualCustomerChatHistory, Dict("name"=> "system", "text"=> systemms receiverName= "text2textinstruct", mqttBroker= config["mqttServerInfo"]["broker"], mqttBrokerPort= config["mqttServerInfo"]["port"], - msgId = string(uuid4()) #CHANGE remove after testing finished + msgId = string(uuid4()) # remove after testing finished ) outgoingMsg = Dict( @@ -286,11 +287,11 @@ function search_wine_database!(a::T, thoughtdict::AbstractDict; useSQLLLM::Bool= )::NamedTuple{(:thoughtdict, :result_raw), Tuple{OrderedDict, Any}} where {T<:agent} println("\ncheckinventory order: $(thoughtdict["action_input"]) ", @__FILE__, ":", @__LINE__, " $(Dates.now())") - wineattributes_1 = extractWineAttributes_1(a, thoughtdict["action_input"]) + # wineattributes_1 = extractWineAttributes_1(a, thoughtdict["action_input"]) wineattributes_2 = extractWineAttributes_2(a, thoughtdict["action_input"]) retrieve_attributes = ["winery", "wine_name", "wine_id", "vintage", "region", "country", "wine_type", "grape", "serving_temperature", "sweetness", "intensity", "tannin", "acidity", "tasting_notes", "price", "currency", "image_url", "retailer_name", "retailer_id"] - _inventoryquery = "$wineattributes_1, $wineattributes_2, retailer_name: $(a.retailername), retailerid: $(a.retailerid)" + _inventoryquery = "$(thoughtdict["action_input"]), $wineattributes_2, retailer_name: $(a.retailername), retailerid: $(a.retailerid)" inventoryquery = "Retrieves $retrieve_attributes of wines that match the following criteria - {$_inventoryquery}" println("\ncheckinventory input: $inventoryquery ", @__FILE__, ":", @__LINE__, " $(Dates.now())") @@ -309,47 +310,33 @@ function search_wine_database!(a::T, thoughtdict::AbstractDict; useSQLLLM::Bool= # direct query with possible sql instead of SQLLLM. sql = generatesql(a, inventoryquery) println("\nSQL: $sql ", @__FILE__, ":", @__LINE__, " $(Dates.now()) \n") - textresult, result_raw, _, _ = SQLexecution(a.context.executeSQL, sql) - #WORKING if result_raw != nothing, get image from image_url column of a df. - # then store in a.memory["shortmem]["image"] = OrderedDict( - # Dict( - # "wine_id"=> "wine_id, - # "name"=> "wine name", - # "image_url" => Dict("url" => data1_uri) - # ) - - # ) - - - # # 1. Read local file and encode to base64 string - # image2_path = "test/small_image.png" - # image2_bytes = read(image2_path) - # image2_base64_string = base64encode(image2_bytes) - # mime_type = "image/png" - # data2_uri = "data:$(mime_type);base64,$(image2_base64_string)" - - # # 3. Construct payload with the Data URI - # message = Dict( - # "role" => "user", - # "content" => [ - # Dict("type" => "text", "text" => "Do you know type of wine in the image?"), - # Dict( - # "type" => "image_url", - # "image_url" => Dict("url" => data1_uri) - # ) - # ] - # ) - - - - + textresult, sql_result_df, success, _ = SQLexecution(a.context.executeSQL, sql) + items = nothing + if sql_result_df !== nothing + result_vec = GeneralUtils.dfToVectorDict(sql_result_df) + # get image + for d in result_vec + image_url_json_str = d["image_url"] + image_url_json_obj = JSON.parse(image_url_json_str) + base_url = "http://192.168.88.106:8080/" + if haskey(image_url_json_obj, "bottle") + url = base_url * image_url_json_obj["bottle"] + image_data = HTTP.get(url) # vector{int} data + image_base64_string = base64encode(image_data.body) + d["image"] = image_base64_string + else + d["image"] = nothing + end + end + items = result_vec # image is added to each item + end thoughtdict["action_result"] = textresult end - return (thoughtdict=thoughtdict, result_raw=result_raw) + return (thoughtdict=thoughtdict, result_raw=items) end @@ -366,7 +353,7 @@ function generatesql(a::T, searchterm::String, - A junction table can be used to link tables together. Another use case is for filtering data. - If you can't find a single table that can be used to answer the user's search term, try joining multiple tables to see if you can obtain the answer. - Text information in the database usually stored in lower case. If your search returns empty, try using lower case to search. - - If there is no search result from the database, remove the restrictive criteria until a search result is available, and proceed from there. + - Overly strict condition usually yields empth result # situation At each round of conversation, you will be given the following: @@ -720,7 +707,7 @@ function extractWineAttributes_1(a::T1, input::T2; maxattempt=10 wine_price_max: maximum price range of wine. Example: For wine price 20, wine_price_max will be 20. For wine price 10 to 100, wine_price_max will be 100. occasion: the occasion the user is having the wine for food_to_be_paired_with_wine: food that the user will be served with the wine such as poultry, fish, steak, etc - _keyword suffice is the related keyword that appears in user's query. each keyword can not be used twice. + _keyword suffice is the related keyword that appears in user's query. "wine_name": "...", @@ -827,15 +814,15 @@ function extractWineAttributes_1(a::T1, input::T2; maxattempt=10 responsedict[k] = _v end - # println("\n--- extractWineAttributes_1-1()") - # @show responsedict - # @info "---\n" @__LINE__ + println("\n--- extractWineAttributes_1-1()") + @show responsedict + @info "---\n" @__LINE__ # check each attributes against each column in a database table with BM25 for (k, v) in responsedict if k ∉ ["wine_price_min", "wine_price_max"] words_catalog = GeneralUtils.harvest_entity_catalog(a.context.pg_conn_str, "wine", k) - resolved_word = GeneralUtils.resolve_entity(v, words_catalog;threshold=0.9) + resolved_word = GeneralUtils.resolve_entity(v, words_catalog; threshold=0.9) responsedict[k] = resolved_word end end @@ -849,10 +836,9 @@ function extractWineAttributes_1(a::T1, input::T2; maxattempt=10 end result = result[1:end-2] # remove the ending ", " - # println("\n--- extractWineAttributes_1-2()") - # @show responsedict - # @show result - # @info "---\n" @__LINE__ + println("\n--- extractWineAttributes_1-2()") + @show result + @info "---\n" @__LINE__ return result end error("extractWineAttributes_1() failed to get a response") diff --git a/src/type.jl b/src/type.jl index f97f99c..e42e8e3 100644 --- a/src/type.jl +++ b/src/type.jl @@ -252,6 +252,7 @@ function sommelier( - Your store carries only wine. - Vintage 0 means non-vintage. - Start searching the database as broadly as possible within the given information boundary to maximize the chances of finding. Avoid unnecessary parameters unless specified by the user. Refine the search subsequently. + - User usually ask for something similar. This means you should use the search term based on the profile they like. # situation You are having conversation with a customer. @@ -285,10 +286,10 @@ function sommelier( # available actions "CHAT_BOX", which you can use to talk with the user. The input is dialogue you want to chat with the user according to your plan. - "SEARCH_WINE_DATABASE", allows you to search information about wines you want in your inventory's database. The input is supported search criteria including: retailer_name, wine price, winery, name, vintage, region, country, type, grape varietal, tasting notes, occasion, food pairing, intensity, tannin, sweetness, and acidity. - Example query 1: "Dry, full-bodied red wine from 1) region: Burgundy, country: France or 2) region: Tuscany, country: Italy. Grape varietal: Merlot or Syrah. price 100 to 1000 USD." + "SEARCH_WINE_DATABASE", allows you to search information about wines you want in your inventory's database. The input is strictly supported search term including: retailer_name, wine price, winery, name, vintage, region, country, type of wine, grape varietal, tasting notes, occasion, food pairing, intensity, tannin, sweetness, and acidity. + Example query 1: "Dry, full-bodied red wine from Burgundy, France. Grape varietal could be Merlot or Syrah. price 100 to 1000 USD." Example query 2: "Red or white wine, medium tannin, price under 700 USD" - Example query 3: "white wine, region: Tuscany or Bordeaux, country: Italy or France + Example query 3: "white wine from Tuscany, Italy or Bordeaux, France "WINE_PRESENTATION_GUIDELINE", which you can use to check the store guidelines about how to present wines you have found to the user. The input is "nothing" keyword. The output is the guidelines that you can follow. "END_CONVER_GUIDELINE", which you can use to check the store guidelines about how to end the conversation with the user. The input is "nothing" keyword. The output is the guidelines that you can follow. """