Visindigo::Agent::Skill Class
class Visindigo::Agent::Skill一段可复用的行为说明,用于给对话注入领域知识. 详情...
| 头文件: | #include <Agent/Skill.h> |
| 自以下版本: | Visindigo 0.17.0 |
公开成员函数
(自 Visindigo 0.17.0 引入) | Skill() |
(自 Visindigo 0.17.0 引入) | Skill(const QString &name) |
(自 Visindigo 0.17.0 引入) | ~Skill() |
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill & | addFunction(const QString &functionId) |
(自 Visindigo 0.17.0 引入) bool | fromJson(const Visindigo::Utility::JsonConfig &json) |
(自 Visindigo 0.17.0 引入) QString | getDescription() const |
(自 Visindigo 0.17.0 引入) QStringList | getFunctionIds() const |
(自 Visindigo 0.17.0 引入) QString | getInstruction() const |
(自 Visindigo 0.17.0 引入) QString | getName() const |
(自 Visindigo 0.17.0 引入) QStringList | getTags() const |
(自 Visindigo 0.17.0 引入) bool | hasFunction(const QString &id) const |
(自 Visindigo 0.17.0 引入) bool | isEnabled() const |
(自 Visindigo 0.17.0 引入) bool | isValid() const |
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill & | removeFunction(const QString &id) |
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill & | setDescription(const QString &description) |
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill & | setEnabled(bool enabled) |
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill & | setInstruction(const QString &instruction) |
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill & | setName(const QString &name) |
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill & | setTags(const QStringList &tags) |
(自 Visindigo 0.17.0 引入) Visindigo::Utility::JsonConfig | toJson() const |
详细说明
一个 Skill 就是"当用户提出这类问题时应遵守的规则"的载体:它由一段说明 文本(setInstruction())加上若干可选的能力声明组成,在构造请求时被 拼进系统提示。
它和 Prompt 的区别在于谁决定内容:Prompt 由用户显式触发,模板里有 变量占位符,渲染出的是对话中的某一条消息;Skill 是常驻的,只要被挂上且 处于启用状态,就会一直参与系统提示的拼装,不需要用户逐次点名。
Skill 本身不持有任何可执行对象。它记录的是函数 id,而不是函数指针, 因为同一份 Skill 可能被多份对话共享,而函数的所有权属于 Center 或 某个具体的 Dialog;把指针存进值类型里,拷贝时所有权就说不清了。
成员函数文档
[since Visindigo 0.17.0] Skill::Skill()
构造一个空技能。空技能 isValid() 为 false,需要至少设置名称与说明。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Skill::Skill(const QString &name)
以名称构造技能,name 同时作为索引键。
这个function 从 Visindigo 0.17.0 开始支持。
[noexcept, since Visindigo 0.17.0] Skill::~Skill()
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Agent::Skill &Skill::addFunction(const QString &functionId)
关联一个函数 id,表示"这个技能用到的工具"。重复添加同一个 id 不会产生重复项。
functionId 由 Function::getId() 定义,实际对象在 执行时由 Center 或 Dialog 的函数表解析。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] bool Skill::fromJson(const Visindigo::Utility::JsonConfig &json)
从 JSON 对象恢复。
Note: 缺失的字段保留默认值;enabled 缺失时按启用处理,这样手写的精简 配置不必每次都写一遍开关。
json 已解析的 JSON 对象。
return 恢复后的技能是否有效,判定规则与 isValid() 相同。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] QString Skill::getDescription() const
返回描述。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] QStringList Skill::getFunctionIds() const
返回关联的全部函数 id,按添加顺序。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] QString Skill::getInstruction() const
返回技能正文。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] QString Skill::getName() const
返回名称。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] QStringList Skill::getTags() const
返回标签列表。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] bool Skill::hasFunction(const QString &id) const
判断是否关联了指定函数。
id 函数 id。
return 关联了该函数时返回 true。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] bool Skill::isEnabled() const
返回是否启用。
return 启用时返回 true。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] bool Skill::isValid() const
判断技能是否可用:名称与正文都不能为空。
Note: 只有名称没有正文的技能是无效的——它拼进系统提示后不产生任何内容, 留着只会让配置看起来比实际更丰富。
return 名称与正文都非空时返回 true。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Agent::Skill &Skill::removeFunction(const QString &id)
解除一个函数 id 的关联。id 不存在时什么也不做。
id 函数 id。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Agent::Skill &Skill::setDescription(const QString &description)
设置一句话描述,用于在界面或日志里说明这个技能是做什么的。
Note: 描述不会进入系统提示;进入提示的是 setInstruction() 的内容。
description 一句话描述。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Agent::Skill &Skill::setEnabled(bool enabled)
设置是否启用,默认启用。被禁用的技能不会参与系统提示拼装。
enabled 是否启用。
这个function 从 Visindigo 0.17.0 开始支持。
另请参阅 isEnabled().
[since Visindigo 0.17.0] Visindigo::Agent::Skill &Skill::setInstruction(const QString &instruction)
设置技能的正文,也就是真正被拼进系统提示的规则文本。
写成祈使句比写成陈述句有效得多:「回答前先确认单位」比「用户可能会省略 单位」更容易被遵守。说明里也不适合放大段背景资料,那会稀释规则本身。
instruction 技能正文,即拼进系统提示的规则文本。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Agent::Skill &Skill::setName(const QString &name)
设置名称。名称是 Skill 在 Center 与 Dialog 中的索引键,同名会互相覆盖。
name 技能名称。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Agent::Skill &Skill::setTags(const QStringList &tags)
设置标签,供调用方按主题批量筛选技能。Visindigo 不解释标签的含义。
tags 标签列表。
这个function 从 Visindigo 0.17.0 开始支持。
[since Visindigo 0.17.0] Visindigo::Utility::JsonConfig Skill::toJson() const
序列化为 JSON 对象。
这个function 从 Visindigo 0.17.0 开始支持。