Files
agent-chain/internal/ai/generators/generator.go
T
2026-03-20 14:26:24 +08:00

64 lines
1.3 KiB
Go

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,
}
}