aquanet-bot-lib
Version:
A library for building aquaculture chatbots with LLM integration
92 lines (91 loc) • 4.43 kB
JavaScript
import { z } from 'zod';
/**
*�ịnh nghĩa phạm vi kiến thức cho chatbot
*/
export const KnowledgeDomains = {
FARMING_TECHNIQUES: 'farming_techniques',
WATER_QUALITY: 'water_quality',
DISEASE_MANAGEMENT: 'disease_management',
BREEDING: 'breeding',
FEED_MANAGEMENT: 'feed_management',
PRODUCTION: 'production',
MARKET_ANALYSIS: 'market_analysis',
REGULATIONS: 'regulations',
};
/**
* Cấu hình cho AquanetBot
* @property {string} apiKey - API key của DeepSeek, bắt buộc để xác thực
* @property {string} baseUrl - URL cơ sở của DeepSeek API, mặc định là 'https://api.deepseek.com/v1'
* @property {string} defaultPrompt - System prompt mặc định cho bot, định hướng cách bot trả lời
* @property {number} temperature - Độ sáng tạo của câu trả lời (0-1)
* @property {number} maxTokens - Số token tối đa cho mỗi câu trả lời
* @property {'json' | 'stream'} responseFormat - Định dạng phản hồi
* @property {function} onStream - Callback xử lý stream
*
* Cấu hình chuyên biệt cho aquaculture:
* @property {object} aquacultureConfig - Cấu hình đặc thù cho nuôi trồng thủy sản
* @property {string[]} knowledgeDomains - Các lĩnh vực chuyên môn (farming_techniques, water_quality, etc.)
* @property {string[]} dataSources - Nguồn dữ liệu tham khảo (research_papers, industry_standards, etc.)
* @property {'basic' | 'intermediate' | 'advanced'} expertiseLevel - Mức độ chuyên sâu của thông tin
* @property {string} language - Ngôn ngữ chính (vi, en)
* @property {boolean} useIndustryTerms - Sử dụng thuật ngữ chuyên ngành
* @property {object} tools - Công cụ tích hợp (máy tính thông số nước, lịch nuôi, etc.)
* @property {object} validation - Cấu hình kiểm tra độ chính xác
* @property {object} customization - Tùy chỉnh theo nhu cầu cụ thể
*/
export const ConfigSchema = z.object({
apiKey: z.string(),
baseUrl: z.string().default('https://api.deepseek.com/v1'),
defaultPrompt: z.string().optional(),
temperature: z.number().min(0).max(1).default(0.7),
maxTokens: z.number().positive().default(1000),
responseFormat: z.enum(['json', 'stream']).default('json'),
onStream: z.function()
.args(z.string())
.returns(z.void())
.optional(),
// Cấu hình chuyên biệt cho aquaculture
aquacultureConfig: z.object({
knowledgeDomains: z.array(z.enum([
KnowledgeDomains.FARMING_TECHNIQUES,
KnowledgeDomains.WATER_QUALITY,
KnowledgeDomains.DISEASE_MANAGEMENT,
KnowledgeDomains.BREEDING,
KnowledgeDomains.FEED_MANAGEMENT,
KnowledgeDomains.PRODUCTION,
KnowledgeDomains.MARKET_ANALYSIS,
KnowledgeDomains.REGULATIONS,
])).default([KnowledgeDomains.FARMING_TECHNIQUES]),
dataSources: z.array(z.enum([
'research_papers',
'industry_standards',
'technical_guidelines',
'expert_knowledge',
'case_studies',
'market_reports',
])).default(['industry_standards']),
expertiseLevel: z.enum(['basic', 'intermediate', 'advanced'])
.default('intermediate'),
language: z.enum(['vi', 'en']).default('vi'),
useIndustryTerms: z.boolean().default(true),
tools: z.object({
waterCalculator: z.boolean().default(false),
farmingCalendar: z.boolean().default(false),
alertSystem: z.boolean().default(false),
diseaseIdentifier: z.boolean().default(false),
feedOptimizer: z.boolean().default(false),
}).default({}),
validation: z.object({
requireSourceCitation: z.boolean().default(true),
confidenceScoring: z.boolean().default(true),
expertReviewThreshold: z.number().min(0).max(1).default(0.8),
factCheckSources: z.array(z.string()).default([]),
}).default({}),
customization: z.object({
speciesSpecific: z.array(z.string()).default([]),
farmingMethods: z.array(z.string()).default([]),
regionalGuidelines: z.array(z.string()).default([]),
customPrompts: z.record(z.string()).default({}),
}).default({}),
}).default({}),
});