Se você não especificar um provedor, ollama será o provedor padrão. http://localhost:11434 é o seu terminal. mistral:7b será o seu padrão se a configuração não for atualizada.
-- 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 vem com os seguintes padrões. Você pode substituir qualquer um dos campos passando uma configuração como parâmetros de configuração.
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua
OGPT é um plug -in Neovim que permite que você utilize sem esforço a API OLLAMA OGPT, capacitando você a gerar respostas de linguagem natural do Ollama diretamente dentro do editor em resposta às suas instruções.
curl . Host API de Ollama personalizado com a opção de configuração api_host_cmd ou Variável de ambiente chamada $OLLAMA_API_HOST . É útil se você executar o Ollama remotamente.

O plug -in edgy.nvim oferece uma janela lateral (posicionada à direita por padrão) que fornece um espaço de trabalho paralelo, onde você pode trabalhar em seu projeto enquanto interage com o OGPT. Aqui está um exemplo de uma configuração 'ousada'.
{
{
" 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 ,
},
},
},
},
}
}O plug -in expõe os seguintes comandos:
OGPT O comando OGPT abre uma janela interativa para se comunicar com os backnds do LLM. A janela interativa consiste em quatro painéis:
| Área | Atalhos padrão | Descrição |
|---|---|---|
| Comum | Ctrl-o | TOLGLE Painel de parâmetros (parâmetros OGPT) e painel de sessões (sessões de OGPT). |
| Ctrl-N | Crie uma nova sessão. | |
| Ctrl-C | Fechar ogpt. | |
| Ctrl-i | Copie o código na resposta mais recente da LLM na área de texto de saída OGPT. | |
| Ctrl-x | Pare de gerar resposta. | |
| Guia | Passe por painéis. | |
| OGPT | K | Resposta anterior. |
| J | Próxima resposta. | |
| Ctrl-u | Role para cima. | |
| Ctrl-D | Role para baixo. | |
| OGPT Chat | Digitar (modo normal) | Envie o prompt para LLM. |
| Alt-entra (Modo de entrada) | Envie o prompt para LLM. | |
| Ctrl-y | Copie a resposta mais recente do LLM na área de texto de saída OGPT. | |
| Ctrl-r | Função de alternância (assistente ou usuário). | |
| Ctrl-S | Alternar a mensagem do sistema. | |
| Parâmetros OGPT | Digitar | Alterar parâmetro. |
| Sessões OGPT | Digitar | Sessão de interruptor. |
| d | Excluir sessão. | |
| r | Renomear sessão. Observe que uma sessão ativa não pode ser removida. |
Atalhos para janela interativa OGPT podem ser modificados em opts.chat.keymaps .
OGPTActAs Comando OGPTActAs , que abre uma seleção rápida de incríveis solicitações de OGPT para serem usadas com o modelo mistral:7b .
OGPTRun [action_name] OGPTRun [action_name] é executado LLM com ação predefinida chamada [action_name] . Existem ações padrão fornecidas pelo OGPT e ações personalizadas definidas pelos usuários.
Uma ação requer parâmetros para configurar seu comportamento. Os parâmetros do modelo padrão são definidos em actions.<action_name> actions.json
Alguns dos parâmetros de ação incluem:
type : o tipo de interface OGPT. Atualmente, existem três tipos de interface OGPT:popup : janela pop-up leveedit : Janela OGPTcompletions : não abre uma janela, completa diretamente na janela de ediçãostrategy : determina a maneira como a interface OGPT se comporta. Existem strategy específicas que você pode usar para cada type :type = "popup" : exibir, substituir, anexar, prendê -lo, Quick_fixtype = "completions" : exibir, substituir, anexar, prender -setype = "edits" : editar, edit_codesystem : prompt de sistemaparams : parâmetros do modelo. Os parâmetros do modelo padrão são definidos no opts.providers.<provider_name>.api_params . Você pode personalizar os parâmetros do modelo nas opts.actions.<action_name>.params .model : Modelo LLM a ser usado para a açãostop : Condição para o LLM parar de gerar resposta. Por exemplo, uma condição de parada útil para codellama é "` `` ". Consulte Ação "Optimize_code" no exemplo lazy.nvim Configuração.temperature : variabilidade da resposta do LLMfrequency_penalty : alguém explica por favormax_tokens : número máximo de tokenstop_p : alguém explica por favortemplate : Modelo de prompt. O modelo define uma instrução geral que o LLM deve seguir. O modelo pode incluir o argumento do modelo na forma de {{{<argument_name>}}} , onde <argument_name> é um argumento de modelo definido no args . Além dos argumentos definidos no args , você pode incluir os seguintes argumentos:{{{input}}} : o texto selecionado no modo visual.{{{filetype}}} : o tipo de arquivo com o qual você está interagindo.args : argumento de modelo. Argumentos de modelo definem os argumentos que substituem os argumentos com o mesmo nome no template . Alguns argumentos de modelo comuns incluem:instruction : Instruções personalizadas para o LLM seguir. Tende a ser mais específico e estruturado do que a instrução geral que entra em template .lang : Linguagem. Freqüentemente usado para ações relacionadas ao idioma, como tradução ou verificação gramatical. As ações padrão são definidas em actions.<action_name>
OGPTRun edit_with_instructions OGPTRun edit_with_instructions abre janela interativa para editar o texto selecionado ou a janela inteira usando o modelo definido na config.<provider_name>.api_params .
Por padrão, o tipo de interface do OGPTRun edit_with_instructions é edit , que abre uma janela interativa para a direita. Na janela, você pode usar <co> (keymap padrão, pode ser personalizado) para abrir e fechar os painéis de parâmetros. Observe que esta captura de tela está usando edgy.nvim


