You API integration (#203)

* Ability to configure custom service

* Add example preset templates, rename module

* Custom service client impl

* Add YOU API integration

* Remove/ignore generated antlr classes

* Remove text completion models(deprecated)

* Remove unused code, fix settings state sync

* Display model name/icon in the tool window

* Update chat history UI

* Fix model/service sync

* Clear plugin state

* Fix minor bugs, add settings sync tests

* UI changes

* Separate model configuration

* Add support for overriding the completion path

* Update Find Bugs prompt
This commit is contained in:
Carl-Robert 2023-09-14 14:52:18 +03:00 committed by GitHub
parent a860054360
commit 37af74ebdf
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
125 changed files with 1673 additions and 1537 deletions

View file

@ -5,28 +5,23 @@ import com.intellij.openapi.components.Service;
import com.knuddels.jtokkit.Encodings;
import com.knuddels.jtokkit.api.Encoding;
import com.knuddels.jtokkit.api.EncodingRegistry;
import ee.carlrobert.codegpt.settings.state.ModelSettingsState;
import ee.carlrobert.openai.client.completion.chat.request.ChatCompletionMessage;
import com.knuddels.jtokkit.api.EncodingType;
import ee.carlrobert.llm.client.openai.completion.chat.request.OpenAIChatCompletionMessage;
@Service
public final class EncodingManager {
private final EncodingRegistry registry = Encodings.newDefaultEncodingRegistry();
private Encoding encoding;
private final Encoding encoding = registry.getEncoding(EncodingType.CL100K_BASE);
private EncodingManager() {
setEncoding(ModelSettingsState.getInstance().getCompletionModel());
}
public static EncodingManager getInstance() {
return ApplicationManager.getApplication().getService(EncodingManager.class);
}
public void setEncoding(String modelName) {
this.encoding = registry.getEncodingForModel(modelName).orElseThrow();
}
public int countMessageTokens(ChatCompletionMessage message) {
public int countMessageTokens(OpenAIChatCompletionMessage message) {
var tokensPerMessage = 4; // every message follows <|start|>{role/name}\n{content}<|end|>\n
return encoding.countTokens(message.getRole() + message.getContent()) + tokensPerMessage;
}