update
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
module llmfunction
|
||||
|
||||
export virtualWineUserChatbox, jsoncorrection, checkinventory, # recommendbox,
|
||||
export virtualWineUserChatbox, jsoncorrection, checkwine, # recommendbox,
|
||||
virtualWineUserRecommendbox, userChatbox, userRecommendbox, extractWineAttributes_1,
|
||||
extractWineAttributes_2, paraphrase
|
||||
|
||||
@@ -288,28 +288,45 @@ julia> result = checkinventory(agent, input)
|
||||
|
||||
# Signature
|
||||
"""
|
||||
function checkinventory(a::T1, input::T2
|
||||
function checkwine(a::T1, input::T2; maxattempt::Int=3
|
||||
) where {T1<:agent, T2<:AbstractString}
|
||||
|
||||
println("\ncheckinventory order: $input ", @__FILE__, ":", @__LINE__, " $(Dates.now())")
|
||||
wineattributes_1 = extractWineAttributes_1(a, input)
|
||||
wineattributes_2 = extractWineAttributes_2(a, input)
|
||||
|
||||
#CHANGE if you want to add retailer name
|
||||
# _inventoryquery = "retailer name: $(a.retailername), $wineattributes_1, $wineattributes_2"
|
||||
_inventoryquery = "$wineattributes_1, $wineattributes_2"
|
||||
inventoryquery = "Retrieves winery, wine_name, wine_id, vintage, region, country, wine_type, grape, serving_temperature, sweetness, intensity, tannin, acidity, tasting_notes, price and currency of wines that match the following criteria - {$_inventoryquery}"
|
||||
println("\ncheckinventory input: $inventoryquery ", @__FILE__, ":", @__LINE__, " $(Dates.now())")
|
||||
# add suppport for similarSQLVectorDB
|
||||
textresult, rawresponse = SQLLLM.query(inventoryquery, a.func[:executeSQL],
|
||||
a.func[:text2textInstructLLM];
|
||||
insertSQLVectorDB=a.func[:insertSQLVectorDB],
|
||||
similarSQLVectorDB=a.func[:similarSQLVectorDB],
|
||||
llmFormatName="qwen3")
|
||||
#[PENDING] sometime wine data comeout {wine name, price, wine_id} and nothing else. I need to make sure that wine data include all of its attributes
|
||||
# placeholder
|
||||
textresult = nothing
|
||||
rawresponse = nothing
|
||||
|
||||
for i in 1:maxattempt
|
||||
|
||||
#CHANGE if you want to add retailer name
|
||||
# _inventoryquery = "retailer name: $(a.retailername), $wineattributes_1, $wineattributes_2"
|
||||
_inventoryquery = "$wineattributes_1, $wineattributes_2"
|
||||
|
||||
retrieve_attributes = ["winery", "wine_name", "wine_id", "vintage", "region", "country", "wine_type", "grape", "serving_temperature", "sweetness", "intensity", "tannin", "acidity", "tasting_notes", "price", "currency"]
|
||||
inventoryquery = "Retrieves $retrieve_attributes of wines that match the following criteria - {$_inventoryquery}"
|
||||
println("\ncheckinventory input: $inventoryquery ", @__FILE__, ":", @__LINE__, " $(Dates.now())")
|
||||
# add suppport for similarSQLVectorDB
|
||||
textresult, rawresponse = SQLLLM.query(inventoryquery, a.func[:executeSQL],
|
||||
a.func[:text2textInstructLLM];
|
||||
insertSQLVectorDB=a.func[:insertSQLVectorDB],
|
||||
similarSQLVectorDB=a.func[:similarSQLVectorDB],
|
||||
llmFormatName="qwen3")
|
||||
# check if all of retrieve_attributes appears in textresult
|
||||
isin = [occursin(x, textresult) for x in retrieve_attributes]
|
||||
if !all(isin) && !occursin("The resulting table has 0 row", textresult)
|
||||
errornote = "Not all of $retrieve_attributes appear in search result"
|
||||
println("\nERROR YiemAgent checkwine() $errornote ", @__FILE__, ":", @__LINE__, " $(Dates.now())")
|
||||
continue
|
||||
else
|
||||
break
|
||||
end
|
||||
end
|
||||
println("\ncheckinventory result ", @__FILE__, ":", @__LINE__, " $(Dates.now())")
|
||||
println(textresult)
|
||||
#[PENDING] if there is no wine id, it is not a valid result
|
||||
|
||||
return (result=textresult, rawresponse=rawresponse, success=true, errormsg=nothing)
|
||||
end
|
||||
|
||||
@@ -352,7 +369,7 @@ function extractWineAttributes_1(a::T1, input::T2; maxattempt=10
|
||||
wine_name: name of the wine
|
||||
winery: name of the winery
|
||||
vintage: the year of the wine
|
||||
region: a region (NOT a country) where the wine is produced, such as Burgundy, Napa Valley, etc
|
||||
region: a region, such as Burgundy, Bordeaux, Champagne, Napa Valley, Tuscany, California, Oregon, etc
|
||||
country: a country where wine is produced. Can be "Austria", "Australia", "France", "Germany", "Italy", "Portugal", "Spain", "United States"
|
||||
wine_type: can be one of: "red", "white", "sparkling", "rose", "dessert" or "fortified"
|
||||
grape_varietal: the name of the primary grape used to make the wine
|
||||
|
||||
Reference in New Issue
Block a user