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