Если вы не указаете поставщика, ollama будет поставщиком по умолчанию. http://localhost:11434 - ваша конечная точка. mistral:7b будет вашим по умолчанию, если конфигурация не будет обновлена.
-- Simple, minimal Lazy.nvim configuration
{
" huynle/ogpt.nvim " ,
event = " VeryLazy " ,
opts = {
default_provider = " ollama " ,
providers = {
ollama = {
api_host = os.getenv ( " OLLAMA_API_HOST " ) or " http://localhost:11434 " ,
api_key = os.getenv ( " OLLAMA_API_KEY " ) or " " ,
}
}
},
dependencies = {
" MunifTanjim/nui.nvim " ,
" nvim-lua/plenary.nvim " ,
" nvim-telescope/telescope.nvim "
}
} OGPT.nvim поставляется со следующими значениями по умолчанию. Вы можете переопределить любое из полей, передавая конфигурацию в качестве параметров настройки.
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua
OGPT - это плагин NEOVIM, который позволяет вам легко использовать API Ollama OGPT, позволяя вам генерировать ответы на естественном языке от Ollama непосредственно в редакторе в ответ на ваши подсказки.
curl . Пользовательский хост API OLLAMA с опцией конфигурации api_host_cmd или переменной среды под названием $OLLAMA_API_HOST . Это полезно, если вы управляете Ollama удаленно.

