#函数调用
函数调用允许通过让 LLM 使用结构化数据来为您的扩展添加动态功能,然后您可以使用这些数据触发扩展的特定功能。
注意
此功能目前正在开发中。实现细节可能会发生变化。
#示例用例
- 查询外部 API 以获取额外信息(新闻、天气、网络搜索等)。
- 根据用户输入执行计算或转换。
- 存储和回忆重要记忆或事实,包括 RAG 和数据库查询。
- 在对话中引入真正的随机性(掷骰子、抛硬币等)。
#官方支持使用函数调用的扩展
- 图像生成(内置)- 根据用户提示生成图像。
- 网络搜索 - 触发查询的网络搜索。
- RSS - 从 RSS 源获取最新新闻。
- AccuWeather - 从 AccuWeather 获取天气信息。
- D&D Dice - 为 D&D 游戏掷骰子。
#前提条件和限制
- 此功能仅适用于某些聊天补全源:OpenAI、Claude、MistralAI、Groq、Cohere、OpenRouter 和自定义 API 源。
- 文本补全 API 不支持函数调用,但一些本地托管的后端(如 Ollama 和 TabbyAPI)可以在聊天补全下以自定义 OpenAI 兼容模式运行。
- 必须首先由用户明确允许使用函数调用功能。这是通过在 AI 回应配置面板中启用"启用函数调用"选项来完成的。
- 不能保证 LLM 会执行任何函数调用。大多数都需要通过提示词进行明确的"激活"(例如,用户要求"掷骰子"、"获取天气"等)。
- 并非所有提示词都能触发工具调用。继续、扮演、背景('安静')提示词不允许触发工具调用。它们仍然可以在其响应中使用过去成功的工具调用。
#如何制作函数工具
#检查功能是否受支持
要确定是否支持函数工具调用功能,您可以从 SillyTavern.getContext()
对象调用 isToolCallingSupported
。这将检查当前 API 是否支持函数工具调用以及设置中是否启用了该功能。以下是如何检查功能是否受支持的示例:
#注册函数
要注册函数工具,您需要从 SillyTavern.getContext()
对象调用 registerFunctionTool
函数并传递所需参数。以下是如何注册函数工具的示例:
#取消注册函数
要停用函数工具,您需要从 SillyTavern.getContext()
对象调用 unregisterFunctionTool
函数并传递要禁用的函数工具的名称。以下是如何取消注册函数工具的示例:
#提示和技巧
- 成功的工具调用会作为可见历史的一部分保存,并将在聊天 UI 中显示,因此您可以检查实际的参数和结果。
- 如果您不想在聊天历史中看到工具调用。如果您想用自定义 CSS 设置样式或隐藏它们,请针对
.mes
元素上的toolCall
类,例如.mes.toolCall { display: none; }
或.mes.toolCall { color: #999; }
。