1st commit

This commit is contained in:
2026-09-22 05:53:59 +07:00
commit 92a23740c6
15 changed files with 2868 additions and 0 deletions
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

+243
View File
@@ -0,0 +1,243 @@
# ---------------------------------------------- 100 --------------------------------------------- #
using JSON, Dates, UUIDs, PrettyPrinting, Base64, DataFrames, NATS, HTTP
using GeneralUtils, msghandler
# ------------------------------------------------------------------------------------------------ #
# llama.cpp chat request example (direct HTTP) #
# ------------------------------------------------------------------------------------------------ #
# 1. Read local file and encode to base64 string
image_path = "test/large_image.png"
image_bytes = read(image_path)
base64_string = base64encode(image_bytes)
# 2. Match the MIME type according to your file extension (e.g., png, jpeg)
mime_type = "image/png"
data_uri = "data:$(mime_type);base64,$(base64_string)"
headers = [
"Content-Type" => "application/json",
"Authorization" => "Bearer no-key"
]
# 3. Construct payload with the Data URI
messages = Dict(
"model" => "gemma-4-E4B-it-UD-Q4_K_XL",
"messages" => [
Dict(
"role" => "user",
"content" => [
Dict("type" => "text", "text" => "Describe this image for me."),
Dict(
"type" => "image_url",
"image_url" => Dict("url" => data_uri)
)
]
)
],
"temperature" => 0.7
)
url = "http://192.168.1.8:9001/v1/chat/completions"
response = HTTP.post(url, headers, JSON.json(messages))
r = JSON.parse(response.body)
# ------------------------------------------------------------------------------------------------ #
# Llama.cpp Embedding multiple text example (direct HTTP) #
# ------------------------------------------------------------------------------------------------ #
using HTTP
using JSON
url = "http://192.168.88.50:9010/v1/embeddings"
headers = [
"Content-Type" => "application/json",
"Authorization" => "Bearer no-key"
]
# Pass an array of strings instead of a single string
documents = [
"System architecture specification for heart monitor logic.",
"NATS broker cluster configuration options for low-latency.",
"Julia signal processing worker initialization sequence."
]
body_data = Dict(
"model" => "embeddinggemma-300M-BF16",
"input" => documents
)
try
response = HTTP.post(url, headers, JSON.json(body_data))
parsed = JSON.parse(String(response.body))
# Extract multiple vectors (ordered identically to your input array)
for (i, item) in enumerate(parsed["data"])
idx = item["index"] + 1 # API indexes are 0-based; Julia is 1-based
vector = item["embedding"]
println("Document $idx unified vector size: ", length(vector))
end
catch e
println("Batch embedding failed: ", e)
end
# ------------------------------------------------------------------------------------------------ #
# test openai_message (NATS) #
# ------------------------------------------------------------------------------------------------ #
# ------------------------------------------------------------------------------------------------ #
# Llama.cpp Embedding multiple text with NATS #
# ------------------------------------------------------------------------------------------------ #
using JSON, Dates, UUIDs, PrettyPrinting, Base64, DataFrames, NATS, HTTP
using GeneralUtils, msghandler
const config = JSON.parsefile("./appconfig.json")
documents = [
"System architecture specification for heart monitor logic.",
# "NATS broker cluster configuration options for low-latency.",
# "Julia signal processing worker initialization sequence."
]
documents_dict = Dict("documents"=> documents)
payloads = [("documents", documents_dict, "dictionary")]
message_envelope, forward_msg_envelope_json_str = msghandler.smartpack(
config["this_service_input_channel"]["nats"],
payloads;
msg_purpose="embedding",
broker_url=config["nats_server_info"]["url"],
fileserver_url=config["externalService"]["fileserver"]["url"])
connection = NATS.connect(config["nats_server_info"]["url"])
reply = NATS.request(connection,
config["this_service_input_channel"]["nats"],
forward_msg_envelope_json_str, timeout=120)
incoming_env_json_str = String(reply.payload)
incoming_env = msghandler.smartunpack(incoming_env_json_str)
embedding_response = incoming_env["payloads"][1][2]
for (i, item) in enumerate(embedding_response["data"])
vector = item["embedding"]
println("Document $i embedding vector size: ", length(vector))
end
# ------------------------------------------------------------------------------------------------ #
# test openai_message (NATS) #
# ------------------------------------------------------------------------------------------------ #
using JSON, Dates, UUIDs, PrettyPrinting, Base64, DataFrames, NATS, HTTP
using GeneralUtils, msghandler
const config = JSON.parsefile("./appconfig.json")
# 1. Read local file and encode to base64 string
image_path = "test/large_image.png"
image_bytes = read(image_path)
base64_string = base64encode(image_bytes)
# 2. Match the MIME type according to your file extension (e.g., png, jpeg)
mime_type = "image/png"
data_uri = "data:$(mime_type);base64,$(base64_string)"
headers = [
"Content-Type" => "application/json",
"Authorization" => "Bearer no-key"
]
# 3. Construct payload with the Data URI
openai_msg = Dict(
"model" => "gemma-4-E4B-it-UD-Q4_K_XL",
"messages" => [
Dict(
"role" => "user",
"content" => [
Dict("type" => "text", "text" => "Describe this image for me in detail."),
Dict(
"type" => "image_url",
"image_url" => Dict("url" => data_uri)
)
]
)
],
"temperature" => 0.7
)
payloads = [("msg", openai_msg, "dictionary")] # List of tuples
message_envelope, forward_msg_envelope_json_str = msghandler.smartpack(
config["this_service_input_channel"]["nats"],
payloads;
msg_purpose="text2text",
broker_url=config["nats_server_info"]["url"],
fileserver_url=config["externalService"]["fileserver"]["url"])
connection = NATS.connect(config["nats_server_info"]["url"])
reply = NATS.request(connection,
config["this_service_input_channel"]["nats"],
forward_msg_envelope_json_str, timeout=120)
incoming_env_json_str = String(reply.payload)
incoming_env = msghandler.smartunpack(incoming_env_json_str)
ai_response = incoming_env["payloads"][1][2]
content = ai_response["choices"][1]["message"]["content"]