edgy.nvim Plugin предлагает боковое окно (по умолчанию, расположенное по умолчанию), которое обеспечивает параллельное рабочее пространство, где вы можете работать над своим проектом, взаимодействуя с OGPT. Вот пример «острой» конфигурации.
{
{
" huynle/ogpt.nvim " ,
event = " VeryLazy " ,
opts = {
default_provider = " ollama " ,
edgy = true , -- enable this!
single_window = false , -- set this to true if you want only one OGPT window to appear at a time
providers = {
ollama = {
api_host = os.getenv ( " OLLAMA_API_HOST " ) or " http://localhost:11434 " ,
api_key = os.getenv ( " OLLAMA_API_KEY " ) or " " ,
}
}
},
dependencies = {
" MunifTanjim/nui.nvim " ,
" nvim-lua/plenary.nvim " ,
" nvim-telescope/telescope.nvim "
}
},
{
" folke/edgy.nvim " ,
event = " VeryLazy " ,
init = function ()
vim . opt . laststatus = 3
vim . opt . splitkeep = " screen " -- or "topline" or "screen"
end ,
opts = {
exit_when_last = false ,
animate = {
enabled = false ,
},
wo = {
winbar = true ,
winfixwidth = true ,
winfixheight = false ,
winhighlight = " WinBar:EdgyWinBar,Normal:EdgyNormal " ,
spell = false ,
signcolumn = " no " ,
},
keys = {
-- -- close window
[ " q " ] = function ( win )
win : close ()
end ,
-- close sidebar
[ " Q " ] = function ( win )
win . view . edgebar : close ()
end ,
-- increase width
[ " <S-Right> " ] = function ( win )
win : resize ( " width " , 3 )
end ,
-- decrease width
[ " <S-Left> " ] = function ( win )
win : resize ( " width " , - 3 )
end ,
-- increase height
[ " <S-Up> " ] = function ( win )
win : resize ( " height " , 3 )
end ,
-- decrease height
[ " <S-Down> " ] = function ( win )
win : resize ( " height " , - 3 )
end ,
},
right = {
{
title = " OGPT Popup " ,
ft = " ogpt-popup " ,
size = { width = 0.2 },
wo = {
wrap = true ,
},
},
{
title = " OGPT Parameters " ,
ft = " ogpt-parameters-window " ,
size = { height = 6 },
wo = {
wrap = true ,
},
},
{
title = " OGPT Template " ,
ft = " ogpt-template " ,
size = { height = 6 },
},
{
title = " OGPT Sessions " ,
ft = " ogpt-sessions " ,
size = { height = 6 },
wo = {
wrap = true ,
},
},
{
title = " OGPT System Input " ,
ft = " ogpt-system-window " ,
size = { height = 6 },
},
{
title = " OGPT " ,
ft = " ogpt-window " ,
size = { height = 0.5 },
wo = {
wrap = true ,
},
},
{
title = " OGPT {{{selection}}} " ,
ft = " ogpt-selection " ,
size = { width = 80 , height = 4 },
wo = {
wrap = true ,
},
},
{
title = " OGPt {{{instruction}}} " ,
ft = " ogpt-instruction " ,
size = { width = 80 , height = 4 },
wo = {
wrap = true ,
},
},
{
title = " OGPT Chat " ,
ft = " ogpt-input " ,
size = { width = 80 , height = 4 },
wo = {
wrap = true ,
},
},
},
},
}
}Плагин разоблачает следующие команды:
OGPT Команда OGPT открывает интерактивное окно для связи с Backends LLM. Интерактивное окно состоит из четырех панелей:
| Область | Ярлыки по умолчанию | Описание |
|---|---|---|
| Общий | Ctrl-O | Панель параметров переключения (параметры OGPT) и панель сеансов (сеансы OGPT). |
| Ctrl-N | Создайте новый сеанс. | |
| Ctrl-c | Закрыть OGPT. | |
| Ctrl-i | Скопируйте код в последнем ответе LLM в области вывода OGPT. | |
| Ctrl-X | Прекратите генерировать ответ. | |
| Вкладка | Цикл через панели. | |
| Огпт | K | Предыдущий ответ. |
| Дж | Следующий ответ. | |
| Ctrl-u | Прокрутите вверх. | |
| Ctrl-D | Прокрутите вниз. | |
| Ogpt чат | Входить (нормальный режим) | Отправить подсказку в LLM. |
| Альт-интерс (режим ввода) | Отправить подсказку в LLM. | |
| Ctrl-y | Скопируйте последний ответ от LLM в области вывода OGPT. | |
| Ctrl-R | Роль переключения (помощник или пользователь). | |
| Ctrl-S | Сообщение о переключении системы. | |
| Параметры OGPT | Входить | Изменить параметр. |
| Сессии OGPT | Входить | Переключить сеанс. |
| дюймовый | Удалить сеанс. | |
| ведущий | Переименовать сеанс. Обратите внимание, что активный сеанс не может быть удален. |
Ярлыки для интерактивного окна OGPT могут быть изменены по адресу opts.chat.keymaps .
OGPTActAs Команда OGPTActAs , которая открывает быстрый выбор из удивительных подсказок OGPT, которые будут использоваться с моделью mistral:7b .
OGPTRun [action_name] OGPTRun [action_name] запускает LLM с предопределенным действием с именем [action_name] . Существуют действия по умолчанию, предоставляемые OGPT, и пользовательские действия, определяемые пользователями.
Действие требует параметров для настройки его поведения. Параметры модели по умолчанию определяются в actions.<action_name> в config.lua, а пользовательские параметры модели определяются либо в пользовательском файле конфигурации OGPT, либо в отдельном файле конфигурации действий, такого как actions.json .
Некоторые из параметров действия включают в себя:
type : тип интерфейса OGPT. В настоящее время существует три типа интерфейса OGPT:popup : световесное всплывающее окноedit : окно OGPTcompletions : не открывает окно, завершается непосредственно в окне редактированияstrategy : определяет способ ведения интерфейса OGPT. Существуют конкретные strategy , которые вы можете использовать для каждого type :type = "popup" : отображать, заменить, добавлять, приготовление, Quick_fixtype = "completions" : отображать, заменить, добавлять, приготовлениеtype = "edits" : edit, edit_codesystem : Системная подсказкаparams : параметры модели. Параметры модели по умолчанию определены в opts.providers.<provider_name>.api_params Вы можете настроить параметры модели в opts.actions.<action_name>.paramsmodel : модель LLM для использования для действияstop : условие для LLM, чтобы прекратить генерировать ответ. Например, полезное условие остановки для codellama - «` `` ». См. Действие "Optimize_code" в примере lazy.nvim Configuration.temperature : изменчивость ответа LLMfrequency_penalty : кто -нибудь объясните, пожалуйстаmax_tokens : максимальное количество токеновtop_p : кто -нибудь объясните, пожалуйстаtemplate : Шаблон приглашения. Шаблон определяет общую инструкцию, которой LLM должен следовать. Шаблон может включать аргумент шаблона в форме {{{<argument_name>}}} , где <argument_name> - аргумент шаблона, определенный в args . Кроме аргументов, определенных в args , вы можете включить следующие аргументы:{{{input}}} : выбранный текст в визуальном режиме.{{{filetype}}} : тип файла, с которым вы взаимодействуете.args : Аргумент шаблона. Аргументы шаблона определяют аргументы, которые заменяют аргументы на то же имя в template . Некоторые общие аргументы шаблона включают:instruction : Пользовательская инструкция для LLM, чтобы следовать. Он имеет тенденцию быть более конкретным и структурированным, чем общая инструкция, которая входит в template .lang : Язык. Часто используется для действий, связанных с языком, таких как перевод или проверка грамматики. Действия по умолчанию определены в actions.<action_name> в config.lua.
OGPTRun edit_with_instructions OGPTRun edit_with_instructions открывает интерактивное окно для редактирования выбранного текста или всего окна, используя модель, определенную в config.<provider_name>.api_params .
По умолчанию тип интерфейса OGPTRun edit_with_instructions - это edit , которое открывает интерактивное окно вправо. В окне вы можете использовать <co> (по умолчанию Keymap, можно настроить) для открытия и закрытия параметров. Обратите внимание, что этот скриншот использует edgy.nvim


Вы можете настроить действия OGPT, определив их в пользовательских файлах конфигурации OGPT или в отдельном файле действия. Конфигурации модели по умолчанию в config.lua могут быть хорошими ссылками при создании собственных собственных действий.
Вы можете настроить действия в своем собственном файле конфигурации OGPT (обычно в файле LUA, как ogpt.lua , если использование neovim). В пользовательском файле конфигурации OGPT вы должны определить действия в actions.<action_name> как определение действий по умолчанию в config.lua.
--- config options lua
opts = {
...
actions = {
grammar_correction = {
-- type = "popup", -- could be a string or table to override
type = {
popup = { -- overrides the default popup options - https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#L147-L180
edgy = true
}
},
strategy = " replace " ,
provider = " ollama " , -- default to "default_provider" if not provided
model = " mixtral:7b " , -- default to "provider.<default_provider>.model" if not provided
template = " Correct the given text to standard {{{lang}}}: nn ```{{{input}}}``` " ,
system = " You are a helpful note writing assistant, given a text input, correct the text only for grammar and spelling error. You are to keep all formatting the same, e.g. markdown bullets, should stay as a markdown bullet in the result, and indents should stay the same. Return ONLY the corrected text. " ,
params = {
temperature = 0.3 ,
},
args = {
lang = {
type = " string " ,
optional = " true " ,
default = " english " ,
},
},
},
...
}
} Тип edit состоит в том, чтобы отображать выходной бок о бок с входом и доступен для дальнейшего редактирования.
Стратегия display показывает выход в окне с плавающей точкой. append и replace изменение текста непосредственно в буфере с помощью "A" или "r"
Можно определить пользовательские действия, используя файл JSON. Пожалуйста, смотрите пример на actions.json для справки.
Пример пользовательского действия может выглядеть как следующее: ( # отмечает комментарии)
{
"action_name" : {
"type" : " popup " , # "popup" or "edit"
"template" : " A template using possible variable: {{{filetype}}} (neovim filetype), {{{input}}} (the selected text) an {{{argument}}} (provided on the command line) " ,
"strategy" : " replace " , # or "display" or "append" or "edit"
"params" : { # parameters according to the official Ollama API
"model" : " mistral:7b " , # or any other model supported by `"type"` in the Ollama API, use the playground for reference
"stop" : [
" ``` " # a string used to stop the model
]
}
"args" : {
"argument" : " some value " -- or function
}
}
} Если вы хотите использовать другие файлы действий, вы должны добавить пути к этим файлам к defaults.actions_paths в config.lua.
На лету вы можете выполнить командную строку для вызова OGPT. Пример для замены вызова Grammar_correction, приведен ниже. :OGPTRun grammar_correction {provider="openai", model="gpt-4"}
Чтобы сделать его еще более динамичным, вы можете изменить его, чтобы поставщик/модель или любые параметры были введены пользователем на месте при выполнении команды. :OGPTRun grammar_correction {provider=vim.fn.input("Provider: "), type={popup={edgy=false}}}}
Кроме того, в приведенном выше примере edgy.nvim может быть отключен. Так что реакция всплывает в строке, где будет курсор. Для получения дополнительных вариантов всплывающего окна, пожалуйста, прочитайте https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l147-l180
Например, у вас есть всплывающее окно и изменение enter = false , что оставляет курсор в том же месте, а не перемещать его в всплывающее окно.
Кроме того, для продвинутых пользователей это позволяет вам использовать автокомманды VIM. Например, автозаполнение может произойти, когда курсор приостановлен. Посмотрите на различных помощников шаблонов для этих расширенных вариантов, потому что сейчас
В настоящее время заданные входы в API сканируются для {{{<template_helper_name>}}} для расширения. Это полезно, когда вы хотите дать немного больше контекста для ваших запросов API или просто подключить дополнительные функциональные вызовы.
Посмотрите на этот файл для самых современных помощников шаблона. Если у вас есть больше помощников шаблонов, пожалуйста, сделайте MR, ваш вклад ценится!
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/flows/actions/template_helpers.lua
Это пользовательское действие, которое я использую все время для использования видимых окон в качестве контекста, чтобы ИИ отвечал на любые встроенные вопросы.
....
-- Other OGPT configurations here
....
actions = {
infill_visible_code = {
type = " popup " ,
template = [[
Given the following code snippets, please complete the code by infilling the rest of the code in between the two
code snippets for BEFORE and AFTER, these snippets are given below.
Code BEFORE infilling position:
```{{{filetype}}}
{{{visible_window_content}}}
{{{before_cursor}}}
```
Code AFTER infilling position:
```{{{filetype}}}
{{{after_cursor}}}
```
Within the given snippets, complete the instructions that are given in between the
triple percent sign '%%%-' and '-%%%'. Note that the instructions as
could be multilines AND/OR it could be in a comment block of the code!!!
Lastly, apply the following conditions to your response.
* The response should replace the '%%%-' and '-%%%' if the code snippet was to be reused.
* PLEASE respond ONLY with the answers to the given instructions.
]] ,
strategy = " display " ,
-- provider = "textgenui",
-- model = "mixtral-8-7b",
-- params = {
-- max_new_tokens = 1000,
-- },
},
-- more actions here
}
.... Измените модель, открыв панели параметров по умолчанию на (Ctrl-O) или ваш путь к ней, затем нажмите enter () в поле модели, чтобы изменить ее. Он должен перечислить все доступные модели от вашего поставщика LLM. 
На панели параметров добавьте и удаляйте параметры с помощью ключей «a» и «d» соответственно 
При использовании OGPT следующие связки клавиш доступны в config.chat.keymaps
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l51-l71
edit и edit_codehttps://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l18-l28
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l174-L181
Когда панели параметров открыты (с <Co> ), настройки могут быть изменены, нажимая Enter на соответствующей конфигурации. Настройки сохраняются в разных сессиях.
lazy.nvim Configuration return {
{
" huynle/ogpt.nvim " ,
dev = true ,
event = " VeryLazy " ,
keys = {
{
" <leader>]] " ,
" <cmd>OGPTFocus<CR> " ,
desc = " GPT " ,
},
{
" <leader>] " ,
" :'<,'>OGPTRun<CR> " ,
desc = " GPT " ,
mode = { " n " , " v " },
},
{
" <leader>]c " ,
" <cmd>OGPTRun edit_code_with_instructions<CR> " ,
" Edit code with instruction " ,
mode = { " n " , " v " },
},
{
" <leader>]e " ,
" <cmd>OGPTRun edit_with_instructions<CR> " ,
" Edit with instruction " ,
mode = { " n " , " v " },
},
{
" <leader>]g " ,
" <cmd>OGPTRun grammar_correction<CR> " ,
" Grammar Correction " ,
mode = { " n " , " v " },
},
{
" <leader>]r " ,
" <cmd>OGPTRun evaluate<CR> " ,
" Evaluate " ,
mode = { " n " , " v " },
},
{
" <leader>]i " ,
" <cmd>OGPTRun get_info<CR> " ,
" Get Info " ,
mode = { " n " , " v " },
},
{ " <leader>]t " , " <cmd>OGPTRun translate<CR> " , " Translate " , mode = { " n " , " v " } },
{ " <leader>]k " , " <cmd>OGPTRun keywords<CR> " , " Keywords " , mode = { " n " , " v " } },
{ " <leader>]d " , " <cmd>OGPTRun docstring<CR> " , " Docstring " , mode = { " n " , " v " } },
{ " <leader>]a " , " <cmd>OGPTRun add_tests<CR> " , " Add Tests " , mode = { " n " , " v " } },
{ " <leader>]<leader> " , " <cmd>OGPTRun custom_input<CR> " , " Custom Input " , mode = { " n " , " v " } },
{ " g? " , " <cmd>OGPTRun quick_question<CR> " , " Quick Question " , mode = { " n " } },
{ " <leader>]f " , " <cmd>OGPTRun fix_bugs<CR> " , " Fix Bugs " , mode = { " n " , " v " } },
{
" <leader>]x " ,
" <cmd>OGPTRun explain_code<CR> " ,
" Explain Code " ,
mode = { " n " , " v " },
},
},
opts = {
default_provider = " ollama " ,
-- default edgy flag
-- set this to true if you prefer to use edgy.nvim (https://github.com/folke/edgy.nvim) instead of floating windows
edgy = false ,
providers = {
ollama = {
api_host = os.getenv ( " OLLAMA_API_HOST " ),
-- default model
model = " mistral:7b " ,
-- model definitions
models = {
-- alias to actual model name, helpful to define same model name across multiple providers
coder = " deepseek-coder:6.7b " ,
-- nested alias
cool_coder = " coder " ,
general_model = " mistral:7b " ,
custom_coder = {
name = " deepseek-coder:6.7b " ,
modify_url = function ( url )
-- completely modify the URL of a model, if necessary. This function is called
-- right before making the REST request
return url
end ,
-- custom conform function. Each provider have a dedicated conform function where all
-- of OGPT chat info is passed into the conform function to be massaged to the
-- correct format that the provider is expecting. This function, if provided will
-- override the provider default conform function
-- conform_fn = function(ogpt_params)
-- return provider_specific_params
-- end,
},
},
-- default model params for all 'actions'
api_params = {
model = " mistral:7b " ,
temperature = 0.8 ,
top_p = 0.9 ,
},
api_chat_params = {
model = " mistral:7b " ,
frequency_penalty = 0 ,
presence_penalty = 0 ,
temperature = 0.5 ,
top_p = 0.9 ,
},
},
openai = {
api_host = os.getenv ( " OPENAI_API_HOST " ),
api_key = os.getenv ( " OPENAI_API_KEY " ),
api_params = {
model = " gpt-4 " ,
temperature = 0.8 ,
top_p = 0.9 ,
},
api_chat_params = {
model = " gpt-4 " ,
frequency_penalty = 0 ,
presence_penalty = 0 ,
temperature = 0.5 ,
top_p = 0.9 ,
},
},
textgenui = {
api_host = os.getenv ( " TEXTGEN_API_HOST " ),
api_key = os.getenv ( " TEXTGEN_API_KEY " ),
api_params = {
model = " mixtral-8-7b " ,
temperature = 0.8 ,
top_p = 0.9 ,
},
api_chat_params = {
model = " mixtral-8-7b " ,
frequency_penalty = 0 ,
presence_penalty = 0 ,
temperature = 0.5 ,
top_p = 0.9 ,
},
},
},
yank_register = " + " ,
edit = {
edgy = nil , -- use global default, override if defined
diff = false ,
keymaps = {
close = " <C-c> " ,
accept = " <M-CR> " ,
toggle_diff = " <C-d> " ,
toggle_parameters = " <C-o> " ,
cycle_windows = " <Tab> " ,
use_output_as_input = " <C-u> " ,
},
},
popup = {
edgy = nil , -- use global default, override if defined
position = 1 ,
size = {
width = " 40% " ,
height = 10 ,
},
padding = { 1 , 1 , 1 , 1 },
enter = true ,
focusable = true ,
zindex = 50 ,
border = {
style = " rounded " ,
},
buf_options = {
modifiable = false ,
readonly = false ,
filetype = " ogpt-popup " ,
syntax = " markdown " ,
},
win_options = {
wrap = true ,
linebreak = true ,
winhighlight = " Normal:Normal,FloatBorder:FloatBorder " ,
},
keymaps = {
close = { " <C-c> " , " q " },
accept = " <C-CR> " ,
append = " a " ,
prepend = " p " ,
yank_code = " c " ,
yank_to_register = " y " ,
},
},
chat = {
edgy = nil , -- use global default, override if defined
welcome_message = WELCOME_MESSAGE ,
loading_text = " Loading, please wait ... " ,
question_sign = " " , -- ?
answer_sign = " ﮧ " , -- ?
border_left_sign = " | " ,
border_right_sign = " | " ,
max_line_length = 120 ,
sessions_window = {
active_sign = " ? " ,
inactive_sign = " ? " ,
current_line_sign = " " ,
border = {
style = " rounded " ,
text = {
top = " Sessions " ,
},
},
win_options = {
winhighlight = " Normal:Normal,FloatBorder:FloatBorder " ,
},
},
keymaps = {
close = { " <C-c> " },
yank_last = " <C-y> " ,
yank_last_code = " <C-i> " ,
scroll_up = " <C-u> " ,
scroll_down = " <C-d> " ,
new_session = " <C-n> " ,
cycle_windows = " <Tab> " ,
cycle_modes = " <C-f> " ,
next_message = " J " ,
prev_message = " K " ,
select_session = " <CR> " ,
rename_session = " r " ,
delete_session = " d " ,
draft_message = " <C-d> " ,
edit_message = " e " ,
delete_message = " d " ,
toggle_parameters = " <C-o> " ,
toggle_message_role = " <C-r> " ,
toggle_system_role_open = " <C-s> " ,
stop_generating = " <C-x> " ,
},
},
-- {{{input}}} is always available as the selected/highlighted text
actions = {
grammar_correction = {
type = " popup " ,
template = " Correct the given text to standard {{{lang}}}: nn ```{{{input}}}``` " ,
system = " You are a helpful note writing assistant, given a text input, correct the text only for grammar and spelling error. You are to keep all formatting the same, e.g. markdown bullets, should stay as a markdown bullet in the result, and indents should stay the same. Return ONLY the corrected text. " ,
strategy = " replace " ,
params = {
temperature = 0.3 ,
},
args = {
lang = {
type = " string " ,
optional = " true " ,
default = " english " ,
},
},
},
translate = {
type = " popup " ,
template = " Translate this into {{{lang}}}: nn {{{input}}} " ,
strategy = " display " ,
params = {
temperature = 0.3 ,
},
args = {
lang = {
type = " string " ,
optional = " true " ,
default = " vietnamese " ,
},
},
},
keywords = {
type = " popup " ,
template = " Extract the main keywords from the following text to be used as document tags. nn ```{{{input}}}``` " ,
strategy = " display " ,
params = {
model = " general_model " , -- use of model alias, generally, this model alias should be available to all providers in use
temperature = 0.5 ,
frequency_penalty = 0.8 ,
},
},
do_complete_code = {
type = " popup " ,
template = " Code: n ```{{{filetype}}} n {{{input}}} n ``` nn Completed Code: n ```{{{filetype}}} " ,
strategy = " display " ,
params = {
model = " coder " ,
stop = {
" ``` " ,
},
},
},
quick_question = {
type = " popup " ,
args = {
-- template expansion
question = {
type = " string " ,
optional = " true " ,
default = function ()
return vim . fn . input ( " question: " )
end ,
},
},
system = " You are a helpful assistant " ,
template = " {{{question}}} " ,
strategy = " display " ,
},
custom_input = {
type = " popup " ,
args = {
instruction = {
type = " string " ,
optional = " true " ,
default = function ()
return vim . fn . input ( " instruction: " )
end ,
},
},
system = " You are a helpful assistant " ,
template = " Given the follow snippet, {{{instruction}}}. nn snippet: n ```{{{filetype}}} n {{{input}}} n ``` " ,
strategy = " display " ,
},
optimize_code = {
type = " popup " ,
system = " You are a helpful coding assistant. Complete the given prompt. " ,
template = " Optimize the code below, following these instructions: nn {{{instruction}}}. nn Code: n ```{{{filetype}}} n {{{input}}} n ``` nn Optimized version: n ```{{{filetype}}} " ,
strategy = " edit_code " ,
params = {
model = " coder " ,
stop = {
" ``` " ,
},
},
},
},
},
dependencies = {
" MunifTanjim/nui.nvim " ,
" nvim-lua/plenary.nvim " ,
" nvim-telescope/telescope.nvim " ,
},
},
} Когда вы часто обновляете свои действия, я бы порекомендовал добавить следующие ключи в вашу конфигурацию lazy.nvim ogpt . Это просто перезагружает ogpt.nvim на месте, чтобы вы увидели ваши обновленные действия.
...
-- other config options here
keys = {
{
" <leader>ro " ,
" <Cmd>Lazy reload ogpt.nvim<CR> " ,
desc = " RELOAD ogpt " ,
},
...
}
-- other config options here
... Это пример того, как настроить сервер миктральных моделей Ollama, который может сидеть на другом сервере. Примечание в примере ниже вы можете:
secret_model -это псевдоним для mixtral-8-7b , поэтому в своих actions вы можете использовать secret_model . Это полезно, когда у вас есть несколько поставщиков, которые имеют одинаковую силу, что и микстральные, и вы хотите поменять различных поставщиков на использование, основываясь на среде разработки или по другим причинам.mixtral-8-7b в этом примере, эта модель будет отображаться в ваших параметрах моделей в вашем chat и edit действия.conform_message_fn используется для переопределения функции поставщика по умолчанию conform_message . Эта функция позволяет массировать параметры запроса API для соответствия конкретной модели. Это действительно полезно, когда вам нужно изменить сообщения, чтобы соответствовать модели обученного шаблона.conform_request_fn используется для переопределения функции поставщика по умолчанию conform_request . Эта функция (или функция по умолчанию провайдера) вызывается в самом конце, прямо перед тем, как сделать вызов API. Окончательный массаж можно сделать здесь. -- advanced model, can take the following structure
providers = {
ollama = {
model = " secret_model " , -- default model for ollama
models = {
...
secret_model = " mixtral-8-7b " ,
[ " mixtral-8-7b " ] = {
params = {
-- the parameters here are FORCED into the final API REQUEST, OVERRIDDING
-- anything that was set before
max_new_token = 200 ,
},
modify_url = function ( url )
-- given a URL, this function modifies the URL specifically to the model
-- This is useful when you have different models hosted on different subdomains like
-- https://model1.yourdomain.com/
-- https://model2.yourdomain.com/
local new_model = " mixtral-8-7b "
-- local new_model = "mistral-7b-tgi-predictor-ai-factory"
local host = url : match ( " https?://([^/]+) " )
local subdomain , domain , tld = host : match ( " ([^.]+)%.([^.]+)%.([^.]+) " )
local _new_url = url : gsub ( host , new_model .. " . " .. domain .. " . " .. tld )
return _new_url
end ,
-- conform_messages_fn = function(params)
-- Different models might have different instruction format
-- for example, Mixtral operates on `<s> [INST] Instruction [/INST] Model answer</s> [INST] Follow-up instruction [/INST] `
-- look in the `providers` folder of the plugin for examples
-- end,
-- conform_request_fn = function(params)
-- API request might need custom format, this function allows that to happen
-- look in the `providers` folder of the plugin for examples
-- end,
}
}
}
}
TBD
Если вам нравятся edgy.nvim edgy.nvim . После того, как это будет установлено, убедитесь, что вы включите параметры edgy = true в вариантах конфигурации для ogpt.nvim .
opts = {
right = {
{
title = " OGPT Popup " ,
ft = " ogpt-popup " ,
size = { width = 0.2 },
wo = {
wrap = true ,
},
},
{
title = " OGPT Parameters " ,
ft = " ogpt-parameters-window " ,
size = { height = 6 },
wo = {
wrap = true ,
},
},
{
title = " OGPT Template " ,
ft = " ogpt-template " ,
size = { height = 6 },
},
{
title = " OGPT Sessions " ,
ft = " ogpt-sessions " ,
size = { height = 6 },
wo = {
wrap = true ,
},
},
{
title = " OGPT System Input " ,
ft = " ogpt-system-window " ,
size = { height = 6 },
},
{
title = " OGPT " ,
ft = " ogpt-window " ,
size = { height = 0.5 },
wo = {
wrap = true ,
},
},
{
title = " OGPT {{{selection}}} " ,
ft = " ogpt-selection " ,
size = { width = 80 , height = 4 },
wo = {
wrap = true ,
},
},
{
title = " OGPt {{{instruction}}} " ,
ft = " ogpt-instruction " ,
size = { width = 80 , height = 4 },
wo = {
wrap = true ,
},
},
{
title = " OGPT Chat " ,
ft = " ogpt-input " ,
size = { width = 80 , height = 4 },
wo = {
wrap = true ,
},
},
},
}providersconfig.lua , по умолчанию - ollamaOGPTRun показывает сборщик телескопа type="popup" и strategy="display" -- or append, prepend, replace, quick_fix , "r" и "A" можно использовать для "заменить Спасибо автору jackMort/ChatGPT.nvim за создание бесшовных структур для взаимодействия с OGPT в Neovim!
Купить мне кофе