UNPKG

aquanet-bot-lib

Version:

A library for building aquaculture chatbots with LLM integration

265 lines (264 loc) 12.2 kB
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'; }