跳到正文
Yayin Story Studio Yayin Story Studio 项目文档

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 不会产生重复项。

functionIdFunction::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 开始支持。