anylang
Version:
A translator's kit that uses the free APIs of Google Translate, Yandex, Bing, ChatGPT, and other LLMs
41 lines (39 loc) • 6.29 kB
JavaScript
import { LLMTranslator, } from '../LLMTranslator';
import { ChatGPTLLMFetcher } from './ChatGPTLLMFetcher';
export class ChatGPTLLMTranslator extends LLMTranslator {
constructor(config) {
var _a, _b, _c, _d;
const llm = new ChatGPTLLMFetcher({
apiKey: config.apiKey,
model: config.model,
apiOrigin: config.apiOrigin,
});
super(llm, {
getPrompt: config.getPrompt,
retryOptions: {
retryLimit: (_a = config.retryOptions) === null || _a === void 0 ? void 0 : _a.retryLimit,
retryTimeout: (_b = config.retryOptions) === null || _b === void 0 ? void 0 : _b.retryTimeout,
maxRetryTimeout: (_c = config.retryOptions) === null || _c === void 0 ? void 0 : _c.maxRetryTimeout,
retryBackoffFactor: (_d = config.retryOptions) === null || _d === void 0 ? void 0 : _d.retryBackoffFactor,
},
});
}
}
ChatGPTLLMTranslator.translatorName = 'ChatGPTLLMTranslator';
ChatGPTLLMTranslator.isRequiredKey = () => true;
ChatGPTLLMTranslator.isSupportedAutoFrom = () => true;
// ChatGPT docs don’t list supported languages for text models, we can use the list for text-to-speech instead
// source: https://platform.openai.com/docs/guides/text-to-speech#supported-languages
ChatGPTLLMTranslator.getSupportedLanguages = () => {
// eslint-disable
// prettier-ignore
return [
"ar", "bn", "bg", "zh", "hr", "cs", "da", "nl", "en",
"et", "fa", "fi", "fr", "de", "el", "gu", "he", "hi", "hu",
"id", "it", "ja", "kn", "ko", "lv", "lt", "ml", "mr", "no",
"pl", "pt", "ro", "ru", "sr", "sk", "sl", "es", "sw", "sv",
"ta", "te", "th", "tr", "uk", "ur", "vi"
];
// eslint-enable
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRyYW5zbGF0b3JzL0xMTVRyYW5zbGF0b3JzL0NoYXRHUFRMTE1UcmFuc2xhdG9yL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixhQUFhLEdBR2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsYUFBYTtJQUN0RCxZQUFZLE1BTVg7O1FBQ0EsTUFBTSxHQUFHLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztZQUNqQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07WUFDckIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztTQUMzQixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsR0FBRyxFQUFFO1lBQ1YsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQzNCLFlBQVksRUFBRTtnQkFDYixVQUFVLEVBQUUsTUFBQSxNQUFNLENBQUMsWUFBWSwwQ0FBRSxVQUFVO2dCQUMzQyxZQUFZLEVBQUUsTUFBQSxNQUFNLENBQUMsWUFBWSwwQ0FBRSxZQUFZO2dCQUMvQyxlQUFlLEVBQUUsTUFBQSxNQUFNLENBQUMsWUFBWSwwQ0FBRSxlQUFlO2dCQUNyRCxrQkFBa0IsRUFBRSxNQUFBLE1BQU0sQ0FBQyxZQUFZLDBDQUFFLGtCQUFrQjthQUMzRDtTQUNELENBQUMsQ0FBQztJQUNKLENBQUM7O0FBRXNCLG1DQUFjLEdBQVcsc0JBQXNCLENBQUM7QUFDekQsa0NBQWEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDM0Isd0NBQW1CLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRS9DLDhHQUE4RztBQUM5RyxxRkFBcUY7QUFDdkUsMENBQXFCLEdBQUcsR0FBYSxFQUFFO0lBQ3BELGlCQUFpQjtJQUNqQixrQkFBa0I7SUFDbEIsT0FBTztRQUNOLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtRQUNwRCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1FBQzFELElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7UUFDMUQsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtRQUMxRCxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO0tBQ3hDLENBQUM7SUFDRixnQkFBZ0I7QUFDakIsQ0FBQyxDQUFDIiwiZmlsZSI6InRyYW5zbGF0b3JzL0xMTVRyYW5zbGF0b3JzL0NoYXRHUFRMTE1UcmFuc2xhdG9yL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0TExNVHJhbnNsYXRvcixcblx0TExNVHJhbnNsYXRvclJldHJ5T3B0aW9ucyxcblx0UHJvbXB0R2VuZXJhdG9yLFxufSBmcm9tICcuLi9MTE1UcmFuc2xhdG9yJztcbmltcG9ydCB7IENoYXRHUFRMTE1GZXRjaGVyIH0gZnJvbSAnLi9DaGF0R1BUTExNRmV0Y2hlcic7XG5cbmV4cG9ydCBjbGFzcyBDaGF0R1BUTExNVHJhbnNsYXRvciBleHRlbmRzIExMTVRyYW5zbGF0b3Ige1xuXHRjb25zdHJ1Y3Rvcihjb25maWc6IHtcblx0XHRhcGlLZXk6IHN0cmluZztcblx0XHRtb2RlbD86IHN0cmluZztcblx0XHRnZXRQcm9tcHQ/OiBQcm9tcHRHZW5lcmF0b3I7XG5cdFx0YXBpT3JpZ2luPzogc3RyaW5nO1xuXHRcdHJldHJ5T3B0aW9ucz86IExMTVRyYW5zbGF0b3JSZXRyeU9wdGlvbnM7XG5cdH0pIHtcblx0XHRjb25zdCBsbG0gPSBuZXcgQ2hhdEdQVExMTUZldGNoZXIoe1xuXHRcdFx0YXBpS2V5OiBjb25maWcuYXBpS2V5LFxuXHRcdFx0bW9kZWw6IGNvbmZpZy5tb2RlbCxcblx0XHRcdGFwaU9yaWdpbjogY29uZmlnLmFwaU9yaWdpbixcblx0XHR9KTtcblx0XHRzdXBlcihsbG0sIHtcblx0XHRcdGdldFByb21wdDogY29uZmlnLmdldFByb21wdCxcblx0XHRcdHJldHJ5T3B0aW9uczoge1xuXHRcdFx0XHRyZXRyeUxpbWl0OiBjb25maWcucmV0cnlPcHRpb25zPy5yZXRyeUxpbWl0LFxuXHRcdFx0XHRyZXRyeVRpbWVvdXQ6IGNvbmZpZy5yZXRyeU9wdGlvbnM/LnJldHJ5VGltZW91dCxcblx0XHRcdFx0bWF4UmV0cnlUaW1lb3V0OiBjb25maWcucmV0cnlPcHRpb25zPy5tYXhSZXRyeVRpbWVvdXQsXG5cdFx0XHRcdHJldHJ5QmFja29mZkZhY3RvcjogY29uZmlnLnJldHJ5T3B0aW9ucz8ucmV0cnlCYWNrb2ZmRmFjdG9yLFxuXHRcdFx0fSxcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdHJhbnNsYXRvck5hbWU6IHN0cmluZyA9ICdDaGF0R1BUTExNVHJhbnNsYXRvcic7XG5cdHB1YmxpYyBzdGF0aWMgaXNSZXF1aXJlZEtleSA9ICgpID0+IHRydWU7XG5cdHB1YmxpYyBzdGF0aWMgaXNTdXBwb3J0ZWRBdXRvRnJvbSA9ICgpID0+IHRydWU7XG5cblx0Ly8gQ2hhdEdQVCBkb2NzIGRvbuKAmXQgbGlzdCBzdXBwb3J0ZWQgbGFuZ3VhZ2VzIGZvciB0ZXh0IG1vZGVscywgd2UgY2FuIHVzZSB0aGUgbGlzdCBmb3IgdGV4dC10by1zcGVlY2ggaW5zdGVhZFxuXHQvLyBzb3VyY2U6IGh0dHBzOi8vcGxhdGZvcm0ub3BlbmFpLmNvbS9kb2NzL2d1aWRlcy90ZXh0LXRvLXNwZWVjaCNzdXBwb3J0ZWQtbGFuZ3VhZ2VzXG5cdHB1YmxpYyBzdGF0aWMgZ2V0U3VwcG9ydGVkTGFuZ3VhZ2VzID0gKCk6IHN0cmluZ1tdID0+IHtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZVxuXHRcdC8vIHByZXR0aWVyLWlnbm9yZVxuXHRcdHJldHVybiBbXG5cdFx0XHRcImFyXCIsIFwiYm5cIiwgXCJiZ1wiLCBcInpoXCIsIFwiaHJcIiwgXCJjc1wiLCBcImRhXCIsIFwibmxcIiwgXCJlblwiLFxuXHRcdFx0XCJldFwiLCBcImZhXCIsIFwiZmlcIiwgXCJmclwiLCBcImRlXCIsIFwiZWxcIiwgXCJndVwiLCBcImhlXCIsIFwiaGlcIiwgXCJodVwiLFxuXHRcdFx0XCJpZFwiLCBcIml0XCIsIFwiamFcIiwgXCJrblwiLCBcImtvXCIsIFwibHZcIiwgXCJsdFwiLCBcIm1sXCIsIFwibXJcIiwgXCJub1wiLFxuXHRcdFx0XCJwbFwiLCBcInB0XCIsIFwicm9cIiwgXCJydVwiLCBcInNyXCIsIFwic2tcIiwgXCJzbFwiLCBcImVzXCIsIFwic3dcIiwgXCJzdlwiLFxuXHRcdFx0XCJ0YVwiLCBcInRlXCIsIFwidGhcIiwgXCJ0clwiLCBcInVrXCIsIFwidXJcIiwgXCJ2aVwiXG5cdFx0XTtcblx0XHQvLyBlc2xpbnQtZW5hYmxlXG5cdH07XG59XG4iXX0=