dengun_ai-admin-client
Version:
Cliente simples para integração com o AI Admin Dashboard - Plug and Play
159 lines (135 loc) • 4.75 kB
text/typescript
import { AiAdminClient } from '../src/index';
async function exemploBasico() {
console.log('🚀 Iniciando exemplo do AI Admin Client v2.0\n');
// 1. Configuração simples - apenas 3 parâmetros obrigatórios
const client = new AiAdminClient({
dashboardUrl: 'http://localhost:3000',
botId: 'exemplo-bot',
botSecret: 'secret-123',
options: {
debug: true, // Ativar logs para o exemplo
autoReportUsage: true,
autoReportErrors: true
}
});
try {
// 2. Inicializar cliente (conecta ao dashboard)
console.log('📡 Conectando ao dashboard...');
await client.initialize();
console.log('✅ Conectado com sucesso!\n');
// 3. Criar sessão para usuário
console.log('👤 Criando sessão para usuário...');
const session = await client.createUserSession('user-123', 'tenant-456', {
userAgent: 'ExemploApp/1.0',
ip: '192.168.1.100'
});
console.log(`✅ Sessão criada: ${session.sessionId}\n`);
// 4. Simular uso do bot
console.log('🤖 Simulando interações do bot...');
// Primeira interação - Chat
await client.reportUsage({
sessionId: session.sessionId,
userId: 'user-123',
tenantId: 'tenant-456',
action: 'chat_message',
tokensUsed: 50,
metadata: { messageType: 'text', responseTime: 1200 }
});
console.log('📊 Uso reportado: Chat (50 tokens)');
// Segunda interação - Geração de imagem
await client.reportUsage({
sessionId: session.sessionId,
userId: 'user-123',
tenantId: 'tenant-456',
action: 'image_generation',
tokensUsed: 100,
metadata: { imageSize: '1024x1024', style: 'realistic' }
});
console.log('📊 Uso reportado: Imagem (100 tokens)');
// 5. Simular um erro (para demonstrar relatório de erros)
console.log('\n⚠️ Simulando um erro...');
await client.reportError({
sessionId: session.sessionId,
userId: 'user-123',
tenantId: 'tenant-456',
error: 'Rate limit exceeded',
errorCode: 'RATE_LIMIT_ERROR',
context: {
currentRequests: 100,
limit: 100,
resetTime: Date.now() + 3600000
}
});
console.log('🐛 Erro reportado: Rate limit');
// 6. Verificar status e estatísticas
console.log('\n📈 Verificando status...');
const status = await client.getConnectionStatus();
console.log('Conexão:', status.connected ? '🟢 Ativa' : '🔴 Inativa');
const stats = await client.getUsageStats();
console.log('Estatísticas:', {
totalTokens: stats.local?.totalTokens || 0,
totalInterações: stats.local?.totalUsage || 0
});
const sessionsAtivas = client.getActiveSessions();
console.log('Sessões ativas:', sessionsAtivas.length);
// 7. Encerrar sessão
console.log('\n🔚 Encerrando sessão...');
await client.endUserSession(session.sessionId);
console.log('✅ Sessão encerrada');
} catch (error) {
console.error('❌ Erro durante execução:', error);
} finally {
// 8. Sempre encerrar o cliente
console.log('\n🔌 Desconectando cliente...');
await client.shutdown();
console.log('✅ Cliente desconectado');
}
}
// Exemplo de integração com Express.js
function exemploExpress() {
console.log(`
🌐 Exemplo de integração com Express.js:
import express from 'express';
import { AiAdminClient } from 'dengun_ai-admin-client';
const app = express();
const aiClient = new AiAdminClient({
dashboardUrl: process.env.DASHBOARD_URL!,
botId: process.env.BOT_ID!,
botSecret: process.env.BOT_SECRET!
});
// Inicializar cliente na startup
await aiClient.initialize();
app.post('/api/chat', async (req, res) => {
const { userId, tenantId, message } = req.body;
try {
// Criar sessão
const session = await aiClient.createUserSession(userId, tenantId);
// Processar mensagem (sua lógica aqui)
const response = await processMessage(message);
// Reportar uso automaticamente
await aiClient.reportUsage({
sessionId: session.sessionId,
userId,
tenantId,
action: 'chat',
tokensUsed: response.tokensUsed
});
res.json({ response: response.text, sessionId: session.sessionId });
} catch (error) {
// Erros são reportados automaticamente
res.status(500).json({ error: 'Erro interno' });
}
});
`);
}
// Executar exemplos
if (require.main === module) {
exemploBasico()
.then(() => {
console.log('\n📚 Mais exemplos disponíveis:');
exemploExpress();
console.log('\n🎉 Exemplo concluído! Package está pronto para uso.');
})
.catch(console.error);
}
export { exemploBasico, exemploExpress };