package generators import ( "learning-assistant/internal/ai" ) // GeneratorType 生成器类型 type GeneratorType string const ( GeneratorMermaid GeneratorType = "mermaid" GeneratorGuodegang GeneratorType = "guodegang" GeneratorQuiz GeneratorType = "quiz" GeneratorCard GeneratorType = "card" GeneratorScenario GeneratorType = "scenario" ) // GenerateResult 生成结果 type GenerateResult struct { Type GeneratorType Content string Error error } // BaseGenerator 基础生成器 type BaseGenerator struct { client *ai.SiliconFlowClient promptManager *ai.PromptManager } // NewBaseGenerator 创建基础生成器 func NewBaseGenerator(client *ai.SiliconFlowClient, promptManager *ai.PromptManager) *BaseGenerator { return &BaseGenerator{ client: client, promptManager: promptManager, } } // Generate 生成内容 func (g *BaseGenerator) Generate(genType GeneratorType, knowledge string, resultChan chan<- GenerateResult) { prompt, err := g.promptManager.GeneratePrompt(string(genType), knowledge) if err != nil { resultChan <- GenerateResult{ Type: genType, Error: err, } return } content, err := g.client.Generate(prompt) if err != nil { resultChan <- GenerateResult{ Type: genType, Error: err, } return } resultChan <- GenerateResult{ Type: genType, Content: content, } }