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

Visindigo::Agent::Prompt Class

class Visindigo::Agent::Prompt

可复用的提示模板. 详情...

头文件: #include <Agent/Prompt.h>
自以下版本: Visindigo 0.17.0

公开成员函数

(自 Visindigo 0.17.0 引入) Prompt()
(自 Visindigo 0.17.0 引入) Prompt(const QString &name, const QString &content)
(自 Visindigo 0.17.0 引入) ~Prompt()
(自 Visindigo 0.17.0 引入) bool fromJson(const Visindigo::Utility::JsonConfig &json)
(自 Visindigo 0.17.0 引入) QString getContent() const
(自 Visindigo 0.17.0 引入) QString getDescription() const
(自 Visindigo 0.17.0 引入) QString getName() const
(自 Visindigo 0.17.0 引入) QStringList getTags() const
(自 Visindigo 0.17.0 引入) QStringList getVariables() const
(自 Visindigo 0.17.0 引入) bool isValid() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Message render(const QMap<QString, QString> &variables) const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Prompt &setContent(const QString &content)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Prompt &setDescription(const QString &description)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Prompt &setName(const QString &name)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Prompt &setTags(const QStringList &tags)
(自 Visindigo 0.17.0 引入) Visindigo::Utility::JsonConfig toJson() const

详细说明

Prompt 是一段带有待填占位符的文本。占位符由双花括号包裹变量名构成,例如:

把下面这段文字翻译成{{language}},只输出译文:
{{text}}

调用 render() 时传入同名变量即可得到填好的 Message。把常用的提问 方式固化成模板,比每次重新打一遍更不容易漏掉约束条件。

Prompt 与 Skill 的分工:Prompt 由用户在需要时显式插入对话,渲染结果 是一条普通消息,因此它会留在会话记录里;Skill 是常驻的系统提示片段, 不产生消息。前者用于"这次我想按这个格式问",后者用于"这个助手一贯如此"。

成员函数文档

[since Visindigo 0.17.0] Prompt::Prompt()

构造一个空模板。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Prompt::Prompt(const QString &name, const QString &content)

以名称与正文构造模板。name 同时作为索引键。

这个function 从 Visindigo 0.17.0 开始支持。

[noexcept, since Visindigo 0.17.0] Prompt::~Prompt()

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] bool Prompt::fromJson(const Visindigo::Utility::JsonConfig &json)

从 JSON 对象恢复。

json 已解析的 JSON 对象。

return 恢复后的模板是否有效,判定规则与 isValid() 相同。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QString Prompt::getContent() const

返回模板正文,占位符保持原样。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QString Prompt::getDescription() const

返回描述。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QString Prompt::getName() const

返回名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QStringList Prompt::getTags() const

返回标签列表。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QStringList Prompt::getVariables() const

扫描模板正文,返回其中出现的全部占位符名称。

重复出现的同名占位符只返回一次;返回顺序为首次出现的位置。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] bool Prompt::isValid() const

判断模板是否可用:名称与正文都不能为空。

return 名称与正文都非空时返回 true。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Message Prompt::render(const QMap<QString, QString> &variables) const

variables 填充占位符,得到一条角色为 Message::Role::Prompt 的消息。

variables 中未提供的占位符会原样留在结果里。这是刻意的:模板填了一半 就发出去,模型多半会自行猜测缺失的内容,而把占位符摆在明面上至少 能让人一眼看出哪儿漏了。

Note: 渲染结果的角色是 Message::Role::Prompt 而不是 Message::Role::User, 以便在会话记录里区分"用户手打的"和"模板生成的"。发往服务端时两者都会被 当作 user 角色。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Prompt &Prompt::setContent(const QString &content)

设置模板正文。其中的双花括号占位符会被 getVariables() 与 render() 识别。

content 模板正文。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Prompt &Prompt::setDescription(const QString &description)

设置描述,用于在模板列表里说明用途。

description 描述文本。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Prompt &Prompt::setName(const QString &name)

设置名称。名称是模板在 Center 与 Dialog 中的索引键,Dialog::appendPrompt() 也通过它查找模板。

name 模板名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Prompt &Prompt::setTags(const QStringList &tags)

设置标签,供调用方分类。Visindigo 不解释标签的含义。

tags 标签列表。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Utility::JsonConfig Prompt::toJson() const

序列化为 JSON 对象。

这个function 从 Visindigo 0.17.0 开始支持。