Jika Anda tidak menentukan penyedia, ollama akan menjadi penyedia default. http://localhost:11434 adalah titik akhir Anda. mistral:7b akan menjadi default Anda jika konfigurasi tidak diperbarui.
-- 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 hadir dengan default berikut. Anda dapat mengganti salah satu bidang dengan meneruskan konfigurasi sebagai parameter pengaturan.
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua
OGPT adalah plugin Neovim yang memungkinkan Anda untuk dengan mudah memanfaatkan OGPT API OGPT, memberdayakan Anda untuk menghasilkan respons bahasa alami dari Ollama langsung di dalam editor dalam menanggapi petunjuk Anda.
curl . Host API ollama khusus dengan opsi konfigurasi api_host_cmd atau variabel lingkungan yang disebut $OLLAMA_API_HOST . Ini berguna jika Anda menjalankan Ollama dari jarak jauh.

edgy.nvim Plugin menawarkan jendela samping (diposisikan ke kanan secara default) yang menyediakan ruang kerja paralel di mana Anda dapat mengerjakan proyek Anda saat berinteraksi dengan OGPT. Berikut adalah contoh konfigurasi 'edgy'.
{
{
" 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 memperlihatkan perintah berikut:
OGPT Perintah OGPT membuka jendela interaktif untuk berkomunikasi dengan backend LLM. Jendela interaktif terdiri dari empat panel:
| Daerah | Pintasan default | Keterangan |
|---|---|---|
| Umum | Ctrl-o | Toggle Parameter Panel (Parameter OGPT) dan Panel Sesi (Sesi OGPT). |
| Ctrl-n | Buat sesi baru. | |
| CTRL-C | Tutup Ogpt. | |
| Ctrl-i | Salin kode dalam respons terbaru LLM di area teks output OGPT. | |
| Ctrl-x | Berhenti menghasilkan respons. | |
| Tab | Bersepeda melalui panel. | |
| Ogpt | K | Tanggapan sebelumnya. |
| J | Tanggapan berikutnya. | |
| Ctrl-u | Gulir ke atas. | |
| Ctrl-d | Gulir ke bawah. | |
| Obrolan ogpt | Memasuki (mode normal) | Kirim Prompt ke LLM. |
| Alt-enter (mode input) | Kirim Prompt ke LLM. | |
| Ctrl-y | Salin respons terbaru dari LLM di area teks output OGPT. | |
| CTRL-R | Toggle Peran (asisten atau pengguna). | |
| Ctrl-s | Pesan Sistem Toggle. | |
| Parameter OGPT | Memasuki | Ubah parameter. |
| Sesi OGPT | Memasuki | Switch Sesi. |
| D | Hapus sesi. | |
| R | Ganti nama sesi. Perhatikan bahwa sesi aktif tidak dapat dihapus. |
Pintasan untuk jendela interaktif OGPT dapat dimodifikasi di opts.chat.keymaps .
OGPTActAs Perintah OGPTActAs yang membuka pilihan cepat dari petunjuk OGPT yang mengagumkan untuk digunakan dengan model mistral:7b .
OGPTRun [action_name] OGPTRun [action_name] menjalankan LLM dengan tindakan yang telah ditentukan bernama [action_name] . Ada tindakan default yang disediakan oleh OGPT, dan tindakan khusus yang ditentukan oleh pengguna.
Suatu tindakan membutuhkan parameter untuk mengonfigurasi perilakunya. Parameter model default didefinisikan dalam actions.<action_name> di config.lua, dan parameter model khusus didefinisikan baik dalam file konfigurasi OGPT khusus atau dalam file konfigurasi tindakan terpisah seperti actions.json .
Beberapa parameter tindakan meliputi:
type : Jenis antarmuka OGPT. Saat ini, ada tiga jenis antarmuka OGPT:popup : jendela popup ringanedit : Jendela OGPTcompletions : Tidak membuka jendela, diselesaikan langsung di jendela pengeditanstrategy : Menentukan cara berperilaku antarmuka OGPT. Ada strategy khusus yang dapat Anda gunakan untuk setiap type :type = "popup" : Tampilan, Ganti, Tambahkan, Prepend, Quick_Fixtype = "completions" : Tampilan, ganti, tambahkan, prependtype = "edits" : Edit, edit_codesystem : Sistem Promptparams : Parameter model. Parameter model default didefinisikan dalam opts.providers.<provider_name>.api_params . Anda dapat menyesuaikan parameter model di opts.actions.<action_name>.params dan override parameter model default.model : Model LLM untuk digunakan untuk tindakan tersebutstop : Kondisi untuk LLM untuk berhenti menghasilkan respons. Misalnya, kondisi berhenti yang berguna untuk codellama adalah "` `` ". Lihat Tindakan "Optimize_Code" di Contoh Konfigurasi lazy.nvim .temperature : Variabilitas respons LLMfrequency_penalty : Seseorang menjelaskanmax_tokens : Jumlah token maksimumtop_p : Tolong jelaskan seseorangtemplate : Template cepat. Template mendefinisikan instruksi umum yang harus diikuti oleh LLM. Template dapat memasukkan argumen template dalam bentuk {{{<argument_name>}}} , di mana <argument_name> adalah argumen template yang ditentukan dalam args . Selain argumen yang ditentukan dalam args , Anda dapat memasukkan argumen berikut:{{{input}}} : Teks yang dipilih dalam mode visual.{{{filetype}}} : Jenis file yang Anda berinteraksi dengan.args : Argumen template. Argumen templat menentukan argumen yang menggantikan argumen dengan nama yang sama dalam template . Beberapa argumen template umum meliputi:instruction : Instruksi khusus untuk diikuti LLM. Itu cenderung lebih spesifik dan terstruktur daripada instruksi umum yang masuk ke template .lang : Bahasa. Sering digunakan untuk tindakan terkait bahasa, seperti terjemahan atau pemeriksaan tata bahasa. Tindakan default didefinisikan dalam actions.<action_name> di config.lua.
OGPTRun edit_with_instructions OGPTRun edit_with_instructions membuka jendela interaktif untuk mengedit teks atau seluruh jendela yang dipilih menggunakan model yang ditentukan dalam config.<provider_name>.api_params .
Secara default, tipe antarmuka OGPTRun edit_with_instructions adalah edit , yang membuka jendela interaktif ke kanan. Di jendela, Anda dapat menggunakan <co> (KeyMap default, dapat disesuaikan) untuk membuka dan menutup panel parameter. Perhatikan tangkapan layar ini menggunakan edgy.nvim


Anda dapat menyesuaikan tindakan OGPT dengan mendefinisikannya dalam file konfigurasi OGPT khusus, atau dalam file tindakan terpisah. Konfigurasi model default di config.lua dapat menjadi referensi yang baik saat membuat tindakan khusus Anda sendiri.
Anda dapat mengonfigurasi tindakan dalam file konfigurasi OGPT Anda sendiri (biasanya dalam file LUA seperti ogpt.lua jika menggunakan Neovim). Dalam file konfigurasi OGPT khusus, Anda harus mendefinisikan tindakan dalam actions.<action_name> Seperti cara tindakan default didefinisikan dalam 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 " ,
},
},
},
...
}
} Tipe edit terdiri dari menunjukkan output berdampingan dengan input dan tersedia untuk petunjuk pengeditan lebih lanjut.
Strategi display menunjukkan output di jendela float. append dan replace ubah teks langsung di buffer dengan "A" atau "R"
Dimungkinkan untuk mendefinisikan tindakan khusus menggunakan file JSON. Silakan lihat contoh di actions.json untuk referensi.
Contoh tindakan kustom mungkin terlihat seperti berikut: ( # Marks Comments)
{
"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
}
}
} Jika Anda ingin menggunakan file tindakan lain, Anda harus menambahkan jalur ke file -file tersebut ke defaults.actions_paths di config.lua.
Dengan cepat, Anda dapat menjalankan baris perintah untuk memanggil OGPT. Contoh untuk mengganti panggilan grammar_correction, disediakan di bawah ini. :OGPTRun grammar_correction {provider="openai", model="gpt-4"}
Untuk membuatnya semakin dinamis, Anda dapat mengubahnya untuk memiliki penyedia/model atau parameter apa pun yang dimasukkan oleh pengguna di tempat ketika perintah dieksekusi. :OGPTRun grammar_correction {provider=vim.fn.input("Provider: "), type={popup={edgy=false}}}}
Selain itu, dalam contoh di atas, edgy.nvim dapat dimatikan. Sehingga respons popup inline di mana kursor akan berada. Untuk opsi tambahan untuk popup, silakan baca melalui https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l147-l180
Misalnya, Anda dan memilikinya popup dan ubah enter = false , yang meninggalkan kursor di lokasi yang sama, alih -alih memindahkannya ke popup.
Selain itu, untuk pengguna tingkat lanjut, ini memungkinkan Anda untuk menggunakan VIM Autocommands. Misalnya, pelengkapan otomatis dapat terjadi ketika kursor dijeda. Lihatlah berbagai pembantu templat untuk opsi canggih ini, karena sekarang
Saat ini, input yang diberikan ke API dipindai untuk {{{<template_helper_name>}}} untuk ekspansi. Ini sangat membantu ketika Anda ingin memberikan sedikit lebih banyak konteks pada permintaan API Anda, atau hanya untuk mengaitkan panggilan fungsi tambahan.
Lihatlah file ini untuk pembantu template terkini. Jika Anda memiliki lebih banyak pembantu template, silakan buat MR, kontribusi Anda dihargai!
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/flows/actions/template_helpers.lua
Ini adalah tindakan khusus yang saya gunakan sepanjang waktu untuk menggunakan jendela yang terlihat sebagai konteks agar AI menjawab pertanyaan inline apa pun.
....
-- 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
}
.... Ubah model dengan membuka panel parameter default ke (ctrl-o) atau cara Anda ke sana kemudian tekan enter () pada bidang model untuk mengubahnya. Ini harus mendaftar semua model yang tersedia dari penyedia LLM Anda. 
Di panel parameter , tambahkan dan hapus parameter dengan menggunakan tombol "A" dan "D" masing -masing 
Saat menggunakan OGPT , inti keybinding berikut tersedia di bawah config.chat.keymaps
https://github.com/huynle/ogpt.nvim/blob/main/lua/ogpt/config.lua#l51-l71
edit dan Strategi 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
Ketika panel parameter dibuka (dengan <Co> ), pengaturan dapat dimodifikasi dengan menekan Enter pada konfigurasi terkait. Pengaturan disimpan di seluruh sesi.
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 " ,
},
},
} Ketika Anda sering memperbarui tindakan Anda, saya akan merekomendasikan menambahkan tombol berikut ke konfigurasi ogpt lazy.nvim Anda. Ini hanya memuat ulang ogpt.nvim di tempat untuk Anda melihat tindakan Anda yang diperbarui.
...
-- other config options here
keys = {
{
" <leader>ro " ,
" <Cmd>Lazy reload ogpt.nvim<CR> " ,
desc = " RELOAD ogpt " ,
},
...
}
-- other config options here
... Ini adalah contoh cara mengatur server model mixtral ollama yang mungkin duduk di server yang berbeda. Catatan dalam contoh di bawah ini Anda dapat:
secret_model adalah alias ke mixtral-8-7b , jadi dalam actions Anda, Anda dapat menggunakan secret_model . Ini berguna ketika Anda memiliki beberapa penyedia yang memiliki kekuatan yang sama dengan Mixtral, dan Anda ingin menukar berbagai penyedia untuk digunakan, berdasarkan lingkungan pengembangan, atau untuk alasan lain.mixtral-8-7b dalam contoh ini, model ini akan muncul dalam opsi model Anda dalam tindakan chat dan edit Anda.conform_message_fn digunakan untuk mengganti fungsi penyedia conform_message default. Fungsi ini memungkinkan pijat parameter permintaan API agar sesuai dengan model spesifik. Ini sangat berguna ketika Anda perlu memodifikasi pesan agar sesuai dengan templat model yang dilatih.conform_request_fn digunakan untuk mengesampingkan fungsi penyedia conform_request default. Fungsi ini (atau fungsi default penyedia) dipanggil di bagian paling akhir, tepat sebelum melakukan panggilan API. Pijat akhir dapat dilakukan di sini. -- 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
Jika Anda menyukai pengaturan edgy.nvim , maka gunakan sesuatu seperti ini untuk opsi pengaturan plugin Anda untuk edgy.nvim . Setelah ini diatur, pastikan Anda mengaktifkan opsi edgy = true dalam opsi konfigurasi Anda untuk 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 , default adalah ollamaOGPTRun menunjukkan pemetik teleskop type="popup" dan strategy="display" -- or append, prepend, replace, quick_fix , "r" dan "a" dapat digunakan untuk "mengganti Terima kasih kepada penulis jackMort/ChatGPT.nvim karena telah membuat kerangka kerja yang mulus untuk berinteraksi dengan OGPT di Neovim!
Beli saya kopi