This commit is contained in:
narawat lamaiin
2024-06-24 19:42:20 +07:00
parent 7dab20df41
commit 21e48c31ca
3 changed files with 33 additions and 39 deletions

BIN
core Normal file

Binary file not shown.

View File

@@ -25,7 +25,7 @@ julia>
# Signature # Signature
""" """
function jsoncorrection(config::Dict, jsonstring::String, context::Dict) function jsoncorrection(config::Dict, jsonstring::String, context)
initialstate = Dict{Symbol, Any}( initialstate = Dict{Symbol, Any}(
:reward=> 0, :reward=> 0,
@@ -46,13 +46,13 @@ function jsoncorrection(config::Dict, jsonstring::String, context::Dict)
reflector=reflector, reflector=reflector,
context=context, context=context,
) )
result, _ = LLMMCTS.runMCTS(initialstate, transition, transitionargs; _, result = LLMMCTS.runMCTS(initialstate, transition, transitionargs;
totalsample=1, maxdepth=3, maxiterations=1, explorationweight=1.0) totalsample=1, maxdepth=3, maxiterations=1, explorationweight=1.0)
if result[:response] !== nothing if result[:response] !== nothing
return (response=result[:response], select=nothing, reward=0, isterminal=false) return response=result[:code]
else else
return (response=result[:errorexplain], select=nothing, reward=0, isterminal=false) return response=result[:errorexplain]
end end
end end
@@ -84,7 +84,7 @@ function transition(state::T1, args::NamedTuple
decisionMaker::Function = args[:decisionMaker] decisionMaker::Function = args[:decisionMaker]
evaluator::Function = args[:evaluator] evaluator::Function = args[:evaluator]
reflector::Function = args[:reflector] reflector::Function = args[:reflector]
context::Union{AbstractDict, Nothing} = args[:context] context = args[:context]
# only for the 1st transition # only for the 1st transition
if state[:errormsg] === nothing if state[:errormsg] === nothing
@@ -139,8 +139,8 @@ function decisionMaker(state, config, context)
At each round of conversation, the user will give you: At each round of conversation, the user will give you:
Context: .... Context: ....
Query: The user's original incorrect JSON string Query: The user's original incorrect JSON string
Code from the last round: Your revised JSON string Code from the last round: Your previous revised JSON string
Execution error: Your JSON string's parsing error Execution error: Code from the last round error
You should then respond to the user with: You should then respond to the user with:
- Why: Why couldn't the JSON string be loaded? Are there any steps missing in your plan? What does the execution error imply? - Why: Why couldn't the JSON string be loaded? Are there any steps missing in your plan? What does the execution error imply?
@@ -157,14 +157,14 @@ function decisionMaker(state, config, context)
usermsg = usermsg =
if state[:code] !== nothing if state[:code] !== nothing
""" """
Context: $(JSON3.write(context[:expectedJsonExample])) Context: $context
Query: $(state[:question]) Query: $(state[:question])
Code from the last round: $(state[:code]) Code from the last round: $(state[:code])
Execution error: $(state[:errormsg]) Execution error: $(state[:errormsg])
""" """
else else
""" """
Context: $(JSON3.write(context[:expectedJsonExample])) Context: $context
Query: $(state[:question]) Query: $(state[:question])
Code from the last round: None Code from the last round: None
Execution error: $(state[:errormsg]) Execution error: $(state[:errormsg])
@@ -210,18 +210,19 @@ function decisionMaker(state, config, context)
) )
) )
for i in 1:5
response = GeneralUtils.sendReceiveMqttMsg(outgoingMsg) response = GeneralUtils.sendReceiveMqttMsg(outgoingMsg)
_responseJsonStr = response[:response][:text] _responseJsonStr = response[:response][:text]
code =
if length(split(_responseJsonStr, "Code:")) == 2
split(_responseJsonStr, "Code:")
elseif length(split(_responseJsonStr, "Code\":")) == 2
split(_responseJsonStr, "Code\":")
else
error("failed to get Code part")
end
return code if length(split(_responseJsonStr, "Code:")) == 2
return split(_responseJsonStr, "Code:")
elseif length(split(_responseJsonStr, "Code\":")) == 2
return split(_responseJsonStr, "Code\":")
else
println("Trying to get Code part")
end
end
error("Failed to get Code part.")
end end

View File

@@ -3,8 +3,7 @@ using FormatCorrector
incorrectjson = " \"explain\": \"The user is asking about wines that are suitable for pairing with lamb. I need to explore the database to find relevant information.\",\n \"plan\":\n 1) List all tables in the database using the function `listalltables` to get an idea of what data is available.\n \"action\": {\"name\": \"listalltables\", \"input\": null},\n \"expectation\": The list of all tables in the database,\n \"observation\": null\n}" incorrectjson = " \"explain\": \"The user is asking about wines that are suitable for pairing with lamb. I need to explore the database to find relevant information.\",\n \"plan\":\n 1) List all tables in the database using the function `listalltables` to get an idea of what data is available.\n \"action\": {\"name\": \"listalltables\", \"input\": null},\n \"expectation\": The list of all tables in the database,\n \"observation\": null\n}"
context = Dict( context =
:expectedJsonExample=>
""" """
Here is an expected JSON format: Here is an expected JSON format:
{ {
@@ -15,7 +14,6 @@ context = Dict(
"observation": ... "observation": ...
} }
""" """
)
config = Dict( config = Dict(
:mqttServerInfo => Dict( :mqttServerInfo => Dict(
@@ -34,12 +32,7 @@ config = Dict(
result = FormatCorrector.jsoncorrection(config, incorrectjson, context) result = FormatCorrector.jsoncorrection(config, incorrectjson, context)
println("done")