aquanet-bot-lib
Version:
A library for building aquaculture chatbots with LLM integration
97 lines (96 loc) • 6.22 kB
JavaScript
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;
}
}
}