Skip to content

人类交互

概述

解释器支持灵活的自然语言交互。使用者可在多个位点变更需求、提供执行建议、审阅结果等。通过人类的引导,解释器可在各场景下达到更高的成功率和更好的效果。

示例:机器学习

任务

我们使用机器学习场景作为示例。在此,我们展示如何根据我们的自身需求,确认和修改解释器的计划,以及引导它重做指定任务

代码

examples/di/machine_learning.py

python examples/di/machine_learning.py --auto_run False
python examples/di/machine_learning.py --auto_run False

运行结果


在交互过程中,我们通过自然语言多次提出需求,例如:

  • 制定计划时,我们要求它整合和变更任务:“merge 4 and 5, also, change task 2, save the plot”
  • 执行过程中,我们要求它更新后续任务:“confirm, but change task 3 only, use 30% as validation set”
  • 执行过程中,我们要求它重做当前任务:“redo, use decision tree as the model instead”

解释器均动态地调整并执行,完成了我们的需求

机制解释

使用人类交互模式,需在解释器初始化时设置 auto_run=False 。解释器将在每次提出计划和完成计划中的每个任务时,请求人类进行审阅。结合关键词,使用者可使用自然语言告知解释器,解释器提出的计划、写出的代码应如何修改。解释器支持计划的状态管理,在新增、修改、删除任务时,会保留未受影响任务的进度。请参考如下的使用示例

解释器生成的Plan示例

json
[
  {
    "task_id": "1",
    "dependent_task_ids": [],
    "instruction": "Load the sklearn Wine recognition dataset."
  },
  {
    "task_id": "2",
    "dependent_task_ids": ["1"],
    "instruction": "Perform exploratory data analysis and include a plot of the dataset features."
  },
  {
    "task_id": "3",
    "dependent_task_ids": ["1"],
    "instruction": "Split the dataset into training and validation sets with a 20% validation split."
  },
  {
    "task_id": "4",
    "dependent_task_ids": ["3"],
    "instruction": "Train a model on the training set to predict wine class."
  },
  {
    "task_id": "5",
    "dependent_task_ids": ["4"],
    "instruction": "Evaluate the model on the validation set and show the validation accuracy."
  }
]
[
  {
    "task_id": "1",
    "dependent_task_ids": [],
    "instruction": "Load the sklearn Wine recognition dataset."
  },
  {
    "task_id": "2",
    "dependent_task_ids": ["1"],
    "instruction": "Perform exploratory data analysis and include a plot of the dataset features."
  },
  {
    "task_id": "3",
    "dependent_task_ids": ["1"],
    "instruction": "Split the dataset into training and validation sets with a 20% validation split."
  },
  {
    "task_id": "4",
    "dependent_task_ids": ["3"],
    "instruction": "Train a model on the training set to predict wine class."
  },
  {
    "task_id": "5",
    "dependent_task_ids": ["4"],
    "instruction": "Evaluate the model on the validation set and show the validation accuracy."
  }
]

人类可交互内容

交互类型所需关键词示例说明
确认["confirm", "continue", "c", "yes", "y"]之一confirm确认当前计划或任务结果,并继续往后执行
确认并修改confirm + 任意其他内容confirm, and change task 3, use 30% as validation set确认当前任务结果,同时修改后续计划
重做redoredo, fix the error by using matplotlib根据人类意见,重做当前任务
redo, use decision tree as the model instead
修改-add a task, save the plot根据人类意见,修改计划
delete task 5
change task 4, use decision tree as the model specifically
merge task 4 and 5

解释器将根据人类意见文本,确定交互类型,优先级:确认并修改 > 确认 > 重做 > 修改

Released under the MIT License.