diff --git a/package.json b/package.json index 154b2439..e5533c56 100644 --- a/package.json +++ b/package.json @@ -1127,6 +1127,11 @@ ], "description": "%config.openai_api_model%" }, + "i18n-ally.translate.openai.systemPromptExtended": { + "type": "string", + "default": "", + "description": "OpenAI system prompt. This can be used to customize the behavior of the translation engine through natural language." + }, "i18n-ally.usage.scanningIgnore": { "type": "array", "items": { diff --git a/src/core/Config.ts b/src/core/Config.ts index 3eedd1c5..f941a12e 100644 --- a/src/core/Config.ts +++ b/src/core/Config.ts @@ -584,6 +584,10 @@ export class Config { return this.getConfig('translate.openai.apiModel') ?? 'gpt-3.5-turbo' } + static get openaiApiSystemPromptExtended() { + return this.getConfig('translate.openai.systemPromptExtended') + } + static get telemetry(): boolean { return workspace.getConfiguration().get('telemetry.enableTelemetry') as boolean } diff --git a/src/translators/engines/openai.ts b/src/translators/engines/openai.ts index 2cf2a9a8..59ad45b9 100644 --- a/src/translators/engines/openai.ts +++ b/src/translators/engines/openai.ts @@ -4,7 +4,7 @@ import { Config } from "~/core"; export default class OpenAITranslate extends TranslateEngine { apiRoot = "https://api.openai.com"; - systemPrompt = "You are a professional translation engine. Please translate text without explanation."; + baseSystemPrompt = "You are a professional translation engine. Please translate text without explanation."; async translate(options: TranslateOptions) { let apiKey = Config.openaiApiKey; @@ -12,6 +12,7 @@ export default class OpenAITranslate extends TranslateEngine { if (Config.openaiApiRoot) apiRoot = Config.openaiApiRoot.replace(/\/$/, ""); let model = Config.openaiApiModel; + const systemPrompt = Config.openaiApiSystemPromptExtended ? this.baseSystemPrompt + Config.openaiApiSystemPromptExtended : this.baseSystemPrompt; const response = await axios.post( `${apiRoot}/v1/chat/completions`, { @@ -24,7 +25,7 @@ export default class OpenAITranslate extends TranslateEngine { messages: [ { role: "system", - content: this.systemPrompt, + content: systemPrompt, }, { role: "user",