✨Feat: 构建对话终端
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user