aquanet-bot-lib
Version:
A library for building aquaculture chatbots with LLM integration
265 lines (264 loc) • 12.2 kB
TypeScript
import { z } from 'zod';
/**
*�ịnh nghĩa phạm vi kiến thức cho chatbot
*/
export declare const KnowledgeDomains: {
readonly FARMING_TECHNIQUES: "farming_techniques";
readonly WATER_QUALITY: "water_quality";
readonly DISEASE_MANAGEMENT: "disease_management";
readonly BREEDING: "breeding";
readonly FEED_MANAGEMENT: "feed_management";
readonly PRODUCTION: "production";
readonly MARKET_ANALYSIS: "market_analysis";
readonly 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 declare const ConfigSchema: z.ZodObject<{
apiKey: z.ZodString;
baseUrl: z.ZodDefault<z.ZodString>;
defaultPrompt: z.ZodOptional<z.ZodString>;
temperature: z.ZodDefault<z.ZodNumber>;
maxTokens: z.ZodDefault<z.ZodNumber>;
responseFormat: z.ZodDefault<z.ZodEnum<["json", "stream"]>>;
onStream: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodString], z.ZodUnknown>, z.ZodVoid>>;
aquacultureConfig: z.ZodDefault<z.ZodObject<{
knowledgeDomains: z.ZodDefault<z.ZodArray<z.ZodEnum<["farming_techniques", "water_quality", "disease_management", "breeding", "feed_management", "production", "market_analysis", "regulations"]>, "many">>;
dataSources: z.ZodDefault<z.ZodArray<z.ZodEnum<["research_papers", "industry_standards", "technical_guidelines", "expert_knowledge", "case_studies", "market_reports"]>, "many">>;
expertiseLevel: z.ZodDefault<z.ZodEnum<["basic", "intermediate", "advanced"]>>;
language: z.ZodDefault<z.ZodEnum<["vi", "en"]>>;
useIndustryTerms: z.ZodDefault<z.ZodBoolean>;
tools: z.ZodDefault<z.ZodObject<{
waterCalculator: z.ZodDefault<z.ZodBoolean>;
farmingCalendar: z.ZodDefault<z.ZodBoolean>;
alertSystem: z.ZodDefault<z.ZodBoolean>;
diseaseIdentifier: z.ZodDefault<z.ZodBoolean>;
feedOptimizer: z.ZodDefault<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
waterCalculator: boolean;
farmingCalendar: boolean;
alertSystem: boolean;
diseaseIdentifier: boolean;
feedOptimizer: boolean;
}, {
waterCalculator?: boolean | undefined;
farmingCalendar?: boolean | undefined;
alertSystem?: boolean | undefined;
diseaseIdentifier?: boolean | undefined;
feedOptimizer?: boolean | undefined;
}>>;
validation: z.ZodDefault<z.ZodObject<{
requireSourceCitation: z.ZodDefault<z.ZodBoolean>;
confidenceScoring: z.ZodDefault<z.ZodBoolean>;
expertReviewThreshold: z.ZodDefault<z.ZodNumber>;
factCheckSources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
}, "strip", z.ZodTypeAny, {
requireSourceCitation: boolean;
confidenceScoring: boolean;
expertReviewThreshold: number;
factCheckSources: string[];
}, {
requireSourceCitation?: boolean | undefined;
confidenceScoring?: boolean | undefined;
expertReviewThreshold?: number | undefined;
factCheckSources?: string[] | undefined;
}>>;
customization: z.ZodDefault<z.ZodObject<{
speciesSpecific: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
farmingMethods: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
regionalGuidelines: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
customPrompts: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
speciesSpecific: string[];
farmingMethods: string[];
regionalGuidelines: string[];
customPrompts: Record<string, string>;
}, {
speciesSpecific?: string[] | undefined;
farmingMethods?: string[] | undefined;
regionalGuidelines?: string[] | undefined;
customPrompts?: Record<string, string> | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
validation: {
requireSourceCitation: boolean;
confidenceScoring: boolean;
expertReviewThreshold: number;
factCheckSources: string[];
};
knowledgeDomains: ("farming_techniques" | "water_quality" | "disease_management" | "breeding" | "feed_management" | "production" | "market_analysis" | "regulations")[];
dataSources: ("research_papers" | "industry_standards" | "technical_guidelines" | "expert_knowledge" | "case_studies" | "market_reports")[];
expertiseLevel: "basic" | "intermediate" | "advanced";
language: "vi" | "en";
useIndustryTerms: boolean;
tools: {
waterCalculator: boolean;
farmingCalendar: boolean;
alertSystem: boolean;
diseaseIdentifier: boolean;
feedOptimizer: boolean;
};
customization: {
speciesSpecific: string[];
farmingMethods: string[];
regionalGuidelines: string[];
customPrompts: Record<string, string>;
};
}, {
validation?: {
requireSourceCitation?: boolean | undefined;
confidenceScoring?: boolean | undefined;
expertReviewThreshold?: number | undefined;
factCheckSources?: string[] | undefined;
} | undefined;
knowledgeDomains?: ("farming_techniques" | "water_quality" | "disease_management" | "breeding" | "feed_management" | "production" | "market_analysis" | "regulations")[] | undefined;
dataSources?: ("research_papers" | "industry_standards" | "technical_guidelines" | "expert_knowledge" | "case_studies" | "market_reports")[] | undefined;
expertiseLevel?: "basic" | "intermediate" | "advanced" | undefined;
language?: "vi" | "en" | undefined;
useIndustryTerms?: boolean | undefined;
tools?: {
waterCalculator?: boolean | undefined;
farmingCalendar?: boolean | undefined;
alertSystem?: boolean | undefined;
diseaseIdentifier?: boolean | undefined;
feedOptimizer?: boolean | undefined;
} | undefined;
customization?: {
speciesSpecific?: string[] | undefined;
farmingMethods?: string[] | undefined;
regionalGuidelines?: string[] | undefined;
customPrompts?: Record<string, string> | undefined;
} | undefined;
}>>;
}, "strip", z.ZodTypeAny, {
apiKey: string;
baseUrl: string;
temperature: number;
maxTokens: number;
responseFormat: "json" | "stream";
aquacultureConfig: {
validation: {
requireSourceCitation: boolean;
confidenceScoring: boolean;
expertReviewThreshold: number;
factCheckSources: string[];
};
knowledgeDomains: ("farming_techniques" | "water_quality" | "disease_management" | "breeding" | "feed_management" | "production" | "market_analysis" | "regulations")[];
dataSources: ("research_papers" | "industry_standards" | "technical_guidelines" | "expert_knowledge" | "case_studies" | "market_reports")[];
expertiseLevel: "basic" | "intermediate" | "advanced";
language: "vi" | "en";
useIndustryTerms: boolean;
tools: {
waterCalculator: boolean;
farmingCalendar: boolean;
alertSystem: boolean;
diseaseIdentifier: boolean;
feedOptimizer: boolean;
};
customization: {
speciesSpecific: string[];
farmingMethods: string[];
regionalGuidelines: string[];
customPrompts: Record<string, string>;
};
};
defaultPrompt?: string | undefined;
onStream?: ((args_0: string, ...args: unknown[]) => void) | undefined;
}, {
apiKey: string;
baseUrl?: string | undefined;
defaultPrompt?: string | undefined;
temperature?: number | undefined;
maxTokens?: number | undefined;
responseFormat?: "json" | "stream" | undefined;
onStream?: ((args_0: string, ...args: unknown[]) => void) | undefined;
aquacultureConfig?: {
validation?: {
requireSourceCitation?: boolean | undefined;
confidenceScoring?: boolean | undefined;
expertReviewThreshold?: number | undefined;
factCheckSources?: string[] | undefined;
} | undefined;
knowledgeDomains?: ("farming_techniques" | "water_quality" | "disease_management" | "breeding" | "feed_management" | "production" | "market_analysis" | "regulations")[] | undefined;
dataSources?: ("research_papers" | "industry_standards" | "technical_guidelines" | "expert_knowledge" | "case_studies" | "market_reports")[] | undefined;
expertiseLevel?: "basic" | "intermediate" | "advanced" | undefined;
language?: "vi" | "en" | undefined;
useIndustryTerms?: boolean | undefined;
tools?: {
waterCalculator?: boolean | undefined;
farmingCalendar?: boolean | undefined;
alertSystem?: boolean | undefined;
diseaseIdentifier?: boolean | undefined;
feedOptimizer?: boolean | undefined;
} | undefined;
customization?: {
speciesSpecific?: string[] | undefined;
farmingMethods?: string[] | undefined;
regionalGuidelines?: string[] | undefined;
customPrompts?: Record<string, string> | undefined;
} | undefined;
} | undefined;
}>;
export type Config = z.infer<typeof ConfigSchema>;
/**
* Định dạng tin nhắn trao đổi với API
* @property {'system' | 'user' | 'assistant'} role - Vai trò của tin nhắn
* @property {string} content - Nội dung tin nhắn
*/
export interface Message {
role: 'system' | 'user' | 'assistant';
content: string;
}
/**
* Định dạng phản hồi từ API khi không sử dụng stream
*/
export interface ChatResponse {
id: string;
choices: Array<{
message: Message;
finish_reason: string;
}>;
usage: {
prompt_tokens: number;
completion_tokens: number;
total_tokens: number;
};
}
/**
* Định dạng của từng phần dữ liệu trong stream response
*/
export interface StreamChunk {
id: string;
choices: Array<{
delta: Partial<Message>;
finish_reason: string | null;
}>;
}
/**
* Tùy chọn khởi tạo cho AquanetBot
* @property {Config} config - Cấu hình cho bot
* @property {'react' | 'nextjs'} framework - Framework đang sử dụng
*/
export interface AquanetBotOptions {
config: Config;
framework?: 'react' | 'nextjs';
}