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,16 +44,19 @@ func (a *PlanAction) Definition() ActionDefinition {
Properties: map[string]jsonschema.Definition{
"subtasks": {
Type: jsonschema.Array,
Description: "The message to reply with",
Properties: map[string]jsonschema.Definition{
"action": {
Type: jsonschema.String,
Description: "The action to call",
Enum: a.plannables,
},
"reasoning": {
Type: jsonschema.String,
Description: "The reasoning for calling this action",
Description: "The subtasks to be executed",
Items: &jsonschema.Definition{
Type: jsonschema.Object,
Properties: map[string]jsonschema.Definition{
"action": {
Type: jsonschema.String,
Description: "The action to call",
Enum: a.plannables,
},
"reasoning": {
Type: jsonschema.String,
Description: "The reasoning for calling this action",
},
},
},
},

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 {
// Planning: run all the actions in sequence
if !chosenAction.Definition().Name.Is(action.PlanActionName) {
xlog.Debug("no plan action")
return nil
}
xlog.Debug("[planning]...")
planResult := action.PlanResult{}
if err := actionParams.Unmarshal(&planResult); err != nil {
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 {
job.Result.Finish(fmt.Errorf("no parameters"))
xlog.Error("No parameters", "agent", a.Character.Name)
return
}