summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md64
-rw-r--r--autoload/vim_ai_config.vim28
-rw-r--r--doc/vim-ai.txt42
3 files changed, 83 insertions, 51 deletions
diff --git a/README.md b/README.md
index 142a195..30e1368 100644
--- a/README.md
+++ b/README.md
@@ -260,24 +260,37 @@ Below are listed all available configuration options, along with their default v
Please note that there isn't any token limit imposed on chat model.
```vim
+" This prompt instructs model to be consise in order to be used inline in editor
+let s:initial_complete_prompt =<< trim END
+>>> system
+
+You are a general assistant.
+Answer shortly, consisely and only what you are asked.
+Do not provide any explanantion or comments if not requested.
+If you answer in a code, do not wrap it in markdown blocks.
+END
+
" :AI
-" - engine: complete | chat - see how to configure chat engine in the section below
+" - engine: chat | complete - see how to configure complete engine in the section below
" - options: openai config (see https://platform.openai.com/docs/api-reference/completions)
+" - options.initial_prompt: prompt prepended to every chat request (list of lines or string)
" - options.request_timeout: request timeout in seconds
" - options.enable_auth: enable authorization using openai key
" - options.selection_boundary: selection prompt wrapper (eliminates empty responses, see #20)
" - ui.paste_mode: use paste mode (see more info in the Notes below)
let g:vim_ai_complete = {
-\ "engine": "complete",
+\ "engine": "chat",
\ "options": {
-\ "model": "gpt-3.5-turbo-instruct",
-\ "endpoint_url": "https://api.openai.com/v1/completions",
-\ "max_tokens": 1000,
+\ "model": "gpt-4o",
+\ "endpoint_url": "https://api.openai.com/v1/chat/completions",
+\ "max_tokens": 0,
+\ "max_completion_tokens": 0,
\ "temperature": 0.1,
\ "request_timeout": 20,
\ "stream": 1,
\ "enable_auth": 1,
\ "selection_boundary": "#####",
+\ "initial_prompt": s:initial_complete_prompt,
\ },
\ "ui": {
\ "paste_mode": 1,
@@ -285,14 +298,15 @@ let g:vim_ai_complete = {
\}
" :AIEdit
-" - engine: complete | chat - see how to configure chat engine in the section below
+" - engine: chat | complete - see how to configure complete engine in the section below
" - options: openai config (see https://platform.openai.com/docs/api-reference/completions)
+" - options.initial_prompt: prompt prepended to every chat request (list of lines or string)
" - options.request_timeout: request timeout in seconds
" - options.enable_auth: enable authorization using openai key
" - options.selection_boundary: selection prompt wrapper (eliminates empty responses, see #20)
" - ui.paste_mode: use paste mode (see more info in the Notes below)
let g:vim_ai_edit = {
-\ "engine": "complete",
+\ "engine": "chat",
\ "options": {
\ "model": "gpt-3.5-turbo-instruct",
\ "endpoint_url": "https://api.openai.com/v1/completions",
@@ -374,39 +388,23 @@ let g:vim_ai_chat = {
\}
```
-### Using chat engine for completion and edits
-
-It is possible to configure chat models, such as `gpt-4o`, to be used in `:AI` and `:AIEdit` commands.
-These models are cheaper, but currently less suitable for code editing/completion, as they respond with human-like text and commentary.
+### Using complete engine for completion and edits
-Depending on the use case, a good initial prompt can help to instruct the chat model to respond in the desired way:
+OpenAI has recently marked [Completions API](https://platform.openai.com/docs/api-reference/completions) as a legacy API.
+Therefore `:AI` and `:AIEdit` use chat models by default.
+However it is still possible to configure and use it with models like `gpt-3.5-turbo-instruct`.
```vim
-let initial_prompt =<< trim END
->>> system
-
-You are going to play a role of a completion engine with following parameters:
-Task: Provide compact code/text completion, generation, transformation or explanation
-Topic: general programming and text editing
-Style: Plain result without any commentary, unless commentary is necessary
-Audience: Users of text editor and programmers that need to transform/generate text
-END
-
-let chat_engine_config = {
-\ "engine": "chat",
+let complete_engine_config = {
+\ "engine": "complete",
\ "options": {
-\ "model": "gpt-4o",
-\ "endpoint_url": "https://api.openai.com/v1/chat/completions",
-\ "max_tokens": 0,
-\ "temperature": 0.1,
-\ "request_timeout": 20,
-\ "selection_boundary": "",
-\ "initial_prompt": initial_prompt,
+\ "model": "gpt-3.5-turbo-instruct",
+\ "endpoint_url": "https://api.openai.com/v1/completions",
\ },
\}
-let g:vim_ai_complete = chat_engine_config
-let g:vim_ai_edit = chat_engine_config
+let g:vim_ai_complete = complete_engine_config
+let g:vim_ai_edit = complete_engine_config
```
## Custom commands
diff --git a/autoload/vim_ai_config.vim b/autoload/vim_ai_config.vim
index a9aeccf..991b320 100644
--- a/autoload/vim_ai_config.vim
+++ b/autoload/vim_ai_config.vim
@@ -1,32 +1,44 @@
let s:plugin_root = expand('<sfile>:p:h:h')
+let s:initial_complete_prompt =<< trim END
+>>> system
+
+You are a general assistant.
+Answer shortly, consisely and only what you are asked.
+Do not provide any explanantion or comments if not requested.
+If you answer in a code, do not wrap it in markdown blocks.
+END
let g:vim_ai_complete_default = {
-\ "engine": "complete",
+\ "engine": "chat",
\ "options": {
-\ "model": "gpt-3.5-turbo-instruct",
-\ "endpoint_url": "https://api.openai.com/v1/completions",
-\ "max_tokens": 1000,
+\ "model": "gpt-4o",
+\ "endpoint_url": "https://api.openai.com/v1/chat/completions",
+\ "max_tokens": 0,
+\ "max_completion_tokens": 0,
\ "temperature": 0.1,
\ "request_timeout": 20,
\ "stream": 1,
\ "enable_auth": 1,
\ "selection_boundary": "#####",
+\ "initial_prompt": s:initial_complete_prompt,
\ },
\ "ui": {
\ "paste_mode": 1,
\ },
\}
let g:vim_ai_edit_default = {
-\ "engine": "complete",
+\ "engine": "chat",
\ "options": {
-\ "model": "gpt-3.5-turbo-instruct",
-\ "endpoint_url": "https://api.openai.com/v1/completions",
-\ "max_tokens": 1000,
+\ "model": "gpt-4o",
+\ "endpoint_url": "https://api.openai.com/v1/chat/completions",
+\ "max_tokens": 0,
+\ "max_completion_tokens": 0,
\ "temperature": 0.1,
\ "request_timeout": 20,
\ "stream": 1,
\ "enable_auth": 1,
\ "selection_boundary": "#####",
+\ "initial_prompt": s:initial_complete_prompt,
\ },
\ "ui": {
\ "paste_mode": 1,
diff --git a/doc/vim-ai.txt b/doc/vim-ai.txt
index b5674e9..273f074 100644
--- a/doc/vim-ai.txt
+++ b/doc/vim-ai.txt
@@ -21,17 +21,28 @@ https://github.com/madox2/vim-ai
<selection> :AI {instruction} complete the selection using the instruction
Options: >
- let g:vim_ai_complete = {
- \ "engine": "complete",
+ let s:initial_complete_prompt =<< trim END
+ >>> system
+
+ You are a general assistant.
+ Answer shortly, consisely and only what you are asked.
+ Do not provide any explanantion or comments if not requested.
+ If you answer in a code, do not wrap it in markdown blocks.
+ END
+
+ let g:vim_ai_complete_default = {
+ \ "engine": "chat",
\ "options": {
- \ "model": "gpt-3.5-turbo-instruct",
- \ "endpoint_url": "https://api.openai.com/v1/completions",
- \ "max_tokens": 1000,
+ \ "model": "gpt-4o",
+ \ "endpoint_url": "https://api.openai.com/v1/chat/completions",
+ \ "max_tokens": 0,
+ \ "max_completion_tokens": 0,
\ "temperature": 0.1,
\ "request_timeout": 20,
\ "stream": 1,
\ "enable_auth": 1,
\ "selection_boundary": "#####",
+ \ "initial_prompt": s:initial_complete_prompt,
\ },
\ "ui": {
\ "paste_mode": 1,
@@ -48,17 +59,28 @@ https://platform.openai.com/docs/api-reference/completions
the instruction
Options: >
- let g:vim_ai_edit = {
- \ "engine": "complete",
+ let s:initial_complete_prompt =<< trim END
+ >>> system
+
+ You are a general assistant.
+ Answer shortly, consisely and only what you are asked.
+ Do not provide any explanantion or comments if not requested.
+ If you answer in a code, do not wrap it in markdown blocks.
+ END
+
+ let g:vim_ai_edit_default = {
+ \ "engine": "chat",
\ "options": {
- \ "model": "gpt-3.5-turbo-instruct",
- \ "endpoint_url": "https://api.openai.com/v1/completions",
- \ "max_tokens": 1000,
+ \ "model": "gpt-4o",
+ \ "endpoint_url": "https://api.openai.com/v1/chat/completions",
+ \ "max_tokens": 0,
+ \ "max_completion_tokens": 0,
\ "temperature": 0.1,
\ "request_timeout": 20,
\ "stream": 1,
\ "enable_auth": 1,
\ "selection_boundary": "#####",
+ \ "initial_prompt": s:initial_complete_prompt,
\ },
\ "ui": {
\ "paste_mode": 1,