我希望这个问题在其他地方没有得到实质性的回答——我搜索了但没有找到关于这种方法的直接讨论。
问题
目前,似乎没有办法在 Discourse AI 对话中调用其他代理(角色)。我所说的“代理”是指调用具有主要系统提示中不存在的专门能力或指令的另一个角色。
这带来了一个挑战:根据用例的不同,可能需要创建非常大的系统提示来涵盖所有情况。结果是,我们最终会得到很少使用的指令,这可能会不必要地给 AI 在每次交互中处理带来开销或混淆。
可行的解决方案:将工具用作指令注入器
我能够使用自定义工具来注入边缘情况的指令。该方法如下:
- 保持主要系统提示专注于核心身份和常见行为
- 创建一个带有通用参数的工具,例如:
- topic: string: 要解决的边缘情况主题或挑战(必需) - 将专门的指令直接嵌入到工具的 JavaScript 中,在调用时返回
- 在主提示中添加一小段指令块,定义何时调用该工具
当用户消息满足调用工具的标准时,它会触发并将专门的指令注入到对话上下文中。它完美地奏效了。
示例用例
考虑一个通用助手 AI,它偶尔需要切换到专门的模式——例如,详细的技术故障排除或深入的研究综合。与其在每次对话中都加载那些广泛的协议(其中大部分是常规问题),不如使用工具仅在对话上下文需要时注入专门的指令。主提示保持精简并专注于常见任务,而专门的模式仅在被触发时激活。
对社区的疑问
-
对这种模式有何看法? 将工具用于非外部 API 调用或数据检索,而是用作上下文激活的专门指令集的容器。
-
是否有计划或现有方法来实际调用其他代理/角色并将其添加到对话中? 比如在对话中调用一个专家角色,并将其自己的系统提示带入上下文。
-
我应该注意哪些陷阱? 我目前只在私有 AI 消息的上下文中使用此功能。
好奇其他人是否探索过这种方法,或者我是否遗漏了更优雅的解决方案。