try to fixup tests, enable e2e (#53)
* try to fixup tests, enable e2e Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Generate JSON character data with tools Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Rework generation of character Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * Simplify text Signed-off-by: mudler <mudler@localai.io> * Relax some test constraints Signed-off-by: mudler <mudler@localai.io> * Fixups * Properly fit schema generation * Swap default model * ci fixups --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Signed-off-by: mudler <mudler@localai.io>
This commit is contained in:
committed by
GitHub
parent
31b5849d02
commit
e32a569796
53
core/agent/identity.go
Normal file
53
core/agent/identity.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/mudler/LocalAgent/pkg/llm"
|
||||
)
|
||||
|
||||
func (a *Agent) generateIdentity(guidance string) error {
|
||||
if guidance == "" {
|
||||
guidance = "Generate a random character for roleplaying."
|
||||
}
|
||||
|
||||
err := llm.GenerateTypedJSON(a.context.Context, a.client, guidance, a.options.LLMAPI.Model, a.options.character.ToJSONSchema(), &a.options.character)
|
||||
//err := llm.GenerateJSONFromStruct(a.context.Context, a.client, guidance, a.options.LLMAPI.Model, &a.options.character)
|
||||
a.Character = a.options.character
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to generate JSON from structure: %v", err)
|
||||
}
|
||||
|
||||
if !a.validCharacter() {
|
||||
return fmt.Errorf("generated character is not valid ( guidance: %s ): %v", guidance, a.Character.String())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *Agent) prepareIdentity() error {
|
||||
if !a.options.randomIdentity {
|
||||
// No identity to generate
|
||||
return nil
|
||||
}
|
||||
|
||||
if a.options.characterfile == "" {
|
||||
return a.generateIdentity(a.options.randomIdentityGuidance)
|
||||
}
|
||||
|
||||
if _, err := os.Stat(a.options.characterfile); err == nil {
|
||||
// if there is a file, load the character back
|
||||
return a.LoadCharacter(a.options.characterfile)
|
||||
}
|
||||
|
||||
if err := a.generateIdentity(a.options.randomIdentityGuidance); err != nil {
|
||||
return fmt.Errorf("failed to generate identity: %v", err)
|
||||
}
|
||||
|
||||
// otherwise save it for next time
|
||||
if err := a.SaveCharacter(a.options.characterfile); err != nil {
|
||||
return fmt.Errorf("failed to save character: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user