UNPKG

hua-sdk-lite

Version:

HUA Lite API SDK - Emotional AI Chatbot Integration

305 lines (234 loc) 7.3 kB
# HUA SDK Lite v2.1.1 TypeScript SDK for HUA Lite API - Emotional AI Chatbot Integration [![npm version](https://badge.fury.io/js/hua-sdk-lite.svg)](https://badge.fury.io/js/hua-sdk-lite) [![npm downloads](https://img.shields.io/npm/dm/hua-sdk-lite.svg)](https://www.npmjs.com/package/hua-sdk-lite) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Node.js](https://img.shields.io/badge/Node.js-339933?logo=nodedotjs&logoColor=white)](https://nodejs.org/) [![Version](https://img.shields.io/badge/version-2.1.1-blue.svg)](https://github.com/HUA-Labs/hua-sdk-lite/tree/v2) [한국어 설명 보기 (README.md)](./README.md) --- ## ✨ Key Features (2.1.1) - **Accurate API Key Validation** (Guest: 64-char random, Member: hua_ prefix) - **Smart Retry Logic** (Automatic retry for 502/503/504 server errors) - **Comprehensive Error Handling** (17+ test cases for all error scenarios) - **Full TypeScript Support & Enhanced DX** - **Emotion-based responses, multi-language, credits, events, batch, and more** --- ## 📦 Installation ```bash npm install hua-sdk-lite@2.1.1 ``` --- ## 🚀 Quick Start ```typescript import { HUALite } from 'hua-sdk-lite'; // Initialize SDK (guest key or member key) const hua = new HUALite('hua_wut4p3hneulrt2ud3mi9rn'); // Member key example // or // const hua = new HUALite('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'); // Guest key example // Chat with AI const response = await hua.chat({ message: "I had a tough day today, please comfort me!", tone: "gentle", mode: "empathy", tier: 1.0, provider: "openai" }); console.log(response.data.message); // "I'm so sorry you had a tough day... You've been through so much today. I can see how hard you've been working. Tomorrow will be a better day! 💕" ``` --- ## 🔑 API Key Issuance ```typescript // Issue guest API key (64-char random) const apiKey = await HUALite.issueKey(); console.log(apiKey); // e.g. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_" ``` --- ## 🎯 Advanced Usage ```typescript // Custom configuration const hua = new HUALite('hua_wut4p3hneulrt2ud3mi9rn', { baseUrl: 'https://api.hua.com', timeout: 30000, retries: 2, retryDelay: 1000 }); // Chat with different emotions const responses = await Promise.all([ hua.chat({ message: "Hello!", tone: "gentle", mode: "empathy" }), hua.chat({ message: "Cheer me up!", tone: "cheerful", mode: "praise" }), hua.chat({ message: "Thank you", tone: "warm", mode: "praise" }) ]); ``` --- ## 🎨 Supported Options ### Tone - `gentle` - Soft and comforting - `warm` - Friendly and warm - `cheerful` - Bright and positive - `quirky` - Fun and unique - `delicate` - Polite and refined ### Mode - `empathy` - Empathetic and understanding - `analysis` - Analytical and objective - `suggestion` - Helpful and solution-oriented - `praise` - Encouraging and positive - `playful` - Fun and lighthearted ### Tier - `1.0` - Basic (1 credit) - `2.0` - Advanced (2 credits) - `3.0` - Premium (3 credits) --- ## 📋 Response Structure ```typescript interface ChatResponse { success: boolean; data: { message: string; usage: { total_tokens: number; input_tokens: number; output_tokens: number; }; credits?: { used: number; remaining: number; tier: string; }; tier: string; mode: string; tone: string; authenticated: boolean; userId?: string; note?: string; }; } ``` --- ## ⚠️ Error Handling & Retry ```typescript try { const response = await hua.chat({ message: "Hello!" }); } catch (error) { if (error.code === 'INSUFFICIENT_CREDITS') { console.log('Insufficient credits.'); } else if (error.code === 'RATE_LIMIT_EXCEEDED') { console.log('Rate limit exceeded.'); } else if (error.code === 'SERVER_ERROR') { console.log('Server error, retrying automatically...'); } else { console.error(error); } } ```text - 502/503/504 server errors are automatically retried (configurable) - All errors are type-safe and can be handled by code --- ## 🎯 Convenience Methods ```typescript // Pre-configured chat methods await hua.gentleChat("I'm feeling sad today"); await hua.warmChat("I need some advice"); await hua.cheerfulChat("Make me happy!"); await hua.analyzeChat("Help me understand this situation"); await hua.suggestChat("I need solutions for my problem"); ``` --- ## 🔧 Configuration ```typescript const hua = new HUALite('YOUR_API_KEY', { baseUrl: 'https://api.hua.ai.kr', // API base URL timeout: 30000, // Request timeout (ms) retries: 2, // Retry attempts retryDelay: 1000 // Retry delay (ms) }); ``` --- ## 📊 Event System ```typescript // Listen to SDK events hua.on('request', (event) => { console.log('Request sent:', event.data.url); }); hua.on('response', (event) => { console.log('Response received:', event.data.status); }); hua.on('error', (event) => { console.log('Error occurred:', event.data.error); }); ``` --- ## 🧪 Validation ```typescript // Validate inputs if (hua.validateTone('gentle')) { // Valid tone } if (hua.validateMode('empathy')) { // Valid mode } if (hua.validateTier(1.0)) { // Valid tier } ``` --- ## 🧪 Testing & Quality - **17+ Jest-based tests** for all major features, errors, and retry logic - Safe to use in real-world production environments --- ## 📚 Documentation - [API Documentation](https://api.hua.ai.kr/docs) - [Online Demo](https://api.hua.ai.kr/api-test) - [API Key Management](https://api.ai.kr/api-key) ## 🤝 Examples ### Basic Chatbot ```typescript import { HUALite } from 'hua-sdk-lite'; const hua = new HUALite('YOUR_API_KEY'); async function chatWithUser(userMessage: string) { try { const response = await hua.chat({ message: userMessage, tone: 'gentle', mode: 'empathy', tier: 1.0 }); return response.data.message; } catch (error) { console.error('Chat error:', error.message); return 'Sorry, I encountered an error. Please try again.'; } } ``` ### Multi-language Support ```typescript // Korean const koreanResponse = await hua.chat({ message: "오늘 하루 힘들었어요", lang: "ko", tone: "gentle" }); // English const englishResponse = await hua.chat({ message: "I had a tough day", lang: "en", tone: "warm" }); ``` ### Batch Processing ```typescript const messages = [ "Hello, how are you?", "I need some advice", // ... ]; const results = await hua.batchChat(messages.map(msg => ({ message: msg, tone: 'gentle', mode: 'empathy' }))); ``` --- ## License MIT License ## Support - Issues: [GitHub Issues](https://github.com/HUA-Labs/hua-sdk-lite/issues) - Email: <echonet.ais@gmail.com>