Feat: add character card support
This commit is contained in:
41
models/card.go
Normal file
41
models/card.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package models
|
||||
|
||||
import "strings"
|
||||
|
||||
// https://github.com/malfoyslastname/character-card-spec-v2/blob/main/spec_v2.md
|
||||
// what a bloat; trim to Role->Msg pair and first msg
|
||||
type CharCardSpec struct {
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
Personality string `json:"personality"`
|
||||
FirstMes string `json:"first_mes"`
|
||||
Avatar string `json:"avatar"`
|
||||
Chat string `json:"chat"`
|
||||
MesExample string `json:"mes_example"`
|
||||
Scenario string `json:"scenario"`
|
||||
CreateDate string `json:"create_date"`
|
||||
Talkativeness string `json:"talkativeness"`
|
||||
Fav bool `json:"fav"`
|
||||
Creatorcomment string `json:"creatorcomment"`
|
||||
Spec string `json:"spec"`
|
||||
SpecVersion string `json:"spec_version"`
|
||||
Tags []any `json:"tags"`
|
||||
}
|
||||
|
||||
func (c *CharCardSpec) Simplify(userName, fpath string) *CharCard {
|
||||
fm := strings.ReplaceAll(strings.ReplaceAll(c.FirstMes, "{{char}}", c.Name), "{{user}}", userName)
|
||||
sysPr := strings.ReplaceAll(strings.ReplaceAll(c.Description, "{{char}}", c.Name), "{{user}}", userName)
|
||||
return &CharCard{
|
||||
SysPrompt: sysPr,
|
||||
FirstMsg: fm,
|
||||
Role: c.Name,
|
||||
FilePath: fpath,
|
||||
}
|
||||
}
|
||||
|
||||
type CharCard struct {
|
||||
SysPrompt string
|
||||
FirstMsg string
|
||||
Role string
|
||||
FilePath string
|
||||
}
|
||||
Reference in New Issue
Block a user