diff options
author | terminaldweller <devi@terminaldweller.com> | 2025-01-20 05:13:48 +0000 |
---|---|---|
committer | terminaldweller <devi@terminaldweller.com> | 2025-01-20 05:13:48 +0000 |
commit | eba1fe91b882daaa4f6636739d859a5af5ceebe8 (patch) | |
tree | 0c9bd39fdfb5828be33291736b9f56f35fa9f3aa | |
parent | wip (diff) | |
download | lclip-eba1fe91b882daaa4f6636739d859a5af5ceebe8.tar.gz lclip-eba1fe91b882daaa4f6636739d859a5af5ceebe8.zip |
-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) |