UNPKG

aquanet-bot-lib

Version:

A library for building aquaculture chatbots with LLM integration

97 lines (96 loc) 6.22 kB
import { AquacultureTaskType } from '../types/llm'; import { LLMFactory } from '../llm/factory'; export class AquacultureService { constructor(config) { Object.defineProperty(this, "config", { enumerable: true, configurable: true, writable: true, value: void 0 }); this.config = config; } async analyzeWaterQuality(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.WATER_QUALITY_ANALYSIS, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.WATER_QUALITY_ANALYSIS); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.3 }); return response.content; } async diagnoseDiseases(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.DISEASE_DIAGNOSIS, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.DISEASE_DIAGNOSIS); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.3 }); return response.content; } async optimizeFeeding(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.FEEDING_OPTIMIZATION, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.FEEDING_OPTIMIZATION); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.4 }); return response.content; } async predictGrowth(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.GROWTH_PREDICTION, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.GROWTH_PREDICTION); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.4 }); return response.content; } async analyzeCosts(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.COST_ANALYSIS, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.COST_ANALYSIS); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.3 }); return response.content; } async getTechnicalAdvice(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.TECHNICAL_ADVICE, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.TECHNICAL_ADVICE); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.5 }); return response.content; } async analyzeMarket(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.MARKET_ANALYSIS, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.MARKET_ANALYSIS); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.5 }); return response.content; } async assessEnvironmentalImpact(data) { const provider = LLMFactory.getProvider(this.config); const prompt = this.buildPrompt(AquacultureTaskType.ENVIRONMENTAL_IMPACT, data); const systemPrompt = this.buildSystemPrompt(AquacultureTaskType.ENVIRONMENTAL_IMPACT); const response = await provider.generateResponse({ prompt, systemPrompt, temperature: 0.3 }); return response.content; } buildPrompt(taskType, data) { const dataStr = JSON.stringify(data, null, 2); return `Task: ${taskType.replace(/_/g, ' ').toUpperCase()}\n\nData:\n${dataStr}\n\nPlease provide a detailed analysis based on the provided data.`; } buildSystemPrompt(taskType) { const basePrompt = 'You are an expert aquaculture consultant with extensive knowledge in water quality management, disease prevention, feeding optimization, growth prediction, cost analysis, and environmental impact assessment.'; switch (taskType) { case AquacultureTaskType.WATER_QUALITY_ANALYSIS: return `${basePrompt}\nFocus on analyzing water quality parameters and their implications for aquatic life. Provide specific recommendations for maintaining optimal water conditions.`; case AquacultureTaskType.DISEASE_DIAGNOSIS: return `${basePrompt}\nFocus on identifying potential diseases based on environmental conditions and biological indicators. Suggest prevention and treatment measures.`; case AquacultureTaskType.FEEDING_OPTIMIZATION: return `${basePrompt}\nFocus on optimizing feeding strategies based on species, life stage, and environmental conditions. Consider feed conversion ratio and cost efficiency.`; case AquacultureTaskType.GROWTH_PREDICTION: return `${basePrompt}\nFocus on predicting growth rates and potential yield based on current conditions and historical data. Consider environmental factors and feeding efficiency.`; case AquacultureTaskType.COST_ANALYSIS: return `${basePrompt}\nFocus on analyzing operational costs and suggesting optimization strategies. Consider feed costs, energy usage, labor, and potential ROI.`; case AquacultureTaskType.TECHNICAL_ADVICE: return `${basePrompt}\nProvide comprehensive technical advice on farm management, considering all aspects of aquaculture operations.`; case AquacultureTaskType.MARKET_ANALYSIS: return `${basePrompt}\nFocus on market trends, pricing strategies, and demand forecasting. Consider local and international market conditions.`; case AquacultureTaskType.ENVIRONMENTAL_IMPACT: return `${basePrompt}\nFocus on assessing environmental impact and sustainability. Consider water usage, waste management, and ecosystem effects.`; default: return basePrompt; } } }