This commit is contained in:
2026-08-17 03:04:10 +07:00
parent c7a98f1710
commit 5829c82d05
11 changed files with 418 additions and 3713 deletions
+12 -8
View File
@@ -5,7 +5,7 @@ export yiemAgent, _agentLoop, OpenAiToUserMessage, _extractToolCalls,
executeToolCallsParallel, executeToolCalls
using JSON, DataStructures, Dates, UUIDs, HTTP, Random, PrettyPrinting, Serialization,
DataFrames, Base.Threads, NATS
DataFrames, Base.Threads, NATS, LibPQ
using GeneralUtils
using ..type, ..utils, ..toolRegistry
@@ -379,7 +379,7 @@ function _processMessage(
# call prepareContext()
state = agentState(systemPrompt, nothing, tools, agentMsgHistory)
agentEventSink("_processMessage 8 _state.messages length $(length(agentMsgHistory))")
preparedContext = prepareContext(state, agentEventSink)
preparedContext = prepareContext(state, agentEventSink, llmCall)
agentEventSink("_processMessage 9 _state.messages length $(length(agentMsgHistory))")
# Call formatMessagesForLLM() to format for LLM
formattedMessages = formatMessagesForLLM(preparedContext, agentEventSink)
@@ -409,6 +409,7 @@ function _processMessage(
beforeToolCall,
afterToolCall,
parallelToolExecute ? "parallel" : "sequential",
llmCall,
)
signal = abortSignal(false)
@@ -1000,13 +1001,14 @@ function executePreparedToolCall(
prep::preparedToolCall,
signal::Union{Nothing,abortSignal},
agentEventSink,
llmCall::Union{Any,Nothing}=nothing,
)::executedOutcome
agentEventSink("executePreparedToolCall 1")
agentEventSink("executePreparedToolCall 2")
agentEventSink("executePreparedToolCall 3")
try
result = prep.tool.execute(prep.toolCall.id, prep.args, signal, agentEventSink)
result = prep.tool.execute(prep.toolCall.id, prep.args, signal, agentEventSink, llmCall)
agentEventSink(result.content[1].text)
agentEventSink("executePreparedToolCall 4")
return executedOutcome(result, false)
@@ -1184,6 +1186,7 @@ function executeToolCallsSequential(
signal::abortSignal,
agentEventSink,
)::agentToolCallBatch
llmCall = config.llmCall
agentEventSink("executeToolCallsSequential 1")
finalizedCalls = finalizedOutcome[]
messages = toolResultMessage[]
@@ -1199,8 +1202,7 @@ function executeToolCallsSequential(
agentEventSink("executeToolCallsSequential 2-2")
else
agentEventSink("executeToolCallsSequential 3")
#XXX
executed = executePreparedToolCall(prep, signal, agentEventSink)
executed = executePreparedToolCall(prep, signal, agentEventSink, llmCall)
agentEventSink("executeToolCallsSequential 3-1")
finalized = finalizeExecutedToolCall(context, assistantMsg, prep, executed, config,
signal, agentEventSink)
@@ -1287,6 +1289,7 @@ function executeToolCallsParallel(
)::agentToolCallBatch
entries = Union{finalizedOutcome,Task}[]
llmCall = config.llmCall
for tc in toolCalls
agentEventSink(toolExecStartEvent(tc.id, tc.name, tc.arguments))
@@ -1300,7 +1303,7 @@ function executeToolCallsParallel(
push!(entries, finalized)
else
t = Task() do
executed = executePreparedToolCall(prep, signal, agentEventSink)
executed = executePreparedToolCall(prep, signal, agentEventSink, llmCall)
finalized = finalizeExecutedToolCall(context, assistantMsg, prep, executed, config, signal)
agentEventSink(toolExecEndEvent(finalized.toolCall.id, finalized.toolCall.name,
finalized.result, finalized.isError))
@@ -1388,6 +1391,7 @@ function executeToolCalls(
agentEventSink,
)::agentToolCallBatch
llmCall = config.llmCall
agentEventSink("_executeToolCalls 1")
hasSequential = false
for tc in toolCalls
@@ -1400,11 +1404,11 @@ function executeToolCalls(
agentEventSink("_executeToolCalls 2")
if config.toolExecution == "sequential" || hasSequential
agentEventSink("_executeToolCalls 3")
return executeToolCallsSequential(context, assistantMsg, toolCalls, config, signal,
return executeToolCallsSequential(context, assistantMsg, toolCalls, config, signal,
agentEventSink)
else
agentEventSink("_executeToolCalls 4")
return executeToolCallsParallel(context, assistantMsg, toolCalls, config, signal,
return executeToolCallsParallel(context, assistantMsg, toolCalls, config, signal,
agentEventSink)
end
end