Wenn Sie keinen Anbieter angeben, ist ollama der Standardanbieter. http://localhost:11434 ist Ihr Endpunkt. mistral:7b ist Ihre Standardeinstellung, wenn die Konfiguration nicht aktualisiert wird.
-- 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 wird mit den folgenden Standardeinstellungen geliefert. Sie können jedes der Felder überschreiben, indem Sie eine Konfiguration als Setup -Parameter übergeben.
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua
OGPT ist ein Neovim -Plugin, mit dem Sie die OLLAMA OGPT -API mühelos nutzen können und die Sie befähigen können, natürliche Sprachantworten von Ollama direkt innerhalb des Editors als Antwort auf Ihre Eingabeaufforderungen zu generieren.
curl installiert haben. Benutzerdefinierte Ollama -API -Host mit der Konfigurationsoption api_host_cmd oder Umgebungsvariable namens $OLLAMA_API_HOST . Es ist nützlich, wenn Sie Ollama aus der Ferne laufen.

edgy.nvim -Plugin bietet ein Seitenfenster (standardmäßig rechts positioniert), das einen parallelen Arbeitsbereich bietet, in dem Sie während der Interaktion mit OGPT an Ihrem Projekt arbeiten können. Hier ist ein Beispiel für eine "nervöse" Konfiguration.
{
{
" 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 ,
},
},
},
},
}
}Plugin enthält die folgenden Befehle:
OGPT OGPT -Befehl öffnet ein interaktives Fenster, um mit LLM -Backends zu kommunizieren. Das interaktive Fenster besteht aus vier Panes:
| Bereich | Standardverknüpfungen | Beschreibung |
|---|---|---|
| Gemeinsam | Strg-o | Umschalten des Parameter -Panels (OGPT -Parameter) und Sessions -Panel (OGPT -Sitzungen). |
| Strg-n | Erstellen Sie eine neue Sitzung. | |
| Strg-c | OGPT schließen. | |
| Strg-i | Kopieren Sie den Code in der neuesten Antwort von LLM im OGPT -Ausgangstextbereich. | |
| Strg-X | Hören Sie auf, eine Antwort zu erzeugen. | |
| Tab | Fahrrad durch Scheiben. | |
| OGPT | K | Vorherige Antwort. |
| J | Nächste Antwort. | |
| Strg-u | Scrollen. | |
| Strg-d | Scrollen Sie nach unten. | |
| OGPT -Chat | Eingeben (Normaler Modus) | Senden Sie die Eingabeaufforderung an LLM. |
| Alt (Eingabemodus) | Senden Sie die Eingabeaufforderung an LLM. | |
| Strg-y | Kopieren Sie die neueste Antwort von LLM im OGPT -Ausgangstextbereich. | |
| Strg-r | Rolle umschalten (Assistent oder Benutzer). | |
| Strg-s | Systemmeldung umschalten. | |
| OGPT -Parameter | Eingeben | Parameter ändern. |
| OGPT -Sitzungen | Eingeben | SCHALTUNG. |
| D | Sitzung löschen. | |
| R | Sitzung umbenennen. Beachten Sie, dass eine aktive Sitzung nicht entfernt werden kann. |
Verknüpfungen für das interaktive OGPT -Fenster können unter opts.chat.keymaps modifiziert werden.
OGPTActAs OGPTActAs -Befehl, mit dem eine schnelle Auswahl aus fantastischen OGPT -Eingabeaufforderungen eröffnet wird, die mit dem mistral:7b -Modell verwendet werden sollen.
OGPTRun [action_name] OGPTRun [action_name] führt LLM mit vordefinierter Aktion mit dem Namen [action_name] aus. Von OGPT und benutzerdefinierte Aktionen, die von Benutzern definiert wurden, gibt es Standardaktionen.
Eine Aktion erfordert Parameter, um ihr Verhalten zu konfigurieren. Standardmodellparameter sind in actions.<action_name> in config.lua, und benutzerdefinierte Modellparameter werden entweder in einer benutzerdefinierten OGPT -Konfigurationsdatei oder in einer separaten Aktionskonfigurationsdatei wie actions.json definiert.
Einige der Aktionsparameter umfassen:
type : Die Art der OGPT -Schnittstelle. Derzeit gibt es drei Arten von OGPT -Schnittstellen:popup : Leichtes Popup-Fensteredit : OGPT -Fenstercompletions : Öffnet kein Fenster und vervollständigt direkt im Bearbeitungsfensterstrategy : Bestimmt, wie sich die OGPT -Schnittstelle verhält. Es gibt bestimmte strategy , die Sie für jeden type anwenden können:type = "popup" : Zeigen, Ersetzen, Anhängen, Vorbereiten, Quick_Fixtype = "completions" : Zeigen, Ersetzen, Anhängen, Vorbereitentype = "edits" : bearbeiten, edit_codesystem : Systemaufforderungparams : Modellparameter. Standardmodellparameter sind in opts.providers.<provider_name>.api_params Sie können Modellparameter in opts.actions.<action_name>.paramsmodel : LLM -Modell, das für die Aktion verwendet werden sollstop : Bedingung für LLM, um die Reaktion zu beenden. Zum Beispiel ist eine nützliche Stoppzustand für codellama "" "" ". Siehe Aktion "optimize_code" in Beispiel lazy.nvim Configuration.temperature : Variabilität der Reaktion von LLMfrequency_penalty : Jemand erklärt bitte bittemax_tokens : maximale Anzahl von Tokenstop_p : Jemand erklärt bitte bittetemplate : Eingabeaufforderung Vorlage. Vorlage definiert eine allgemeine Anweisung, der LLM folgen muss. Die Vorlage kann ein Vorlagenargument in Form von {{{<argument_name>}}} enthalten, wobei <argument_name> ein in args definierter Vorlagenargument ist. Abgesehen von den Argumenten, die in args definiert sind, können Sie die folgenden Argumente einfügen:{{{input}}} : Der ausgewählte Text im visuellen Modus.{{{filetype}}} : Die Art der Datei, mit der Sie interagieren.args : Vorlageargument. Vorlagenargumente definieren die Argumente, die die Argumente durch denselben Namen in template ersetzen. Einige gemeinsame Vorlagenargumente umfassen:instruction : Benutzerdefinierte Anweisung für LLM folgen. Es ist tendenziell spezifischer und strukturierter als die allgemeine Anweisung, die in template geht.lang : Sprache. Häufig für sprachbezogene Aktionen wie Übersetzung oder Grammatikprüfung verwendet. Standardaktionen sind in actions.<action_name> in config.lua.
OGPTRun edit_with_instructions OGPTRun edit_with_instructions öffnet das interaktive Fenster, um ausgewähltem Text oder ganzem Fenster mit dem in config.<provider_name>.api_params
Standardmäßig wird der Schnittstellentyp von OGPTRun edit_with_instructions edit , wodurch ein interaktives Fenster rechts geöffnet wird. Im Fenster können Sie <co> (Standard -Keymap, angepasst werden) zum Öffnen und Schließen der Parameterplatten verwenden. Beachten Sie, dass dieser Screenshot edgy.nvim verwendet


