fix(planning): correctly generate a valid JSON schema (#71)

Signed-off-by: mudler <mudler@localai.io>
This commit is contained in:
Ettore Di Giacinto
2025-03-21 15:47:34 +01:00
committed by GitHub
parent 33483ab4b9
commit e5e238efc0
3 changed files with 16 additions and 10 deletions

View File

@@ -44,7 +44,9 @@ func (a *PlanAction) Definition() ActionDefinition {
Properties: map[string]jsonschema.Definition{ Properties: map[string]jsonschema.Definition{
"subtasks": { "subtasks": {
Type: jsonschema.Array, Type: jsonschema.Array,
Description: "The message to reply with", Description: "The subtasks to be executed",
Items: &jsonschema.Definition{
Type: jsonschema.Object,
Properties: map[string]jsonschema.Definition{ Properties: map[string]jsonschema.Definition{
"action": { "action": {
Type: jsonschema.String, Type: jsonschema.String,
@@ -57,6 +59,7 @@ func (a *PlanAction) Definition() ActionDefinition {
}, },
}, },
}, },
},
"goal": { "goal": {
Type: jsonschema.String, Type: jsonschema.String,
Description: "The goal of this plan", Description: "The goal of this plan",

View File

@@ -215,9 +215,11 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act
func (a *Agent) handlePlanning(ctx context.Context, job *Job, chosenAction Action, actionParams action.ActionParams, reasoning string, pickTemplate string) error { func (a *Agent) handlePlanning(ctx context.Context, job *Job, chosenAction Action, actionParams action.ActionParams, reasoning string, pickTemplate string) error {
// Planning: run all the actions in sequence // Planning: run all the actions in sequence
if !chosenAction.Definition().Name.Is(action.PlanActionName) { if !chosenAction.Definition().Name.Is(action.PlanActionName) {
xlog.Debug("no plan action")
return nil return nil
} }
xlog.Debug("[planning]...")
planResult := action.PlanResult{} planResult := action.PlanResult{}
if err := actionParams.Unmarshal(&planResult); err != nil { if err := actionParams.Unmarshal(&planResult); err != nil {
return fmt.Errorf("error unmarshalling plan result: %w", err) return fmt.Errorf("error unmarshalling plan result: %w", err)

View File

@@ -567,6 +567,7 @@ func (a *Agent) consumeJob(job *Job, role string) {
if actionParams == nil { if actionParams == nil {
job.Result.Finish(fmt.Errorf("no parameters")) job.Result.Finish(fmt.Errorf("no parameters"))
xlog.Error("No parameters", "agent", a.Character.Name)
return return
} }