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

Visindigo::Agent::Center Class

class Visindigo::Agent::Center

智能体配置与对话的全局注册表. 详情...

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

公开成员函数

(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &addFunction(Visindigo::Agent::Function *function)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &addMCP(const Visindigo::Agent::MCP &server)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &addModel(const Visindigo::Agent::Model &model)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &addPrompt(const Visindigo::Agent::Prompt &prompt)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &addProvider(const Visindigo::Agent::Provider &provider)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &addSkill(const Visindigo::Agent::Skill &skill)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Dialog *cloneDialog(const QString &dialogId)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Dialog *createDialog()
(自 Visindigo 0.17.0 引入) bool fromJson(const Visindigo::Utility::JsonConfig &json)
(自 Visindigo 0.17.0 引入) QString getDefaultProvider() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Dialog *getDialog(const QString &id) const
(自 Visindigo 0.17.0 引入) QStringList getDialogIds() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Function *getFunction(const QString &id) const
(自 Visindigo 0.17.0 引入) QStringList getFunctionIds() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::MCP getMCP(const QString &name) const
(自 Visindigo 0.17.0 引入) QList<Visindigo::Agent::MCP> getMCPs() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Model getModel(const QString &id) const
(自 Visindigo 0.17.0 引入) QStringList getModelIds() const
(自 Visindigo 0.17.0 引入) QList<Visindigo::Agent::Model> getModels() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Prompt getPrompt(const QString &name) const
(自 Visindigo 0.17.0 引入) QList<Visindigo::Agent::Prompt> getPrompts() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Provider getProvider(const QString &id) const
(自 Visindigo 0.17.0 引入) QList<Visindigo::Agent::Provider> getProviders() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Skill getSkill(const QString &name) const
(自 Visindigo 0.17.0 引入) QList<Visindigo::Agent::Skill> getSkills() const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Dialog *regenerate(const QString &dialogId)
(自 Visindigo 0.17.0 引入) void removeDialog(const QString &id)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &removeFunction(const QString &id)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &removeMCP(const QString &name)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &removeModel(const QString &id)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &removePrompt(const QString &name)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &removeProvider(const QString &id)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &removeSkill(const QString &name)
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Dialog *restoreDialog(const Visindigo::Utility::JsonConfig &json)
(自 Visindigo 0.17.0 引入) Visindigo::Utility::JsonConfig saveDialog(const Visindigo::Agent::Dialog *dialog) const
(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center &setDefaultProvider(const QString &id)
(自 Visindigo 0.17.0 引入) Visindigo::Utility::JsonConfig toJson() const

静态公开成员

(自 Visindigo 0.17.0 引入) Visindigo::Agent::Center *getInstance()

详细说明

Center 集中保存模型池、服务商、技能、工具服务器、函数、提示模板以及 全部对话,并提供唯一的进程级实例。它是一个单例,但不是一个"什么都干" 的类:它只负责按 id 存取与给出默认项,真正的执行逻辑在 Dialog::run() 里,这样想换一套执行策略时不必改动注册表。

按 id 索引而不是按名称,是因为名称是给人看的,可能重复、可能改名, 而 id 一旦生成就稳定。凭据也都集中在模型池里,Provider 与 Dialog 只保存 id,于是轮换一次密钥只需要改一处。

Warning: 传入指针的接口(addFunction()、createDialog() 等)转移所有权。 销毁必须走对应的 remove 接口,直接 delete 会让注册表留下悬空指针。

成员函数文档

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::addFunction(Visindigo::Agent::Function *function)

注册一个全局函数,以 Function::getId() 为键,所有权转移给 Center。

同 id 会替换旧项并释放旧对象。传入 nullptr 什么也不做。

Note: 只接受 id 为空的函数是不会成功的——id 既是索引键也是发给模型的工具名, 没有它这个函数就无法被调用。传入 nullptr 与空 id 都不会改变现有注册, 因此不需要在调用前先判断一次。

function 要注册的函数对象,所有权随之转移给 Center。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::addMCP(const Visindigo::Agent::MCP &server)

注册一个全局工具服务器配置,以名称为键。同名会覆盖旧项。

server 要注册的工具服务器配置;其名称为空时会被忽略。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::addModel(const Visindigo::Agent::Model &model)

注册一个模型,以 Model::getId() 为键。同 id 会覆盖旧项。

Note: 注册时会保留传入对象原有的 id,因此"先取出、改一改、再放回"是可用的 更新方式。

model 要注册的模型;其 id 为空时会被忽略。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::addPrompt(const Visindigo::Agent::Prompt &prompt)

注册一个全局提示模板,以名称为键。同名会覆盖旧项。

prompt 要注册的提示模板;其名称为空时会被忽略。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::addProvider(const Visindigo::Agent::Provider &provider)

注册一个服务商,以 Provider::getId() 为键。同 id 会覆盖旧项。

provider 要注册的服务商;其 id 为空时会被忽略。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::addSkill(const Visindigo::Agent::Skill &skill)

注册一个全局技能,以名称为键。同名会覆盖旧项。

skill 要注册的技能;其名称为空时会被忽略。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Dialog *Center::cloneDialog(const QString &dialogId)

以现有对话为模板建立一条新对话,返回新对话的指针;原对话保留。

新对话的 Dialog::getBranchFromID() 指向原对话。两条对话各自独立演化, 互不影响。

dialogId 不存在时返回 nullptr。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Dialog *Center::createDialog()

建立一条新对话并注册,返回其指针。id 由对话自己在构造时生成。

这个function 从 Visindigo 0.17.0 开始支持。

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

用存档整体替换当前注册表。

Note: 这是替换而不是合并:已经存在的对话会被销毁。合并两份存档看起来更 友好,但同名项该保留谁的、对话 id 撞了该听谁的,都无法给出一个不需要 调用方补充规则的回答,因此不如让调用方自己决定怎么拼。

json 注册表存档。

return 存档为空时返回 false,否则返回 true。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QString Center::getDefaultProvider() const

返回默认服务商的 id;未设置时返回空串。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Dialog *Center::getDialog(const QString &id) const

按 id 返回对话。不存在时返回 nullptr。

Note: 返回的是借用指针,所有权仍在 Center。

id 对话 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QStringList Center::getDialogIds() const

返回全部对话 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Function *Center::getFunction(const QString &id) const

按 id 返回全局函数。不存在时返回 nullptr。

Note: 返回的是借用指针,所有权仍在 Center;调用方不得删除它。

id 函数 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QStringList Center::getFunctionIds() const

返回全部全局函数 id。

这个function 从 Visindigo 0.17.0 开始支持。

[static, since Visindigo 0.17.0] Visindigo::Agent::Center *Center::getInstance()

返回唯一实例,首次调用时创建。实例在进程结束前不会被销毁。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::MCP Center::getMCP(const QString &name) const

按名称返回全局工具服务器配置。不存在时返回一个 MCP::isValid() 为 false 的空对象。

name 工具服务器名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QList<Visindigo::Agent::MCP> Center::getMCPs() const

返回全部全局工具服务器配置。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Model Center::getModel(const QString &id) const

按 id 返回模型。不存在时返回一个 Model::isValid() 为 false 的空模型, 因此判断"有没有"请用 isValid() 而不是别的字段。

id 模型 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QStringList Center::getModelIds() const

返回全部模型 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QList<Visindigo::Agent::Model> Center::getModels() const

返回全部模型。

这个function 从 Visindigo 0.17.0 开始支持。

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

按名称返回全局提示模板。不存在时返回一个 Prompt::isValid() 为 false 的空对象。

name 模板名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QList<Visindigo::Agent::Prompt> Center::getPrompts() const

返回全部全局提示模板。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Provider Center::getProvider(const QString &id) const

按 id 返回服务商。不存在时返回一个 Provider::isValid() 为 false 的空对象。 id 服务商 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QList<Visindigo::Agent::Provider> Center::getProviders() const

返回全部服务商。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Skill Center::getSkill(const QString &name) const

按名称返回全局技能。不存在时返回一个 Skill::isValid() 为 false 的空对象。

name 技能名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] QList<Visindigo::Agent::Skill> Center::getSkills() const

返回全部全局技能。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Dialog *Center::regenerate(const QString &dialogId)

重新生成最后一条回答:克隆到"最后一条助手消息之前",然后立刻执行。

结果是一条新对话,它不是"修改了原对话",而是取代了原对话——原对话连同 那次被否决的回答一起留在注册表里,随时可以翻回去看。分支关系记录在新对话 的 Dialog::getBranchFromID() 上,因此不需要额外的版本列表。

dialogId 不存在时返回 nullptr。原对话没有助手消息时,等同于一次 普通的重新执行。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] void Center::removeDialog(const QString &id)