Você pode personalizar ações OGPT definindo -as em um arquivo de configuração OGPT personalizado ou em um arquivo de ação separado. As configurações de modelo padrão no Config.lua podem ser boas referências ao fazer suas próprias ações personalizadas.
Você pode configurar ações em seu próprio arquivo de configuração OGPT (normalmente em um arquivo Lua como ogpt.lua se estiver usando o neovim). Em um arquivo de configuração OGPT personalizado, você deve definir ações em actions.<action_name>
--- 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 " ,
},
},
},
...
}
} O tipo de edit consiste em mostrar a saída lado a lado com a entrada e disponível para prompts adicionais de edição.
A estratégia display mostra a saída em uma janela de flutuação. append e replace modifique o texto diretamente no buffer com "a" ou "r"
É possível definir ações personalizadas usando um arquivo JSON. Por favor, consulte o exemplo em actions.json para referência.
Um exemplo de ação personalizada pode parecer o seguinte: ( # marca comentários)
{
"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
}
}
} Se você deseja usar outros arquivos de ação, deverá anexar os caminhos a esses arquivos para defaults.actions_paths em config.lua.
Em tempo real, você pode executar uma linha de comando para ligar para o OGPT. Um exemplo para substituir a chamada Grammar_Correction é fornecido abaixo. :OGPTRun grammar_correction {provider="openai", model="gpt-4"}
Para torná -lo ainda mais dinâmico, você pode alterá -lo para que o provedor/modelo ou quaisquer parâmetros sejam inseridos pelo usuário no local quando o comando for executado. :OGPTRun grammar_correction {provider=vim.fn.input("Provider: "), type={popup={edgy=false}}}}
Além disso, no exemplo acima, edgy.nvim pode ser desligado. Para que o pop -up de resposta alinhe onde o cursor estaria. Para opções adicionais para o pop-up, leia https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l147-l180
Por exemplo, você e o pop -up e mude enter = false , o que deixa o cursor no mesmo local, em vez de movê -lo para o pop -up.
Além disso, para usuários avançados, isso permite que você use o Vim AutoCommands. Por exemplo, a conclusão automática pode ocorrer quando o cursor é pausado. Veja os vários ajudantes de modelo para essas opções avançadas, porque agora
Atualmente, as entradas fornecidas na API são digitalizadas para {{{<template_helper_name>}}} para expansão. Isso é útil quando você deseja dar um pouco mais de contexto às suas solicitações de API ou simplesmente conectar chamadas de função adicionais.
Veja este arquivo para obter os ajudantes mais atualizados do modelo. Se você tiver mais ajudantes de modelo, faça um MR, sua contribuição é apreciada!
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/flows/actions/template_helpers.lua
Esta é uma ação personalizada que eu uso o tempo todo para usar o Windows visível como contexto para que a IA responda a quaisquer perguntas em linha.
....
-- 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
}
.... Altere o modelo abrindo o padrão dos painéis de parâmetros para (Ctrl-O) ou seu caminho para ele, pressione Enter () no campo Modelo para alterá-lo. Ele deve listar todos os modelos disponíveis no seu provedor LLM. 
No painel de parâmetros , adicione e exclua parâmetros usando as chaves "a" e "d", respectivamente 
Ao usar OGPT , os seguintes pedidos de chave estão disponíveis em config.chat.keymaps
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l51-l71
edit e edit_code estratégiahttps://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
Quando os painéis de parâmetros são abertos (com <Co> ), as configurações podem ser modificadas pressionando Enter na configuração relacionada. As configurações são salvas nas sessões.
lazy.nvim Configuração 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 " ,
},
},
} Quando você está atualizando suas ações com frequência, recomendo adicionar as seguintes teclas à ogpt configuração lazy.nvim . Isso simplesmente recarregue ogpt.nvim no local para você ver suas ações atualizadas.
...
-- other config options here
keys = {
{
" <leader>ro " ,
" <Cmd>Lazy reload ogpt.nvim<CR> " ,
desc = " RELOAD ogpt " ,
},
...
}
-- other config options here
... Este é um exemplo de como configurar um servidor de modelos Mixtral Ollama que pode estar em um servidor diferente. Nota no exemplo abaixo, você pode:
secret_model é um alias para mixtral-8-7b ; portanto, em suas actions , você pode usar secret_model . Isso é útil quando você possui vários fornecedores com o mesmo poder que o mixtral e deseja trocar diferentes provedores para usar, com base no ambiente de desenvolvimento ou por outros motivos.mixtral-8-7b neste exemplo, esse modelo será exibido em suas opções de modelos em suas ações chat e edit .conform_message_fn é usado para substituir a função do provedor padrão conform_message . Esta função permite que a massagem dos parâmetros de solicitação da API se ajuste ao modelo específico. Isso é realmente útil quando você precisa modificar as mensagens para se ajustar ao modelo treinado do modelo.conform_request_fn é usado para substituir a função conform_request do provedor padrão. Esta função (ou a função padrão do provedor) é chamada no final, logo antes de fazer a chamada da API. A massagem final pode ser feita aqui. -- 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
Se você edgy.nvim de sua configuração edgy.nvim . Depois que isso estiver definido, certifique -se de ativar as opções edgy = true opções de configuração para 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 , o padrão é ollamaOGPTRun mostra o selecador de telescópio type="popup" e strategy="display" -- or append, prepend, replace, quick_fix , "r" e "a" pode ser usado para "substituir o Obrigado ao autor de jackMort/ChatGPT.nvim por criar uma estrutura perfeita para interagir com o OGPT em Neovim!
Compre me um café