hua-sdk-lite
Version:
HUA Lite API SDK - Emotional AI Chatbot Integration
277 lines (276 loc) β’ 12 kB
JavaScript
;
// π HUA SDK Lite v2.0.0 - λ©μΈ SDK ν΄λμ€
// 리λ¬μ΄μ λ§μμ²λΌ μ¬μ©μλ₯Ό λ°°λ €νλ λ°λ»ν SDK π
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatErrorMessage = exports.isRetryableError = exports.isHUAError = exports.createErrorFromResponse = exports.RetryLimitExceededError = exports.ConfigurationError = exports.OpenAIApiError = exports.InvalidLanguageError = exports.InvalidTierError = exports.InvalidModeError = exports.InvalidToneError = exports.MissingMessageError = exports.InsufficientCreditsError = exports.RateLimitExceededError = exports.GuestKeyLimitExceededError = exports.InvalidApiKeyError = exports.AuthenticationError = exports.ServerError = exports.TimeoutError = exports.NetworkError = exports.ValidationError = exports.MissingApiKeyError = exports.HUAError = exports.HUALite = void 0;
const client_1 = require("./client");
const types_1 = require("./types");
// ===== ν리μ
μ 보 =====
const PRESET_INFO = {
gentle: {
name: 'λΆλλ¬μ΄',
description: 'λ°λ»νκ³ μλ‘κ° λλ λΆλλ¬μ΄ ν€',
examples: ['νλ€ λ μλ‘λ°κ³ μΆμ΄μ', 'λ§μμ΄ μνμ', 'μ‘°μ©ν λ€μ΄μ£ΌμΈμ']
},
warm: {
name: 'λ°λ»ν',
description: 'μΉκ·Όνκ³ λ°λ»ν λλμ ν€',
examples: ['μΉκ΅¬μ²λΌ λννκ³ μΆμ΄μ', 'νΈμνκ² μ΄μΌκΈ°ν΄μ', 'λ°λ»ν μ‘°μΈμ΄ νμν΄μ']
},
cheerful: {
name: 'λ°μ',
description: 'νκΈ°μ°¨κ³ κΈμ μ μΈ ν€',
examples: ['κΈ°λΆμ μ’κ² ν΄μ£ΌμΈμ', 'νλ΄κ³ μΆμ΄μ', 'κΈμ μ μΈ λ§μμ΄ νμν΄μ']
},
quirky: {
name: 'λ
νΉν',
description: 'μ¬λ―Έμκ³ λ
νΉν ν€',
examples: ['μ¬λ―Έμκ² λννκ³ μΆμ΄μ', 'μ°½μμ μΈ λ΅λ³μ΄ νμν΄μ', 'νΉλ³ν κ΄μ μ μν΄μ']
},
delicate: {
name: 'μ¬μΈν',
description: 'μ μ€νκ³ μ¬μΈν ν€',
examples: ['μ μ€νκ² λννκ³ μΆμ΄μ', 'μμ λ°λ₯Έ λ΅λ³μ΄ νμν΄μ', '곡μμ μΈ ν€μ μν΄μ']
}
};
const MODE_INFO = {
empathy: {
name: '곡κ°',
description: 'μ¬μ©μμ κ°μ μ 곡κ°νλ©° μλ‘νλ λͺ¨λ',
useCases: ['μλ‘κ° νμν λ', 'κ°μ μ λλκ³ μΆμ λ', '곡κ°λ°κ³ μΆμ λ']
},
analysis: {
name: 'λΆμ',
description: 'μν©μ λΆμνκ³ κ°κ΄μ μΈ κ΄μ μ μ 곡νλ λͺ¨λ',
useCases: ['λ¬Έμ λ₯Ό λΆμνκ³ μΆμ λ', 'κ°κ΄μ μΈ μ‘°μΈμ΄ νμν λ', 'μν©μ μ 리νκ³ μΆμ λ']
},
suggestion: {
name: 'μ μ',
description: 'ꡬ체μ μΈ ν΄κ²°μ±
μ΄λ μ μμ μ 곡νλ λͺ¨λ',
useCases: ['ν΄κ²°μ±
μ΄ νμν λ', 'λ°©ν₯μ μ μλ°κ³ μΆμ λ', 'μ€ν κ°λ₯ν μ‘°μΈμ μν λ']
},
praise: {
name: 'μΉμ°¬',
description: 'κΈμ μ μΈ λΆλΆμ μ°Ύμ μΉμ°¬νκ³ κ²©λ €νλ λͺ¨λ',
useCases: ['μμ κ°μ΄ νμν λ', 'μ±μ·¨λ₯Ό μΆνλ°κ³ μΆμ λ', 'κΈμ μ μΈ μλμ§κ° νμν λ']
},
playful: {
name: 'μ₯λμ€λ¬μ΄',
description: 'μ¬λ―Έμκ³ κ°λ²Όμ΄ λνλ₯Ό λλλ λͺ¨λ',
useCases: ['κΈ°λΆ μ νμ΄ νμν λ', 'μ¬λ―Έμλ λνλ₯Ό μν λ', 'μ€νΈλ μ€λ₯Ό νκ³ μΆμ λ']
}
};
const TIER_INFO = {
'1.0': {
name: 'κΈ°λ³Έ',
description: 'κ°λ¨νκ³ ν΅μ¬μ μΈ μλ΅',
creditCost: 1,
maxTokens: 300
},
'2.0': {
name: 'κ³ κΈ',
description: 'μμΈνκ³ νλΆν μλ΅',
creditCost: 2,
maxTokens: 500
},
'3.0': {
name: 'ν리미μ',
description: 'λ§€μ° μμΈνκ³ μ μμμ μΈ μλ΅',
creditCost: 3,
maxTokens: 800
}
};
// ===== λ©μΈ SDK ν΄λμ€ =====
class HUALite {
constructor(apiKey, config = {}) {
this.client = new client_1.HUALiteClient(apiKey, config);
}
// ===== λ©μΈ API λ©μλ =====
async chat(request) {
return this.client.chat(request);
}
async issueKey() {
return this.client.issueKey();
}
// ===== νΈμ λ©μλ =====
async gentleChat(message, options = {}) {
return this.chat({
message,
tone: 'gentle',
mode: 'empathy',
...options
});
}
async warmChat(message, options = {}) {
return this.chat({
message,
tone: 'warm',
mode: 'empathy',
...options
});
}
async cheerfulChat(message, options = {}) {
return this.chat({
message,
tone: 'cheerful',
mode: 'praise',
...options
});
}
async analyzeChat(message, options = {}) {
return this.chat({
message,
tone: 'delicate',
mode: 'analysis',
...options
});
}
async suggestChat(message, options = {}) {
return this.chat({
message,
tone: 'warm',
mode: 'suggestion',
...options
});
}
// ===== μ 보 μ‘°ν λ©μλ =====
getPresetInfo() {
return PRESET_INFO;
}
getModeInfo() {
return MODE_INFO;
}
getTierInfo() {
return TIER_INFO;
}
getAvailableTones() {
return [...types_1.TONE_PRESETS];
}
getAvailableModes() {
return [...types_1.MODE_PRESETS];
}
getAvailableTiers() {
return [...types_1.TIER_PRESETS];
}
getSupportedLanguages() {
return [...types_1.SUPPORTED_LANGS];
}
getAvailableProviders() {
return [...types_1.LLM_PROVIDERS];
}
// ===== μ νΈλ¦¬ν° λ©μλ =====
getApiKey() {
return this.client.getApiKey();
}
getConfig() {
return this.client.getConfig();
}
updateConfig(newConfig) {
this.client.updateConfig(newConfig);
}
// ===== μ΄λ²€νΈ μμ€ν
=====
on(event, listener) {
this.client.on(event, listener);
}
off(event, listener) {
this.client.off(event, listener);
}
// ===== κ²μ¦ λ©μλ =====
validateTone(tone) {
return types_1.TONE_PRESETS.includes(tone);
}
validateMode(mode) {
return types_1.MODE_PRESETS.includes(mode);
}
validateTier(tier) {
return types_1.TIER_PRESETS.includes(tier);
}
validateLanguage(lang) {
return types_1.SUPPORTED_LANGS.includes(lang);
}
validateProvider(provider) {
return types_1.LLM_PROVIDERS.includes(provider);
}
// ===== λ°°μΉ μ²λ¦¬ =====
async batchChat(requests) {
const promises = requests.map(request => this.chat(request));
return Promise.all(promises);
}
// ===== μ€νΈλ¦Ό μ²λ¦¬ (ν₯ν νμ₯) =====
async *streamChat(request) {
// νμ¬λ μΌλ° μλ΅μ μ€νΈλ¦ΌμΌλ‘ λ³ν
const response = await this.chat(request);
yield response.data.message;
}
}
exports.HUALite = HUALite;
// ===== μ μ λ©μλ =====
(function (HUALite) {
// μ μ API ν€ λ°κΈ
async function issueKey(baseUrl) {
const client = new client_1.HUALiteClient('dummy', { baseUrl });
return client.issueKey();
}
HUALite.issueKey = issueKey;
// κ²μ¦ μ νΈλ¦¬ν°
function validateApiKey(apiKey) {
return Boolean(apiKey && apiKey.trim().length > 0 && apiKey.startsWith('hua_'));
}
HUALite.validateApiKey = validateApiKey;
// ν리μ
μ 보
HUALite.presets = {
tones: PRESET_INFO,
modes: MODE_INFO,
tiers: TIER_INFO
};
// μμ
HUALite.constants = {
TONE_PRESETS: types_1.TONE_PRESETS,
MODE_PRESETS: types_1.MODE_PRESETS,
TIER_PRESETS: types_1.TIER_PRESETS,
SUPPORTED_LANGS: types_1.SUPPORTED_LANGS,
LLM_PROVIDERS: types_1.LLM_PROVIDERS
};
})(HUALite || (exports.HUALite = HUALite = {}));
// ===== νμ
μ¬λ΄λ³΄λ΄κΈ° =====
__exportStar(require("./types"), exports);
var errors_1 = require("./errors");
Object.defineProperty(exports, "HUAError", { enumerable: true, get: function () { return errors_1.HUAError; } });
Object.defineProperty(exports, "MissingApiKeyError", { enumerable: true, get: function () { return errors_1.MissingApiKeyError; } });
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return errors_1.ValidationError; } });
Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return errors_1.NetworkError; } });
Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return errors_1.TimeoutError; } });
Object.defineProperty(exports, "ServerError", { enumerable: true, get: function () { return errors_1.ServerError; } });
Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: function () { return errors_1.AuthenticationError; } });
Object.defineProperty(exports, "InvalidApiKeyError", { enumerable: true, get: function () { return errors_1.InvalidApiKeyError; } });
Object.defineProperty(exports, "GuestKeyLimitExceededError", { enumerable: true, get: function () { return errors_1.GuestKeyLimitExceededError; } });
Object.defineProperty(exports, "RateLimitExceededError", { enumerable: true, get: function () { return errors_1.RateLimitExceededError; } });
Object.defineProperty(exports, "InsufficientCreditsError", { enumerable: true, get: function () { return errors_1.InsufficientCreditsError; } });
Object.defineProperty(exports, "MissingMessageError", { enumerable: true, get: function () { return errors_1.MissingMessageError; } });
Object.defineProperty(exports, "InvalidToneError", { enumerable: true, get: function () { return errors_1.InvalidToneError; } });
Object.defineProperty(exports, "InvalidModeError", { enumerable: true, get: function () { return errors_1.InvalidModeError; } });
Object.defineProperty(exports, "InvalidTierError", { enumerable: true, get: function () { return errors_1.InvalidTierError; } });
Object.defineProperty(exports, "InvalidLanguageError", { enumerable: true, get: function () { return errors_1.InvalidLanguageError; } });
Object.defineProperty(exports, "OpenAIApiError", { enumerable: true, get: function () { return errors_1.OpenAIApiError; } });
Object.defineProperty(exports, "ConfigurationError", { enumerable: true, get: function () { return errors_1.ConfigurationError; } });
Object.defineProperty(exports, "RetryLimitExceededError", { enumerable: true, get: function () { return errors_1.RetryLimitExceededError; } });
Object.defineProperty(exports, "createErrorFromResponse", { enumerable: true, get: function () { return errors_1.createErrorFromResponse; } });
Object.defineProperty(exports, "isHUAError", { enumerable: true, get: function () { return errors_1.isHUAError; } });
Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return errors_1.isRetryableError; } });
Object.defineProperty(exports, "formatErrorMessage", { enumerable: true, get: function () { return errors_1.formatErrorMessage; } });
// ===== κΈ°λ³Έ λ΄λ³΄λ΄κΈ° =====
exports.default = HUALite;