移除并销毁一条对话。id 不存在时什么也不做。

这是销毁对话的正确方式;直接 delete 会让注册表留下悬空指针。

id 对话 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::removeFunction(const QString &id)

移除并释放一个全局函数。挂载了同 id 函数的对话会重新解析到这个空位, 它们自己的副本不受影响。

id 函数 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::removeMCP(const QString &name)

移除一个全局工具服务器配置。

name 工具服务器名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::removeModel(const QString &id)

移除一个模型。已经引用该 id 的 Provider 与 Dialog 不会因此报错,只是 在挑选模型时挑不到它。

id 模型 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::removePrompt(const QString &name)

移除一个全局提示模板。

name 模板名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::removeProvider(const QString &id)

移除一个服务商。若它正是默认服务商,默认项会被一并清空——留着指向一个 不存在的服务商,只会在下次执行时得到一句莫名其妙的失败。

id 服务商 id。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::removeSkill(const QString &name)

移除一个全局技能。挂载了同名技能的对话不受影响:它们保存的是自己的副本。

name 技能名称。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Dialog *Center::restoreDialog(const Visindigo::Utility::JsonConfig &json)

从存档恢复一条对话并注册,返回其指针。

先恢复内容再注册,这样注册用的就是存档里的 id,而不是新建时临时生成的那个; 否则恢复出来的对话会与存档里的引用对不上。

json 对话存档。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Utility::JsonConfig Center::saveDialog(const Visindigo::Agent::Dialog *dialog) const

导出一条对话的存档。dialog 为空时返回空对象。

这个function 从 Visindigo 0.17.0 开始支持。

[since Visindigo 0.17.0] Visindigo::Agent::Center &Center::setDefaultProvider(const QString &id)

设置没有指定服务商的对话默认使用哪一个。传入空串表示取消默认项。

Note: 这里不校验 id 是否存在,以便先设默认、后注册服务商;代价是写错 id 时只会在执行阶段表现为"没有可用的服务商"。

这个function 从 Visindigo 0.17.0 开始支持。

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

序列化整个注册表:模型池、服务商、技能、工具服务器、提示模板、默认服务商 以及全部对话。

Warning: 产物中含有模型凭据,见 Model::setToken() 的警告。

这个function 从 Visindigo 0.17.0 开始支持。