fix(planning): don't loose results

Signed-off-by: mudler <mudler@localai.io>
This commit is contained in:
mudler
2025-03-26 16:58:11 +01:00
parent 8e9b87bcb1
commit d5df14a714
2 changed files with 10 additions and 8 deletions

View File

@@ -174,17 +174,17 @@ func (a *Agent) generateParameters(ctx context.Context, pickTemplate string, act
)
}
func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) error {
func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction types.Action, actionParams types.ActionParams, reasoning string, pickTemplate string, conv Messages) (Messages, error) {
// Planning: run all the actions in sequence
if !chosenAction.Definition().Name.Is(action.PlanActionName) {
xlog.Debug("no plan action")
return nil
return conv, nil
}
xlog.Debug("[planning]...")
planResult := action.PlanResult{}
if err := actionParams.Unmarshal(&planResult); err != nil {
return fmt.Errorf("error unmarshalling plan result: %w", err)
return conv, fmt.Errorf("error unmarshalling plan result: %w", err)
}
stateResult := types.ActionState{
@@ -207,7 +207,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction
}
if len(planResult.Subtasks) == 0 {
return fmt.Errorf("no subtasks")
return conv, fmt.Errorf("no subtasks")
}
// Execute all subtasks in sequence
@@ -223,7 +223,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction
params, err := a.generateParameters(ctx, pickTemplate, subTaskAction, conv, subTaskReasoning)
if err != nil {
return fmt.Errorf("error generating action's parameters: %w", err)
return conv, fmt.Errorf("error generating action's parameters: %w", err)
}
actionParams = params.actionParams
@@ -252,7 +252,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction
result, err := a.runAction(subTaskAction, actionParams)
if err != nil {
return fmt.Errorf("error running action: %w", err)
return conv, fmt.Errorf("error running action: %w", err)
}
stateResult := types.ActionState{
@@ -270,7 +270,7 @@ func (a *Agent) handlePlanning(ctx context.Context, job *types.Job, chosenAction
conv = a.addFunctionResultToConversation(subTaskAction, actionParams, result, conv)
}
return nil
return conv, nil
}
func (a *Agent) availableActions() types.Actions {

View File

@@ -528,7 +528,9 @@ func (a *Agent) consumeJob(job *types.Job, role string) {
return
}
if err := a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv); err != nil {
var err error
conv, err = a.handlePlanning(ctx, job, chosenAction, actionParams, reasoning, pickTemplate, conv)
if err != nil {
job.Result.Finish(fmt.Errorf("error running action: %w", err))
return
}