feat: add jsonl export learn, nsfw. delete txt export

This commit is contained in:
Siwoo Jeon 2025-05-09 19:31:56 +09:00
parent 8be039e8cf
commit df693bfa43
Signed by: migan
GPG key ID: 036E9A8C5E8E48DA

View file

@ -22,8 +22,14 @@ import (
var date time.Time = time.Now() var date time.Time = time.Now()
type jsonlData struct { type textJSONLData struct {
Text string `json:"text"` Text string `json:"text"`
Persona string `json:"persona,omitempty"`
}
type learnJSONLData struct {
Command string `json:"command"`
Result string `json:"result"`
} }
func getDate() string { func getDate() string {
@ -87,30 +93,11 @@ func saveFileToJSON(path, name string, data any) error {
return nil return nil
} }
func saveFileToTXT(path, name string, data []databases.Text) error { func saveFileToJSONL(path, name string, data any) error {
var content string
for _, data := range data {
content += data.Text + "\n"
}
f, err := os.Create(fmt.Sprintf("%s/%s.txt", path, name))
if err != nil {
return err
}
defer f.Close()
_, err = f.WriteString(content)
if err != nil {
return err
}
return nil
}
func saveFileToJSONL(path, name string, data []jsonlData) error {
var content string var content string
switch data := data.(type) {
case []textJSONLData:
for _, data := range data { for _, data := range data {
bytes, err := json.Marshal(data) bytes, err := json.Marshal(data)
if err != nil { if err != nil {
@ -118,6 +105,15 @@ func saveFileToJSONL(path, name string, data []jsonlData) error {
} }
content += string(bytes) + "\n" content += string(bytes) + "\n"
} }
case []learnJSONLData:
for _, data := range data {
bytes, err := json.Marshal(data)
if err != nil {
return err
}
content += string(bytes) + "\n"
}
}
f, err := os.Create(fmt.Sprintf("%s/%s.jsonl", path, name)) f, err := os.Create(fmt.Sprintf("%s/%s.jsonl", path, name))
if err != nil { if err != nil {
@ -143,7 +139,7 @@ func ExportData(n *commando.Node) error {
return err return err
} }
if fileType != "txt" && fileType != "json" && fileType != "jsonl" { if fileType != "json" && fileType != "jsonl" {
return fmt.Errorf("파일 형식은 txt또는 json또는 jsonl이여야 해요") return fmt.Errorf("파일 형식은 txt또는 json또는 jsonl이여야 해요")
} }
@ -166,6 +162,10 @@ func ExportData(n *commando.Node) error {
wg.Add(3) wg.Add(3)
if fileType == "jsonl" {
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 일부데이터만 추출 됩니다.")
}
// 머핀 데이터 추출 // 머핀 데이터 추출
go func() { go func() {
defer wg.Done() defer wg.Done()
@ -211,21 +211,11 @@ func ExportData(n *commando.Node) error {
ch <- err ch <- err
return return
} }
} else if fileType == "txt" {
fmt.Println("NOTE: 파일 형식이 'txt'인 경우 머핀 데이터만 txt형식으로 추출되고, 나머지는 json으로 추출됩니다.")
err = saveFileToTXT(path, "muffin", data)
if err != nil {
ch <- err
return
}
} else if fileType == "jsonl" { } else if fileType == "jsonl" {
var newData []jsonlData var newData []textJSONLData
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 머핀 데이터만 jsonl형식으로 추출되고, 나머지는 json으로 추출됩니다.")
fmt.Println("NOTE: 파일 형식이 'jsonl'인 경우 일부데이터만 추출 됩니다.")
for _, data := range data { for _, data := range data {
newData = append(newData, jsonlData{data.Text}) newData = append(newData, textJSONLData{data.Text, ""})
} }
err = saveFileToJSONL(path, "muffin", newData) err = saveFileToJSONL(path, "muffin", newData)
@ -273,11 +263,25 @@ func ExportData(n *commando.Node) error {
return return
} }
if fileType == "json" {
err = saveFileToJSON(path, "nsfw", data) err = saveFileToJSON(path, "nsfw", data)
if err != nil { if err != nil {
ch <- err ch <- err
return return
} }
} else if fileType == "jsonl" {
var newData []textJSONLData
for _, data := range data {
newData = append(newData, textJSONLData{data.Text, data.Persona})
}
err = saveFileToJSONL(path, "nsfw", newData)
if err != nil {
ch <- err
return
}
}
fmt.Println("nsfw 데이터 추출 완료") fmt.Println("nsfw 데이터 추출 완료")
}() }()
@ -310,11 +314,25 @@ func ExportData(n *commando.Node) error {
return return
} }
if fileType == "json" {
err = saveFileToJSON(path, "learn", data) err = saveFileToJSON(path, "learn", data)
if err != nil { if err != nil {
ch <- err ch <- err
return return
} }
} else if fileType == "jsonl" {
var newData []learnJSONLData
for _, data := range data {
newData = append(newData, learnJSONLData{data.Command, data.Result})
}
err = saveFileToJSONL(path, "learn", newData)
if err != nil {
ch <- err
return
}
}
fmt.Println("지식 데이터 추출 완료") fmt.Println("지식 데이터 추출 완료")
}() }()