llm.nvim (https://github.com/Kurama622/llm.nvim)是一个为大型语言模型(LLM)设计的通用插件,旨在使用户能够在neovim中与LLM进行交互。
您可以自定义您希望使用的任何LLM(比如智谱清言、kimi、通义千问等)。
最后,也是最重要的,您可以使用各种免费模型(无论是由Cloudflare还是其他提供者)。
让我们看一下如何在llm.nvim中使用kimi
使用自定义的LLM
-
你需要在 https://platform.moonshot.cn/console/account上面注册,获取你的API KEY
-
在zshrc或者bashrc中设置
LLM_KEY
环境变量
export LLM_KEY=<Your API_KEY>
- 按照以下步骤配置llm.nvim:
-
指定您将使用的模型:
moonshot-v1-128k
、moonshot-v1-32k
、moonshot-v1-8k
-
自定义流处理函数(用于解析模型输出)。
- lazy.nvim
local kimi_handler = function(chunk, line, output, bufnr, winid, F)
if not chunk then
return output
end
local tail = chunk:sub(-1, -1)
if tail:sub(1, 1) ~= "}" then
line = line .. chunk
else
line = line .. chunk
local start_idx = line:find("data: ", 1, true)
local end_idx = line:find("}]", 1, true)
local json_str = nil
while start_idx ~= nil and end_idx ~= nil do
if start_idx < end_idx then
json_str = line:sub(7, end_idx + 1) .. "}"
end
local data = vim.fn.json_decode(json_str)
if not data.choices[1].delta.content then
break
end
output = output .. data.choices[1].delta.content
F.WriteContent(bufnr, winid, data.choices[1].delta.content)
if end_idx + 2 > #line then
line = ""
break
else
line = line:sub(end_idx + 2)
end
start_idx = line:find("data: ", 1, true)
end_idx = line:find("}]", 1, true)
end
end
return output
end
return {
{
"Kurama622/llm.nvim",
dependencies = { "nvim-lua/plenary.nvim", "MunifTanjim/nui.nvim" },
cmd = { "LLMSesionToggle", "LLMSelectedTextHandler", "LLMAppHandler" },
config = function()
require("llm").setup({
-- kimi
url = "https://api.moonshot.cn/v1/chat/completions",
model = "moonshot-v1-128k", -- "moonshot-v1-8k", "moonshot-v1-32k", "moonshot-v1-128k"
streaming_handler = kimi_handler,
max_tokens = 4095,
temperature = 0.7,
prompt = [[]],
prefix = {
user = { text = "
标签:neovim,moonshot,end,idx,v1,kimi,llm,line,nvim
From: https://blog.csdn.net/qq_62825352/article/details/142415858