Neovim: My Setup for Developer Assistant با مدل های زبان محلی
Summarize this content to 400 words in Persian Lang من سال ها از VS Code استفاده می کنم، عالی است. فکر می کردم هرگز آن را تا پایان کارم ترک نخواهم کرد. اما همه چیز از روزی که همکارم تنظیمات عالی Neovim خود را ارائه کرد، تغییر کرد. خیلی باحال است، اما برای من سخت است، تازه واردی هستم Keyboard does everything فضا
تمام آخر هفتهام را صرف راهاندازی Neovim IDE خودم کردم. از آنجایی که بسیاری از تنظیمات قدیمی وجود دارد که نمی توانند روی دستگاه سیب زمینی من اجرا شوند، بدتر است. اما این داستان دیگری است، در این پست، من فقط چیزی را به اشتراک میگذارم که نمیتوانستم در یک IDE در این عصر هوش مصنوعی از دست بدهم: “Copilot”.
راه اندازی
گزینه های زیادی وجود دارد. در این پست، تنظیمات فعلی خود را با https://github.com/David-Kunz/gen.nvim به اشتراک خواهم گذاشت.
gen.nvim
متن را با استفاده از LLM با دستورات قابل تنظیم تولید کنید
ویدئو
نیاز دارد
اولاما با یک مدل مناسب، به عنوان مثال llama3.1، mistralو غیره
حلقه کردن
نصب کنید
اول از همه، بیایید افزونه را نصب کنیم:
مثال با تنبل
– پیکربندی حداقل
{
“David-Kunz/gen.nvim”,
opts = {
model = “mistral”, — The default model to use.
}
}
وویلا! اکنون افزونه code gen را نصب کرده اید. اکنون می توانید مدل Olama Mistral را روی دستگاه خود اجرا کنید تا ببینید چگونه کار می کند.
بلوک کدی را که می خواهید بپرسید انتخاب کنید، سپس انجام دهید :Gen.
متن را با استفاده از LLM با دستورات قابل تنظیم تولید کنید
نویسنده همچنین یک ویدیوی یوتیوب منتشر کرده است که آن را بهتر توضیح می دهد، لطفاً آن را ببینید.
بیایید یک راه اندازی پیشرفته تر انجام دهیم.
باحال است، درست است؟ اما این تنظیمات سازنده فعلی من نیست. گاهی اوقات دستگاه با مشخصات پایین من VRAM کافی برای اجرای مدل های بزرگتر ندارد، بنابراین مجبور می شوم به نقاط پایانی راه دور سوئیچ کنم.
بیایید پیکربندی افزونه را برای اتصال به نقاط پایانی دیگر مانند OpenAI سفارشی کنیم.
{
“David-Kunz/gen.nvim”,
opts = {
model = “gpt-4o”, — The default model to use.
host = “api.openai.com”,
port = “443”,
command = function(options)
local body = { model = options.model, stream = true }
return “curl –silent –no-buffer -X POST https://”
.. options.host
.. “:”
.. options.port
.. “/v1/chat/completions -d $body”
.. ” -H ‘Content-Type: application/json'”
.. ” -H ‘Authorization: Bearer sk-xxxx'” — OpenAI API Key
end,
}
}
بیایید دوباره با مدل چت کنیم و ببینیم چگونه کار می کند. این درخواست فقط برای اطمینان از این است که ما به جای اوللاما به نقطه پایانی OpenAI درخواست می دهیم.
اعلان:
نتیجه:
همه خوب!
جابجایی بین پیکربندی ها دشوار است اما …
گاهی اوقات دوست دارم مدل های جدید را امتحان کنم. آنها را می توان به صورت محلی یا فقط از راه دور اجرا کرد. چگونه می توانم بین آن گزینه ها جابجا شوم بدون اینکه دوباره و دوباره همه چیز را پیکربندی کنم؟
این همان چیزی است که شما به دنبال آن هستید. https://github.com/janhq/cortex
من این را کاندیدای بسیار خوبی برای موارد استفاده خود می دانم، زیرا از موتورهای متعدد، هم محلی و هم از راه دور پشتیبانی می کند.
حالا برای نصب، از آنجایی که با اکوسیستم JS بیشتر آشنا هستم، گزینه npm را انتخاب کردم. (معلوم شد که می توانم این بسته را در برنامه های JS خود نیز نصب کنم.)
npm install -g cortexso
بیایید سرور را اجرا کنیم! 🚀
cortex
سرور آماده است! اکنون هر مدلی را از مخزن Cortex Hugging Face بکشید. مدل های زیادی وجود دارد که بازنشر شده اند و همچنین ارائه دهندگان راه دور که می خواهید آنها را امتحان کنید.
cortex pull llama3.1
cortex pull gpt-4o
همچنین می توانید هر یک از مدل های HuggingFace مورد علاقه خود را بکشید. به عنوان مثال cortex pull google/gemma-7b-GGUF.
وویلا، الان دو مدل کشیده ام.
اما، آیا مدلهای OpenAI برای اجرا با کلید API لازم نیست؟ در اینجا نحوه تنظیم آن آمده است.
cortex engines openai set apiKey sk-your_api_key_here
چیزی را فراموش کردی، نه؟ ما باید مدل ها را به همان روشی که اولاما انجام می دهد اجرا کنیم.
cortex run llama3.1
فقط مدلهای محلی به این مرحله اجرا نیاز دارند.
زمان بهروزرسانی پیکربندیهای gen.nvim است
{
“David-Kunz/gen.nvim”,
opts = {
model = “gpt-4o”, — The default model to use.
host = “localhost”, — The cortex server host address.
port = “1337”, — The cortex server port number.
command = function(options)
local body = { model = options.model, stream = true }
return “curl –silent –no-buffer -X POST http://”
.. options.host
.. “:”
.. options.port
.. “/v1/chat/completions -d $body”
.. ” -H ‘Content-Type: application/json'”
end,
}
}
بیا با دوست جدیدمون چت کنیم 😉
دست نگه دارید، چگونه بین مدل ها جابجا شوید؟ 🤔
چگونه بین مدل های موتورهای مختلف نصب شده جابجا می شوید؟
gen.nvim از یک تابع انتخاب مدل برای جابجایی بین مدل ها پشتیبانی می کند. بیایید یک کلید برای آن ترسیم کنیم.
map(“n”, “<A-i>”, function()
require(“gen”).select_model()
end, { desc = “Select gen.nvim model” })
اما هنوز کار نمی کند، زیرا به طور پیش فرض از اوللاما درخواست می کند. وای ما آن را سفارشی می کنیم تا مدل ها را از سرور Cortex واکشی کنیم.
{
“David-Kunz/gen.nvim”,
opts = {
model = “llama3.1”,
host = “localhost”,
port = “1337”,
debug = false,
command = function(options)
local body = { model = options.model, stream = true }
return “curl –silent –no-buffer -X POST http://”
.. options.host
.. “:”
.. options.port
.. “/v1/chat/completions -d $body”
.. ” -H ‘Content-Type: application/json'”
end,
list_models = function(options)
local response =
vim.fn.systemlist(“curl –silent –no-buffer http://” .. options.host .. “:” .. options.port .. “/v1/models”)
local list = vim.fn.json_decode(response)
local models = {}
for key, _ in pairs(list.data) do
table.insert(models, list.data[key].name)
end
table.sort(models)
return models
end,
}
}
بیایید تلاش کنیم Alt + I
🤘🤘🤘 باحاله، درسته؟ جابجایی یکپارچه بین مدل ها، از مدل های محلی به مدل های راه دور و بین ارائه دهندگان مختلف.
نتیجه گیری
این راهاندازی به شما امکان میدهد از مدلهای هوش مصنوعی محلی و مبتنی بر ابر استفاده کنید و گردش کار کدنویسی خود را با کمک هوشمند افزایش دهید.
همانطور که با این تنظیمات راحت تر می شوید، این موارد را در نظر بگیرید:
ایجاد درخواست های سفارشی برای نیازهای توسعه خاص شما
بررسی مدل های مختلف برای یافتن بهترین مناسب برای کارهای مختلف
همه پروژههای مرتبط منبع باز هستند، لطفاً فراموش نکنید که یک ستاره بگذارید و کمک کنید. لطفاً مدلهای مختلف را امتحان کنید، اعلانهای سفارشی ایجاد کنید، و پیکربندی را با گردش کار منحصربهفرد خود تطبیق دهید. کد نویسی مبارک!
من سال ها از VS Code استفاده می کنم، عالی است. فکر می کردم هرگز آن را تا پایان کارم ترک نخواهم کرد. اما همه چیز از روزی که همکارم تنظیمات عالی Neovim خود را ارائه کرد، تغییر کرد. خیلی باحال است، اما برای من سخت است، تازه واردی هستم Keyboard does everything
فضا
تمام آخر هفتهام را صرف راهاندازی Neovim IDE خودم کردم. از آنجایی که بسیاری از تنظیمات قدیمی وجود دارد که نمی توانند روی دستگاه سیب زمینی من اجرا شوند، بدتر است. اما این داستان دیگری است، در این پست، من فقط چیزی را به اشتراک میگذارم که نمیتوانستم در یک IDE در این عصر هوش مصنوعی از دست بدهم: “Copilot”.
راه اندازی
گزینه های زیادی وجود دارد. در این پست، تنظیمات فعلی خود را با https://github.com/David-Kunz/gen.nvim به اشتراک خواهم گذاشت.
gen.nvim
متن را با استفاده از LLM با دستورات قابل تنظیم تولید کنید
ویدئو
نیاز دارد
اولاما با یک مدل مناسب، به عنوان مثال
llama3.1
،mistral
و غیره- حلقه کردن
نصب کنید
اول از همه، بیایید افزونه را نصب کنیم:
مثال با تنبل
– پیکربندی حداقل
{
"David-Kunz/gen.nvim",
opts = {
model = "mistral", -- The default model to use.
}
}
وویلا! اکنون افزونه code gen را نصب کرده اید. اکنون می توانید مدل Olama Mistral را روی دستگاه خود اجرا کنید تا ببینید چگونه کار می کند.
بلوک کدی را که می خواهید بپرسید انتخاب کنید، سپس انجام دهید :Gen
.
متن را با استفاده از LLM با دستورات قابل تنظیم تولید کنید
نویسنده همچنین یک ویدیوی یوتیوب منتشر کرده است که آن را بهتر توضیح می دهد، لطفاً آن را ببینید.
بیایید یک راه اندازی پیشرفته تر انجام دهیم.
باحال است، درست است؟ اما این تنظیمات سازنده فعلی من نیست. گاهی اوقات دستگاه با مشخصات پایین من VRAM کافی برای اجرای مدل های بزرگتر ندارد، بنابراین مجبور می شوم به نقاط پایانی راه دور سوئیچ کنم.
بیایید پیکربندی افزونه را برای اتصال به نقاط پایانی دیگر مانند OpenAI سفارشی کنیم.
{
"David-Kunz/gen.nvim",
opts = {
model = "gpt-4o", -- The default model to use.
host = "api.openai.com",
port = "443",
command = function(options)
local body = { model = options.model, stream = true }
return "curl --silent --no-buffer -X POST https://"
.. options.host
.. ":"
.. options.port
.. "/v1/chat/completions -d $body"
.. " -H 'Content-Type: application/json'"
.. " -H 'Authorization: Bearer sk-xxxx'" -- OpenAI API Key
end,
}
}
بیایید دوباره با مدل چت کنیم و ببینیم چگونه کار می کند. این درخواست فقط برای اطمینان از این است که ما به جای اوللاما به نقطه پایانی OpenAI درخواست می دهیم.
اعلان:
نتیجه:
همه خوب!
جابجایی بین پیکربندی ها دشوار است اما …
گاهی اوقات دوست دارم مدل های جدید را امتحان کنم. آنها را می توان به صورت محلی یا فقط از راه دور اجرا کرد. چگونه می توانم بین آن گزینه ها جابجا شوم بدون اینکه دوباره و دوباره همه چیز را پیکربندی کنم؟
این همان چیزی است که شما به دنبال آن هستید. https://github.com/janhq/cortex
من این را کاندیدای بسیار خوبی برای موارد استفاده خود می دانم، زیرا از موتورهای متعدد، هم محلی و هم از راه دور پشتیبانی می کند.
حالا برای نصب، از آنجایی که با اکوسیستم JS بیشتر آشنا هستم، گزینه npm را انتخاب کردم. (معلوم شد که می توانم این بسته را در برنامه های JS خود نیز نصب کنم.)
npm install -g cortexso
بیایید سرور را اجرا کنیم! 🚀
cortex
سرور آماده است! اکنون هر مدلی را از مخزن Cortex Hugging Face بکشید. مدل های زیادی وجود دارد که بازنشر شده اند و همچنین ارائه دهندگان راه دور که می خواهید آنها را امتحان کنید.
cortex pull llama3.1
cortex pull gpt-4o
همچنین می توانید هر یک از مدل های HuggingFace مورد علاقه خود را بکشید. به عنوان مثال
cortex pull google/gemma-7b-GGUF
.
وویلا، الان دو مدل کشیده ام.
اما، آیا مدلهای OpenAI برای اجرا با کلید API لازم نیست؟ در اینجا نحوه تنظیم آن آمده است.
cortex engines openai set apiKey sk-your_api_key_here
چیزی را فراموش کردی، نه؟ ما باید مدل ها را به همان روشی که اولاما انجام می دهد اجرا کنیم.
cortex run llama3.1
فقط مدلهای محلی به این مرحله اجرا نیاز دارند.
زمان بهروزرسانی پیکربندیهای gen.nvim است
{
"David-Kunz/gen.nvim",
opts = {
model = "gpt-4o", -- The default model to use.
host = "localhost", -- The cortex server host address.
port = "1337", -- The cortex server port number.
command = function(options)
local body = { model = options.model, stream = true }
return "curl --silent --no-buffer -X POST http://"
.. options.host
.. ":"
.. options.port
.. "/v1/chat/completions -d $body"
.. " -H 'Content-Type: application/json'"
end,
}
}
بیا با دوست جدیدمون چت کنیم 😉
دست نگه دارید، چگونه بین مدل ها جابجا شوید؟ 🤔
چگونه بین مدل های موتورهای مختلف نصب شده جابجا می شوید؟
gen.nvim از یک تابع انتخاب مدل برای جابجایی بین مدل ها پشتیبانی می کند. بیایید یک کلید برای آن ترسیم کنیم.
map("n", "<A-i>", function()
require("gen").select_model()
end, { desc = "Select gen.nvim model" })
اما هنوز کار نمی کند، زیرا به طور پیش فرض از اوللاما درخواست می کند. وای ما آن را سفارشی می کنیم تا مدل ها را از سرور Cortex واکشی کنیم.
{
"David-Kunz/gen.nvim",
opts = {
model = "llama3.1",
host = "localhost",
port = "1337",
debug = false,
command = function(options)
local body = { model = options.model, stream = true }
return "curl --silent --no-buffer -X POST http://"
.. options.host
.. ":"
.. options.port
.. "/v1/chat/completions -d $body"
.. " -H 'Content-Type: application/json'"
end,
list_models = function(options)
local response =
vim.fn.systemlist("curl --silent --no-buffer http://" .. options.host .. ":" .. options.port .. "/v1/models")
local list = vim.fn.json_decode(response)
local models = {}
for key, _ in pairs(list.data) do
table.insert(models, list.data[key].name)
end
table.sort(models)
return models
end,
}
}
بیایید تلاش کنیم Alt + I
🤘🤘🤘 باحاله، درسته؟ جابجایی یکپارچه بین مدل ها، از مدل های محلی به مدل های راه دور و بین ارائه دهندگان مختلف.
نتیجه گیری
این راهاندازی به شما امکان میدهد از مدلهای هوش مصنوعی محلی و مبتنی بر ابر استفاده کنید و گردش کار کدنویسی خود را با کمک هوشمند افزایش دهید.
همانطور که با این تنظیمات راحت تر می شوید، این موارد را در نظر بگیرید:
- ایجاد درخواست های سفارشی برای نیازهای توسعه خاص شما
- بررسی مدل های مختلف برای یافتن بهترین مناسب برای کارهای مختلف
- همه پروژههای مرتبط منبع باز هستند، لطفاً فراموش نکنید که یک ستاره بگذارید و کمک کنید. لطفاً مدلهای مختلف را امتحان کنید، اعلانهای سفارشی ایجاد کنید، و پیکربندی را با گردش کار منحصربهفرد خود تطبیق دهید. کد نویسی مبارک!