This commit is contained in:
2026-08-06 19:39:42 +07:00
parent 51fca0aa8c
commit d0bacbb538
+72 -2
View File
@@ -153,9 +153,79 @@ function formatMsgForLLM(preparedContext::Vector{agentMessage})::Dict{String, An
)
"""
# convert various messages to openai message format
messages = Dict{String, Any}[]
return openai_message
for msg in preparedContext
if msg isa userMessage
push!(messages, _userMessageToOpenAI(msg))
elseif msg isa assistantMessage
push!(messages, _assistantMessageToOpenAI(msg))
elseif msg isa toolResultMessage
push!(messages, _toolResultMessageToOpenAI(msg))
end
end
return Dict("messages" => messages)
end
"""
Convert a userMessage to OpenAI message format.
"""
function _userMessageToOpenAI(msg::userMessage)::Dict{String, Any}
return Dict(
"role" => "user",
"content" => _messageContentToBlocks(msg.content)
)
end
"""
Convert an assistantMessage to OpenAI message format.
"""
function _assistantMessageToOpenAI(msg::assistantMessage)::Dict{String, Any}
return Dict(
"role" => "assistant",
"content" => _messageContentToBlocks(msg.content)
)
end
"""
Convert a toolResultMessage to OpenAI message format.
"""
function _toolResultMessageToOpenAI(msg::toolResultMessage)::Dict{String, Any}
return Dict(
"role" => "tool",
"tool_call_id" => msg.toolCallId,
"content" => _messageContentToBlocks(msg.content)
)
end
"""
Convert a vector of messageContent to OpenAI content blocks.
Each textContent becomes a text block, each imageContent becomes
an image_url block.
"""
function _messageContentToBlocks(contents::Vector{messageContent})::Vector{Dict{String, Any}}
blocks = Vector{Dict{String, Any}}()
for c in contents
if c isa textContent
push!(blocks, Dict("type" => "text", "text" => c.text))
elseif c isa imageContent
push!(blocks, Dict(
"type" => "image_url",
"image_url" => Dict(
"url" => "data:$(c.mimeType);base64,$(c.data)"
)
))
end
end
return blocks
end