Files
llm-tricks/test.lua
T
2026-04-15 15:53:18 -06:00

78 lines
1.8 KiB
Lua
Executable File

#!/usr/bin/env luajit
package.path = (arg[0]:match("@?(.*/)") or arg[0]:match("@?(.*\\)")) .. "lib" .. package.config:sub(1, 1) .. "?.lua;" .. package.path
local utility = require "utility"
local json = utility.require("dkjson")
local file_name = arg[1]
local function strip_markdown(text)
local tab = text:split("\n")
table.remove(tab, 1) -- codeblock opening
table.remove(tab, #tab) -- end of codeblock
print(table.concat(tab, "\n"))
end
local tree
tree = function(path, fn)
utility.list(path or ".", function(path_name)
if utility.is_file(path_name) then
fn(path_name)
else
tree(path .. utility.path_separator .. path_name, fn)
end
end)
end
tree(".", function(path_name)
print(path_name)
end)
os.exit()
local prompt = [[Return JSON: category, tags (array), summary (short)]]
-- local prompt = [[Return YAML: category, tags (array), summary (short)]]
if prompt:sub(-1) ~= "\n" then
prompt = prompt .. "\n\n"
end
local file_contents = utility.open(file_name, "r", function(file)
return file:read("*all")
end)
prompt = prompt .. file_contents
local model = "gemma3:4b"
-- local output = utility.capture_safe("ollama run " .. model .. " --nowordwrap " .. prompt:enquote())
local embedding_model = "nomic-embed-text"
local output = utility.capture_safe("ollama run " .. embedding_model .. " " .. file_contents:enquote())
output = output:sub(1, -2) -- strip extra newline from utility.capture_safe
print(output)
-- print(strip_markdown(output))
local embedding_metatable = {
__tojson = function(self, state)
return self.vector
end
}
local output = {
file_name = file_name,
vector = setmetatable({ vector = output }, embedding_metatable),
}
print(json.encode(output, { indent = true }))
-- local file = utility.open("dump.txt", "w", function(file)
-- file:write(output)
-- end)