文档

集成

工具调用生成器

测试版功能

插件支持目前处于内部测试阶段。在此加入测试

要启用工具使用,过程会稍微复杂一些。有关适配 OpenAI API 的全面示例,请参阅openai-compat-endpoint 插件

您可以使用 ctl.getToolDefinitions() 读取可用工具的定义。例如,如果您正在制作在线模型适配器,则需要将工具定义传递给模型。

一旦模型开始进行工具调用,您需要将这些调用告知 LM Studio。

使用 ctl.toolCallGenerationStarted 报告工具调用生成的开始(即模型开始生成工具调用)。

使用 ctl.toolCallGenerationEnded 报告工具调用成功生成,或使用 ctl.toolCallGenerationFailed 报告工具调用生成失败。

(可选)您还可以使用 ctl.toolCallGenerationNameReceived 在工具名称可用时立即报告被调用的工具的名称。您还可以使用 ctl.toolCallGenerationArgumentFragmentGenerated 报告工具调用参数的片段,因为它们是生成的。这两种方法对于提供更好的用户体验很有用,但并非严格必要。

总而言之,您的生成器必须按以下顺序调用这些 ctl 方法:

  • 0 到 N 次调用 ctl.fragmentGenerated,以报告生成的非工具调用文本片段。
  • 对于每个工具调用:
    • 调用 ctl.toolCallGenerationStarted,以指示工具调用生成的开始。
    • (可选)调用 ctl.toolCallGenerationNameReceived,以报告被调用的工具的名称。
    • (可选)多次调用 ctl.toolCallGenerationArgumentFragmentGenerated,以报告工具调用参数的生成片段。
    • 调用 ctl.toolCallGenerationEnded 报告工具调用成功生成,或调用 ctl.toolCallGenerationFailed 报告工具调用生成失败。
    • 如果模型在工具调用之间/之后生成更多文本,则进行 0 到 N 次调用 ctl.fragmentGenerated,以报告生成的非工具调用文本片段。(通常不应该发生这种情况,但对于某些小型模型来说,技术上是可能的。关键是:这与模型接收工具结果并继续对话不同。这只是模型在发出工具请求后拒绝停止对话——工具结果尚未对模型可用。 当发生多轮预测时,即模型实际接收工具调用时,您的生成器函数将再次使用更新后的对话状态进行调用。)

某些 API 格式可能会将工具名称与工具调用生成的开头一起报告,在这种情况下,您可以在 ctl.toolCallGenerationStarted 之后立即调用 ctl.toolCallGenerationNameReceived

某些 API 格式可能没有增量工具调用更新(即一次性给出整个工具调用请求),在这种情况下,您只需调用 ctl.toolCallGenerationStarted,然后立即调用 ctl.toolCallGenerationEnded

此页面的源代码可在 GitHub 上获取