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