UNPKG

hua-sdk-lite

Version:

HUA Lite API SDK - Emotional AI Chatbot Integration

277 lines (276 loc) β€’ 12 kB
"use strict"; // 🌟 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;