Si vous ne spécifiez pas de fournisseur, ollama sera le fournisseur par défaut. http://localhost:11434 est votre point de terminaison. mistral:7b sera votre défaut si la configuration n'est pas mise à jour.
-- 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 est livré avec les défaillances suivantes. Vous pouvez remplacer l'un des champs en passant une configuration en tant que paramètres de configuration.
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua
OGPT est un plugin Neovim qui vous permet d'utiliser sans effort l'API OLLAMA OGPT, vous permettant de générer des réponses en langage naturel à partir d'Olllama directement au sein de l'éditeur en réponse à vos invites.
curl . Hôte API Olllama personnalisé avec l'option de configuration api_host_cmd ou Variable d'environnement appelé $OLLAMA_API_HOST . C'est utile si vous exécutez Olllama à distance.

Le plugin edgy.nvim propose une fenêtre latérale (positionnée à droite par défaut) qui fournit un espace de travail parallèle où vous pouvez travailler sur votre projet tout en interagissant avec OGPT. Voici un exemple de configuration «énervée».
{
{
" 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 ,
},
},
},
},
}
}Le plugin expose les commandes suivantes:
OGPT La commande OGPT ouvre une fenêtre interactive pour communiquer avec les backends LLM. La fenêtre interactive se compose de quatre vitesses:
| Zone | Raccourcis par défaut | Description |
|---|---|---|
| Commun | Ctrl-o | Panneau de paramètre à bascule (paramètres OGPT) et panneau de sessions (Sessions OGPT). |
| Ctrl-n | Créer une nouvelle session. | |
| Ctrl-c | Fermer Ogpt. | |
| Ctrl-i | Copiez le code dans la dernière réponse de LLM dans la zone de texte de sortie OGPT. | |
| Ctrl-x | Arrêtez de générer une réponse. | |
| Languette | Faire du vélo à travers les volets. | |
| Ogpt | K | Réponse précédente. |
| J | Réponse suivante. | |
| Ctrl-u | Faites défiler vers le haut. | |
| Ctrl-d | Faites défiler vers le bas. | |
| Chat ogpt | Entrer (mode normal) | Envoyer une invite à LLM. |
| Alt-enter (mode d'entrée) | Envoyer une invite à LLM. | |
| Ctrl-y | Copiez la dernière réponse de LLM dans la zone de texte de sortie OGPT. | |
| Ctrl-r | Rôle de bascule (assistant ou utilisateur). | |
| Ctrl-s | Basculer le message du système. | |
| Paramètres ogpt | Entrer | Changer le paramètre. |
| Sessions Ogpt | Entrer | Session de commutation. |
| d | Supprimer la session. | |
| r | Renommer la session. Notez qu'une session active ne peut pas être supprimée. |
Les raccourcis pour la fenêtre interactive OGPT peuvent être modifiés sur opts.chat.keymaps .
OGPTActAs Commande OGPTActAs qui ouvre une sélection invite à partir d'invites OGPT impressionnantes à utiliser avec le modèle mistral:7b .
OGPTRun [action_name] OGPTRun [action_name] exécute LLM avec une action prédéfinie nommée [action_name] . Il existe des actions par défaut fournies par OGPT et des actions personnalisées définies par les utilisateurs.
Une action nécessite des paramètres pour configurer son comportement. Les paramètres de modèle par défaut sont définis dans actions.<action_name> Dans config.lua, et les paramètres de modèle personnalisés sont définis soit dans un fichier de configuration OGPT personnalisé, soit dans un fichier de configuration d'actions distinct tels que actions.json .
Certains des paramètres d'action comprennent:
type : Le type d'interface OGPT. Actuellement, il existe trois types d'interface OGPT:popup : fenêtre popup légèreedit : fenêtre ogptcompletions : n'ouvre pas de fenêtre, se termine directement sur la fenêtre d'éditionstrategy : détermine le comportement de l'interface OGPT. Il existe strategy spécifiques que vous pouvez utiliser pour chaque type :type = "popup" : afficher, remplacer, ajouter, passer, Quick_fixtype = "completions" : afficher, remplacer, ajouter, constituertype = "edits" : modifier, edit_codesystem : invite du systèmeparams : paramètres du modèle. Les paramètres de modèle par défaut sont définis dans opts.providers.<provider_name>.api_params . Vous pouvez personnaliser les paramètres du modèle dans opts.actions.<action_name>.params et remplacer les paramètres du modèle par défaut.model : modèle LLM à utiliser pour l'actionstop : condition pour que LLM cesse de générer une réponse. Par exemple, une condition d'arrêt utile pour codellama est "` `` ". Voir l'action "Optimiser_code" dans Exemple lazy.nvim Configuration.temperature : variabilité de la réponse de LLMfrequency_penalty : quelqu'un explique s'il vous plaîtmax_tokens : Nombre maximum de jetonstop_p : quelqu'un explique s'il vous plaîttemplate : modèle d'invite. Le modèle définit une instruction générale que LLM doit suivre. Le modèle peut inclure l'argument du modèle sous forme de {{{<argument_name>}}} , où <argument_name> est un modèle argument défini dans args . Outre les arguments définis dans args , vous pouvez inclure les arguments suivants:{{{input}}} : le texte sélectionné en mode visuel.{{{filetype}}} : le type de fichier avec lequel vous interagissez.args : argument du modèle. Les arguments de modèle définissent les arguments qui remplacent les arguments par le même nom dans template . Certains arguments de modèle communs comprennent:instruction : Instruction personnalisée pour LLM à suivre. Il a tendance à être plus spécifique et structuré que l'instruction générale qui va dans template .lang : Langue. Souvent utilisé pour les actions liées à la langue, telles que la traduction ou le contrôle de grammaire. Les actions par défaut sont définies dans actions.<action_name> dans config.lua.
OGPTRun edit_with_instructions OGPTRun edit_with_instructions ouvre la fenêtre interactive pour modifier le texte sélectionné ou la fenêtre entière à l'aide du modèle défini dans config.<provider_name>.api_params .
Par défaut, le type d'interface d' OGPTRun edit_with_instructions est edit , ce qui ouvre une fenêtre interactive à droite. Dans la fenêtre, vous pouvez utiliser <co> (Keymap par défaut, peut être personnalisé) pour ouvrir et fermer les panneaux de paramètres. Remarque Cette capture d'écran utilise edgy.nvim


Vous pouvez personnaliser les actions OGPT en les définissant dans un fichier de configuration OGPT personnalisé ou dans un fichier d'action distinct. Les configurations de modèle par défaut dans config.lua peuvent être de bonnes références lors de la réalisation de vos propres actions personnalisées.
Vous pouvez configurer des actions dans votre propre fichier de configuration OGPT (généralement dans un fichier LUA comme ogpt.lua si vous utilisez Neovim). Dans un fichier de configuration OGPT personnalisé, vous devez définir des actions dans actions.<action_name> comme la façon dont les actions par défaut sont définies dans 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 " ,
},
},
},
...
}
} Le type edit consiste à afficher la sortie côte à côte avec l'entrée et disponible pour les invites d'édition supplémentaires.
La stratégie display affiche la sortie dans une fenêtre flottante. append et replace Modifier le texte directement dans le tampon par "A" ou "R"
Il est possible de définir des actions personnalisées à l'aide d'un fichier JSON. Veuillez consulter l'exemple sur actions.json pour référence.
Un exemple d'action personnalisée peut ressembler à ce qui suit: ( # Marks Commentaires)
{
"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
}
}
} Si vous souhaitez utiliser d'autres fichiers d'action, vous devez ajouter les chemins de main vers ces fichiers vers defaults.actions_paths dans config.lua.
À la volée, vous pouvez exécuter une ligne de commande pour appeler OGPT. Un exemple pour remplacer l'appel Grammar_Correction est fourni ci-dessous. :OGPTRun grammar_correction {provider="openai", model="gpt-4"}
Pour le rendre encore plus dynamique, vous pouvez le modifier pour que le fournisseur / modèle ou tout paramètres soit entré par l'utilisateur sur place lorsque la commande est exécutée. :OGPTRun grammar_correction {provider=vim.fn.input("Provider: "), type={popup={edgy=false}}}}
De plus, dans l'exemple ci-dessus, edgy.nvim peut être désactivé. De sorte que la réponse appartient en ligne où le curseur serait. Pour des options supplémentaires pour la fenêtre contextuelle, veuillez lire https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l147-l180
Par exemple, vous et le faire apparaître et changer enter = false , ce qui laisse le curseur au même endroit, au lieu de le déplacer vers la fenêtre contextuelle.
De plus, pour les utilisateurs avancés, cela vous permet d'utiliser VIM AutoCommands. Par exemple, la saisie automatique peut se produire lorsque le curseur est interrompu. Regardez les différents modèles d'aide pour ces options avancées, car maintenant
Actuellement, les entrées données à l'API sont analysées pour {{{<template_helper_name>}}} pour l'expansion. Ceci est utile lorsque vous souhaitez donner un peu plus de contexte à vos demandes d'API, ou simplement pour accrocher des appels de fonction supplémentaires.
Regardez ce fichier pour les aides aux modèles les plus à jour. Si vous avez plus d'aideurs à modèle, veuillez faire un MR, votre contribution est appréciée!
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/flows/actions/template_helpers.lua
Il s'agit d'une action personnalisée que j'utilise tout le temps pour utiliser les fenêtres visibles comme contexte pour que l'IA réponde à toutes les questions en ligne.
....
-- 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
}
.... Modifier le modèle en ouvrant les panneaux de paramètre par défaut vers (Ctrl-O) ou votre chemin vers lui, puis appuyez sur ENTER () sur le champ du modèle pour le modifier. Il devrait répertorier tous les modèles disponibles à partir de votre fournisseur LLM. 
Dans le panneau des paramètres , ajoutez et supprimez les paramètres en utilisant respectivement les touches "A" et "D" 
Lorsque vous utilisez OGPT , les clés suivants sont disponibles sous config.chat.keymaps
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l51-l71
edit et 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
Lorsque les panneaux de paramètres sont ouverts (avec <Co> ), les paramètres peuvent être modifiés en appuyant sur Enter sur la configuration associée. Les paramètres sont enregistrés sur les sessions.
lazy.nvim 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 " ,
},
},
} Lorsque vous mettez à jour vos actions fréquemment, je recommanderais d'ajouter les touches suivantes à votre configuration lazy.nvim ogpt . Cela recharge simplement ogpt.nvim sur place pour que vous puissiez voir vos actions mises à jour.
...
-- other config options here
keys = {
{
" <leader>ro " ,
" <Cmd>Lazy reload ogpt.nvim<CR> " ,
desc = " RELOAD ogpt " ,
},
...
}
-- other config options here
... Ceci est un exemple de la façon de configurer un serveur de modèles Olllama Mixtral qui pourrait être assis sur un autre serveur. Remarque Dans l'exemple ci-dessous, vous pouvez:
secret_model est un alias de mixtral-8-7b , donc dans vos actions vous pouvez utiliser secret_model . Ceci est utile lorsque vous avez plusieurs fournisseurs qui ont le même pouvoir que Mixtral, et que vous souhaitez échanger différents fournisseurs à utiliser, en fonction de l'environnement de développement ou pour d'autres raisons.mixtral-8-7b dans cet exemple, ce modèle apparaîtra dans vos options de modèles dans vos actions chat et edit .conform_message_fn est utilisé pour remplacer la fonction conform_message par défaut. Cette fonction permet au massage des paramètres de la demande de l'API d'adapter le modèle spécifique. Ceci est vraiment utile lorsque vous devez modifier les messages pour s'adapter au modèle formé du modèle.conform_request_fn est utilisé pour remplacer la fonction de fournisseur par défaut conform_request . Cette fonction (ou la fonction par défaut du fournisseur) est appelée à la toute fin, juste avant de passer l'appel de l'API. Le massage final peut être effectué ici. -- 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
Si vous aimez votre configuration edgy.nvim , utilisez quelque chose comme ceci pour vos options de configuration de plugin pour edgy.nvim . Une fois celui-ci, assurez-vous d'activer les options edgy = true dans vos options de configuration pour 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 , la valeur par défaut est ollamaOGPTRun en cours d'exécution montre le sélecteur de télescope type="popup" et strategy="display" -- or append, prepend, replace, quick_fix , "R" et "A" peuvent être utilisés pour "remplacer le Merci à l'auteur de jackMort/ChatGPT.nvim pour avoir créé un cadre transparent pour interagir avec Ogpt dans Neovim!
Achetez-moi un café