Sie können OGPT -Aktionen anpassen, indem Sie sie in einer benutzerdefinierten OGPT -Konfigurationsdateien oder in einer separaten Aktionsdatei definieren. Die Standardmodellkonfigurationen in config.lua können gute Referenzen sein, wenn Sie eigene benutzerdefinierte Aktionen erstellen.
Sie können Aktionen in Ihrer eigenen OGPT -Konfigurationsdatei konfigurieren (normalerweise in einer LUA -Datei wie ogpt.lua , wenn sie Neovim verwendet). In einer benutzerdefinierten OGPT -Konfigurationsdatei müssen Sie Aktionen in 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 " ,
},
},
},
...
}
} Der edit besteht darin, die Ausgabe nebeneinander mit dem Eingang anzuzeigen und für weitere Bearbeitungsaufforderungen verfügbar zu sein.
Die display zeigt die Ausgabe in einem Schwimmerfenster. Fügen Sie den Text direkt im Puffer mit "a" oder "r" append und replace direkt im Puffer.
Es ist möglich, benutzerdefinierte Aktionen mithilfe einer JSON -Datei zu definieren. Bitte beachten Sie das Beispiel von actions.json als Referenz.
Ein Beispiel für benutzerdefinierte Aktionen kann wie Folgendes aussehen: ( # Marks Kommentare)
{
"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
}
}
} Wenn Sie andere Aktionsdateien verwenden möchten, müssen Sie die Pfade an diese Dateien an defaults.actions_paths in config.lua anhängen.
Im laufenden Flug können Sie eine Befehlszeile ausführen, um OGPT aufzurufen. Ein Beispiel, um den Anruf von Grammar_Korrektur zu ersetzen, finden Sie unten. :OGPTRun grammar_correction {provider="openai", model="gpt-4"}
Um es noch dynamischer zu machen, können Sie es ändern, damit der Anbieter/Modell oder alle Parameter vom Benutzer an der Stelle eingegeben werden, wenn der Befehl ausgeführt wird. :OGPTRun grammar_correction {provider=vim.fn.input("Provider: "), type={popup={edgy=false}}}}
Zusätzlich kann im obigen Beispiel edgy.nvim ausgeschaltet werden. So dass die Reaktion Popup -Inline, wo der Cursor sein würde. Weitere Optionen für das Popup finden Sie unter https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l147-l180
Zum Beispiel, und lassen Sie es in die Geltung bringen und ändern und ändern enter = false .
Darüber hinaus können Sie für fortgeschrittene Benutzer VIM AutoCommands verwenden. Zum Beispiel kann eine Autokonfliege auftreten, wenn der Cursor angehalten wird. Schauen Sie sich die verschiedenen Vorlagenhelfer für diese erweiterten Optionen an, denn jetzt jetzt
Derzeit wird die angegebenen Eingaben zur API für {{{<template_helper_name>}}} für die Erweiterung gescannt. Dies ist hilfreich, wenn Sie Ihren API -Anfragen etwas mehr Kontext angeben oder einfach zusätzliche Funktionsaufrufe anschließen möchten.
Schauen Sie sich diese Datei für die aktuellsten Vorlagenhelfer an. Wenn Sie mehr Vorlagenhelfer haben, machen Sie bitte einen MR, Ihr Beitrag wird geschätzt!
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/flows/actions/template_helpers.lua
Dies ist eine benutzerdefinierte Aktion, die ich ständig verwende, um das sichtbare Fenster als Kontext zu verwenden, damit AI alle Inline -Fragen beantwortet.
....
-- 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
}
.... Ändern Sie das Modell, indem Sie die Parameter-Panels standardmäßig (Strg-O) oder Ihren Weg dazu öffnen und dann auf Enter () im Modellfeld drücken, um es zu ändern. Es sollte alle verfügbaren Modelle in Ihrem LLM -Anbieter auflisten. 
Fügen Sie im Parameterbereich Parameter hinzu und löschen Sie die Tasten "A" und "D" 
Bei der Verwendung OGPT sind die folgenden Schlüsselbindungen unter config.chat.keymaps verfügbar
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l51-l71
edit und edit_code Strategiehttps://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
Wenn die Parameter -Panels geöffnet werden (mit <Co> ), können Einstellungen durch Drücken Enter auf der zugehörigen Konfiguration geändert werden. Einstellungen werden in den Sitzungen gespeichert.
lazy.nvim -Konfiguration 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 " ,
},
},
} Wenn Sie Ihre Aktionen häufig aktualisieren, empfehle ich, die folgenden Schlüssel zu Ihrer lazy.nvim ogpt -Konfiguration hinzuzufügen. Dies laden einfach ogpt.nvim vor Ort neu, damit Sie Ihre aktualisierten Aktionen sehen können.
...
-- other config options here
keys = {
{
" <leader>ro " ,
" <Cmd>Lazy reload ogpt.nvim<CR> " ,
desc = " RELOAD ogpt " ,
},
...
}
-- other config options here
... Dies ist ein Beispiel dafür, wie ein Ollama Mixtral Model Server eingerichtet wird, der möglicherweise auf einem anderen Server sitzt. Hinweis Im folgenden Beispiel können Sie:
secret_model ist ein Alias zu mixtral-8-7b , sodass Sie in Ihren actions secret_model verwenden können. Dies ist nützlich, wenn Sie mehrere Anbieter haben, die die gleiche Leistung wie Mixtral haben und verschiedene Anbieter zur Verwendung, basierend auf der Entwicklungsumgebung oder aus anderen Gründen tauschen möchten.mixtral-8-7b in diesem Beispiel wird dieses Modell in Ihren Modelsoptionen in Ihrem chat und edit angezeigt.conform_message_fn wird verwendet, um die Standard -Anbieter conform_message -Funktion zu überschreiben. Diese Funktion ermöglicht es, dass die API -Anforderungsparameter das spezifische Modell massieren. Dies ist sehr nützlich, wenn Sie die Nachrichten so ändern müssen, dass sie die Modell geschult geschult wurden.conform_request_fn wird verwendet, um die Standardanbieter conform_request -Funktion zu überschreiben. Diese Funktion (oder die Standardfunktion der Anbieter) wird am Ende genau vor dem Aufrufen der API aufgerufen. Die endgültige Massage kann hier durchgeführt werden. -- 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
Wenn Sie Sie edgy.nvim edgy.nvim Stellen Sie danach festgelegt, dass Sie die edgy = true -Optionen in Ihren Konfigurationsoptionen für ogpt.nvim aktivieren.
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 an, Standard ist ollamaOGPTRun zeigt Teleskoperwählerin an type="popup" und strategy="display" -- or append, prepend, replace, quick_fix , "R" und "A" können verwendet werden, um die zu ersetzen Vielen Dank an den Autor von jackMort/ChatGPT.nvim für die Erstellung eines nahtlosen Frameworks, um mit OGPT in Neovim zu interagieren!
Kaufen Sie mir einen Kaffee