diff options
Diffstat (limited to '')
| -rw-r--r-- | Dockerfile | 2 | ||||
| -rw-r--r-- | Modelfile | 50 | ||||
| -rwxr-xr-x | lclipd.lua | 6 | ||||
| -rw-r--r-- | ollama.lua | 14 | ||||
| -rwxr-xr-x | test.lua | 12 | 
5 files changed, 69 insertions, 15 deletions
| @@ -1,4 +1,4 @@ -FROM alpine:3.20 +FROM alpine:3.21  RUN apk update && \        apk add --no-cache \        sqlite \ diff --git a/Modelfile b/Modelfile new file mode 100644 index 0000000..2d5e2e1 --- /dev/null +++ b/Modelfile @@ -0,0 +1,50 @@ +FROM llama3.1 + +PARAMETER temperature 0.3 +PARAMETER num_ctx 4096 +PARAMETER seed 17 +PARAMETER top_k 40 +PARAMETER top_p 0.3 + +SYSTEM """ +Learn the following rules. the rules are provided in no particular order: +--- +a public key of an assymetric key-pair is a secret. +a private key of an assymetric key-pair is a secret. +an api key is a secret. +a password is a secret. +a token used for authentication or authorization is a secret. +a key-value pair is a secret if the key contains the word 'password'or 'secret' or 'token' or 'key'. +a string containing the word 'password' or 'secret' or 'token' or 'key' is a secret. +a string that contains a word longer than 20 characters is a secret. +a word that is not part of any of the languages you know which is longer than 20 characters is a secret. +a long string of random characters is a secret. +one matching positive matching criteria is enough to consider a string a secret. +--- + +Only answer in json. +The answer must a field named 'isSecret'. +The answer must have a field named 'reasoning'. +The value of 'isSecret' must be a boolean. +The value of reasoning must be a string. +You must give a reason. +The reason must be the criteria that was used to determine if the string is a secret. +The answer must be valid json. + +Your task is to look at the string that is provided to you. Is it a secret? answer in json. +""" + +MESSAGE user ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEs3GbmHMO0n1rL2vsn7+AH9xJwZ9BOUU6rR6x7hW8uX devi@terminaldweller.com +MESSAGE assistant no + +MESSAGE user password="12345661234" +MESSAGE assistant yes + +MESSAGE user W65X2UljhbM0H9kTVogZ8TnCnIqPbCvvqVUsjZ9gWxjWgFiR1Uzolouc1ghKXUyqinhVcZ1lHnXWv2jHoVRU0dC0DZdyDgYfUiHdBwAeqryc0fT6d7nxgs0UErgwOkNt8S9tKUwadRscS8VV7q2j6F5FvSfyTGflluminatevrFOcGwD1RXkJP0J2aVQWxCCszvTSNhRPTM3TeUw8dXoapXTb2IcSUwKCvAdEhemFOsgU27wF7vHYDrm6GMVofZEwAitpVQxDDPvl7qefIuXdFuDJthnxH8uUJpEbSTWXyFLaE0n5QS063grrx0ar1TCxOpJiiGTSadDeTx8OQAyemqQYj7LoYCkdKCHX7G8VSEuJlFJ6R2CM +MESSAGE assistant yes + +MESSAGE user passwords should be alphanumeric with special symbols and a minimum length of 14 +MESSAGE assistant no + +MESSAGE user you can find the your api token under the security menu +MESSAGE assistant no @@ -107,7 +107,7 @@ parser:option("-e --detect_secrets_exe",                "the command used to call detect-secrets", "detect-secrets")  parser:option("-d --detect_secrets_args",                "options that will be passed to detect secrets", "") -parser:option("-a --address", "address to bind to", "::") +parser:option("-a --address", "address to bind to", "::1")  parser:option("-p --port", "port to bind to", 9999)  parser:option("-c --custom_clip_command", "custom clipboard read command", "")  parser:option("--x_clip_cmd", "the command used to get the X clipboard content", @@ -126,7 +126,7 @@ parser:option("--sql_file",                "")  parser:option("--ollama_endpoint",                "the endpoint to send the clipboard content to", -              "http://127.0.0.1:11434/api/chat") +              "http://172.17.0.1:11434/api/chat")  parser:option("--ollama_model", "the model to use for the ollama endpoint",                "llama3.1")  parser:option("--ollama_prompt", "the prompt to use for the ollama endpoint", "") @@ -242,7 +242,7 @@ local function ask_ollama(clipboard_content, args)      elseif pid == 0 then -- child          unistd.close(pipe_read) -        local is_secert = ollama.ask_ollama(clipboard_content, 5) +        local is_secert = ollama.ask_ollama(clipboard_content, args, 5)          if is_secert == true then              unistd.write(pipe_write, "0") @@ -10,12 +10,12 @@ local ollama = {}  local loop = cq.new() -function ollama.ollama_req(clipboard_content) -    local url = "http://172.17.0.1:11434/api/chat" +function ollama.ollama_req(clipboard_content, args) +    local url = args["ollama_endpoint"]      local req = http_request.new_from_uri(url)      local body = { -        model = "llama3.1", +        model = args["ollama_model"],          stream = false,          format = "json",          messages = { @@ -39,7 +39,7 @@ function ollama.ollama_req(clipboard_content)                  role = "assistant"              }, {                  content = [[ -                Only answer in json.  +                Only answer in json.                  The answer must a field named 'isSecret'.                  The answer must have a field named 'reasoning'.                  The value of 'isSecret' must be a boolean. @@ -52,7 +52,7 @@ function ollama.ollama_req(clipboard_content)              }, {                  content = [[                  Now I will give you your task. -                Look at the user-provided string content.  +                Look at the user-provided string content.                  Is it a secret? answer in json.                  ]],                  role = "assistant" @@ -81,13 +81,13 @@ function ollama.ollama_req(clipboard_content)      return result_body  end -function ollama.ask_ollama(clipboard_content, count) +function ollama.ask_ollama(clipboard_content, args, count)      local true_count = 0      local false_count = 0      loop:wrap(function()          for _ = 1, count do              loop:wrap(function() -                local result = ollama.ollama_req(clipboard_content) +                local result = ollama.ollama_req(clipboard_content, args)                  local result_decoded = json.decode(result)                  local final_result = json.decode(                                           result_decoded["message"]["content"]) @@ -3,11 +3,15 @@  local luaunit = require("luaunit")  local ollama = require("ollama") +local args = {} +args["ollama_endpoint"] = "http://172.17.0.1:11434/api/chat" +args["ollama_model"] = "llama3.1" +  luaunit.assertEquals(ollama.ask_ollama(                           "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEs3GbmHMO0n1rL2vsn7+AH9xJwZ9BOUU6rR6x7hW8uX devi@terminaldweller.com", -                         5), true) -luaunit.assertEquals(ollama.ask_ollama('password="12345661234"', 5), true) +                         args, 5), true) +luaunit.assertEquals(ollama.ask_ollama('password="12345661234"', args, 5), true)  luaunit.assertEquals(ollama.ask_ollama(                           "W65X2UljhbM0H9kTVogZ8TnCnIqPbCvvqVUsjZ9gWxjWgFiR1Uzolouc1ghKXUyqinhVcZ1lHnXWv2jHoVRU0dC0DZdyDgYfUiHdBwAeqryc0fT6d7nxgs0UErgwOkNt8S9tKUwadRscS8VV7q2j6F5FvSfyTGflluminatevrFOcGwD1RXkJP0J2aVQWxCCszvTSNhRPTM3TeUw8dXoapXTb2IcSUwKCvAdEhemFOsgU27wF7vHYDrm6GMVofZEwAitpVQxDDPvl7qefIuXdFuDJthnxH8uUJpEbSTWXyFLaE0n5QS063grrx0ar1TCxOpJiiGTSadDeTx8OQAyemqQYj7LoYCkdKCHX7G8VSEuJlFJ6R2CM", -                         5), true) -luaunit.assertEquals(ollama.ask_ollama('hello my name is', 5), false) +                         args, 5), true) +luaunit.assertEquals(ollama.ask_ollama('hello my name is', args, 5), false) | 
