ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Open​AI completion

Sublime Text OpenAI completion plugin with GPT-4 support!

Details

Installs

  • Total 3K
  • Win 2K
  • Mac 1K
  • Linux 532
Apr 25 Apr 24 Apr 23 Apr 22 Apr 21 Apr 20 Apr 19 Apr 18 Apr 17 Apr 16 Apr 15 Apr 14 Apr 13 Apr 12 Apr 11 Apr 10 Apr 9 Apr 8 Apr 7 Apr 6 Apr 5 Apr 4 Apr 3 Apr 2 Apr 1 Mar 31 Mar 30 Mar 29 Mar 28 Mar 27 Mar 26 Mar 25 Mar 24 Mar 23 Mar 22 Mar 21 Mar 20 Mar 19 Mar 18 Mar 17 Mar 16 Mar 15 Mar 14 Mar 13 Mar 12 Mar 11
Windows 1 2 3 5 3 5 3 2 2 4 1 2 0 1 7 4 2 1 0 5 6 0 4 4 2 2 1 4 6 3 0 1 3 2 1 3 3 2 4 1 2 2 1 4 5 3
Mac 3 5 3 1 3 2 3 7 7 0 3 1 1 2 2 2 3 5 2 1 3 2 3 4 2 1 0 2 3 4 6 2 3 3 0 4 5 4 6 6 2 5 2 1 3 3
Linux 0 2 0 3 1 1 3 1 0 0 3 2 0 1 2 3 0 1 0 0 3 1 5 2 2 1 1 0 2 6 3 3 1 2 3 3 3 3 2 0 0 0 1 2 6 1

Readme

Source
raw.​githubusercontent.​com

Star on GitHub

OpenAI Sublime Text Plugin

tldr;

OpenAI Completion is a Sublime Text plugin that uses LLM models to provide first class code assistant support within the editor.

It's not locked with just OpenAI anymore. llama.cpp server and ollama supported as well.

Features

  • Code manipulation (append, insert and edit) selected code with OpenAI models.
  • Chat mode powered by whatever model you'd like.
  • GPT-4 support.
  • llama.cpp's server, Ollama and all the rest OpenAI'ish API compatible.
  • Dedicated chats histories and assistant settings for a projects.
  • Ability to send whole files or their parts as a context expanding.
  • Markdown syntax with code languages syntax highlight (Chat mode only).
  • Server Side Streaming (SSE) (i.e. you don't have to wait for ages till GPT-4 print out something).
  • Status bar various info: model name, mode, sent/received tokens.
  • Proxy support.

ChatGPT completion demo

https://github.com/yaroslavyaroslav/OpenAI-sublime-text/assets/16612247/37b98cc2-e9cd-46a6-ac5d-03845313096b

video sped up to 1.7x


https://github.com/yaroslavyaroslav/OpenAI-sublime-text/assets/16612247/69f609f3-336d-48e8-a574-3cb7fda5822c

video sped up to 1.7x

Requirements

  • Sublime Text 4
  • llama.cpp, ollama installed OR
  • Remote llm service provider API key, e.g. OpenAI

Installation

  1. Install the Sublime Text Package Control plugin if you haven't done this before.
  2. Open the command palette and type Package Control: Install Package.
  3. Type OpenAI and press Enter.

Usage

AI Assistance use case

ChatGPT mode works the following way:

  1. Select some text or even the whole tabs to include them in request
  2. Run either OpenAI: Chat Model Select or OpenAI: Chat Model Select With Tabs commands.
  3. Input a request in input window if any.
  4. The model will print a response in output panel by default, but you can switch that to a separate tab with OpenAI: Open in Tab.
  5. To get an existing chat in a new window run OpenAI: Refresh Chat.
  6. To reset history OpenAI: Reset Chat History command to rescue.

[!NOTE] You suggested to bind at least OpenAI: New Message, OpenAI: Chat Model Select and OpenAI: Show output panel in sake for convenience, you can do that in plugin settings.

Chat history management

You can separate a chat history and assistant settings for a given project by appending the following snippet to its settings:

{   
    "settings": {
        "ai_assistant": {
            "cache_prefix": "your_name_project"
        }
    }
}

Additional request context management

You can add a few things to your request: - multi-line selection within a single file - multiple files within a single View Group

To perform the former just select something within an active view and initiate the request this way without switching to another tab, selection would be added to a request as a preceding message (each selection chunk would be split by a new line).

To send the whole file(s) in advance to request you should super+button1 on them to make all tabs of them to become visible in a single view group and then run [New Message|Chat Model] with Sheets command as shown on the screen below. Pay attention, that in given example only README.md and 4.0.0.md will be sent to a server, but not a content of the AI chat.

[!NOTE] It's also doesn't matter whether the file persists on a disc or it's just a virtual buffer with a text in it, if they're selected, their content will be send either way.

In buffer llm use case

  1. You can pick one of the following modes: append, replace, insert. They're quite self-descriptive. They should be set up in assistant settings to take effect.
  2. Select some text (they're useless otherwise) to manipulate with and hit OpenAI: New Message.
  3. The plugin will response accordingly with appending, replacing or inserting some text.

[!IMPORTANT] Yet this is a standalone mode, i.e. an existing chat history won't be sent to a server on a run.

[!NOTE] A more detailed manual, including various assistant configuration examples, can be found within the plugin settings.

Other features

Open Source models support (llama.cpp, ollama)

  1. Replace "url" setting of a given model to point to whatever host you're server running on (e.g."http://localhost:8080").
  2. [Optional] Provide a "token" if your provider required one.
  3. Tweak "chat_model" to a model of your choice and you're set.

[!NOTE] You can set both url and token either global or on per assistant instance basis, thus being capable to freely switching between closed source and open sourced models within a single session.

Settings

The OpenAI Completion plugin has a settings file where you can set your OpenAI API key. This is required for the most of providers to work. To set your API key, open the settings within Preferences -> Package Settings -> OpenAI -> Settings and paste your API key in the token property, as follows:

{
    "token": "sk-your-token",
}

Key bindings

You can bind keys for a given plugin command in Preferences -> Package Settings -> OpenAI -> Key Bindings. For example you can bind “New Message” command like this:

{
    "keys": [ "super+k", "super+'" ],
    "command": "openai",
    "args": { "mode": "chat_completion" }
},

[Multi]Markdown syntax with syntax highlight support

It just works.

[!IMPORTANT] It's highly recommended to install the MultimarkdownEditing to apply broader set of languages with syntax highlighting.

Proxy support

You can setup it up by overriding the proxy property in the OpenAI completion settings like follow:

"proxy": {
    "address": "127.0.0.1", // required
    "port": 9898, // required
    "username": "account",
    "password": "sOmEpAsSwOrD"
}

Disclaimers

[!WARNING] All selected code will be sent to the OpenAI servers (if not using custom API provider) for processing, so make sure you have all necessary permissions to do so.

[!NOTE] This one was initially written at 80% written by a GPT3.5 back then. I was here mostly for debugging purposes, rather than digging ST API. This is a pure magic, I swear!