2025-05-05 12:28:48 +02:00

123 lines
5.1 KiB
Lua

local function get_text_fn(json)
return json.response
end
return {
{
"milanglacier/minuet-ai.nvim",
config = function()
require("minuet").setup({
virtualtext = {
auto_trigger_ft = {},
keymap = {
-- accept whole completion
accept = "<A-A>",
-- accept one line
accept_line = "<A-a>",
-- accept n lines (prompts for number)
-- e.g. "A-z 2 CR" will accept 2 lines
accept_n_lines = "<A-z>",
-- Cycle to prev completion item, or manually invoke completion
prev = "<A-[>",
-- Cycle to next completion item, or manually invoke completion
next = "<A-]>",
dismiss = "<A-e>",
},
},
provider = "openai_fim_compatible",
-- the maximum total characters of the context before and after the cursor
-- 16000 characters typically equate to approximately 4,000 tokens for
-- LLMs.
context_window = 4000,
-- when the total characters exceed the context window, the ratio of
-- context before cursor and after cursor, the larger the ratio the more
-- context before cursor will be used. This option should be between 0 and
-- 1, context_ratio = 0.75 means the ratio will be 3:1.
context_ratio = 0.75,
throttle = 0, -- only send the request every x milliseconds, use 0 to disable throttle.
-- debounce the request in x milliseconds, set to 0 to disable debounce
debounce = 100,
-- Control notification display for request status
-- Notification options:
-- false: Disable all notifications (use boolean false, not string "false")
-- "debug": Display all notifications (comprehensive debugging)
-- "verbose": Display most notifications
-- "warn": Display warnings and errors only
-- "error": Display errors only
notify = "warn",
-- The request timeout, measured in seconds. When streaming is enabled
-- (stream = true), setting a shorter request_timeout allows for faster
-- retrieval of completion items, albeit potentially incomplete.
-- Conversely, with streaming disabled (stream = false), a timeout
-- occurring before the LLM returns results will yield no completion items.
request_timeout = 10,
-- If completion item has multiple lines, create another completion item
-- only containing its first line. This option only has impact for cmp and
-- blink. For virtualtext, no single line entry will be added.
add_single_line_entry = true,
-- The number of completion items encoded as part of the prompt for the
-- chat LLM. For FIM model, this is the number of requests to send. It's
-- important to note that when 'add_single_line_entry' is set to true, the
-- actual number of returned items may exceed this value. Additionally, the
-- LLM cannot guarantee the exact number of completion items specified, as
-- this parameter serves only as a prompt guideline.
n_completions = 3,
-- Defines the length of non-whitespace context after the cursor used to
-- filter completion text. Set to 0 to disable filtering.
--
-- Example: With after_cursor_filter_length = 3 and context:
--
-- "def fib(n):\n|\n\nfib(5)" (where | represents cursor position),
--
-- if the completion text contains "fib", then "fib" and subsequent text
-- will be removed. This setting filters repeated text generated by the
-- LLM. A large value (e.g., 15) is recommended to avoid false positives.
after_cursor_filter_length = 15,
-- proxy port to use
proxy = nil,
provider_options = {
openai_compatible = {
api_key = "TERM",
name = "Ollama",
end_point = "http://gpu.dighist.geschichte.hu-berlin.de:11434/api/generate",
model = "granite3.3-fim:8b",
optional = {
max_tokens = 512,
top_p = 0.9,
},
},
openai_fim_compatible = {
api_key = "TERM",
name = "Ollama",
end_point = "http://gpu.dighist.geschichte.hu-berlin.de:11434/api/generate",
model = "granite3.3-fim:8b",
stream = true,
optional = {
max_tokens = 512,
top_p = 0.9,
},
get_text_fn = {
no_stream = function(json)
return json.response
end,
stream = function(json)
return json.response
end,
},
template = {
suffix = function(context_before_cursor, context_after_cursor)
return "<fim_prefix>"
.. context_before_cursor
.. "<fim_suffix>"
.. context_after_cursor
.. "<fim_middle>"
end,
},
},
},
})
end,
},
{ "nvim-lua/plenary.nvim" },
}