文档
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
CodeRabbit
Cloudflare
AG Grid
Netlify
Neon
WorkOS
Clerk
Convex
Electric
PowerSync
Sentry
Railway
Prisma
Strapi
Unkey
类引用
函数引用
接口引用
类型别名引用
变量引用
类引用

ToolCallManager

类: ToolCallManager

定义于: activities/chat/tools/tool-calls.ts:46

管理 chat() 方法的自动工具执行循环中的工具调用累积和执行。

职责

  • 累积流式工具调用事件(ID、名称、参数)
  • 验证工具调用(过滤掉不完整的调用)
  • 执行工具 execute 函数,并传入解析后的参数
  • 发出 TOOL_CALL_END 事件,供客户端查看
  • 返回工具结果消息,用于对话历史记录

该类由 AI.chat() 方法内部使用,以处理自动工具执行循环。它也可以独立使用于自定义工具执行逻辑。

示例

typescript
const manager = new ToolCallManager(tools);

// During streaming, accumulate tool calls
for await (const chunk of stream) {
  if (chunk.type === 'TOOL_CALL_START') {
    manager.addToolCallStartEvent(chunk);
  } else if (chunk.type === 'TOOL_CALL_ARGS') {
    manager.addToolCallArgsEvent(chunk);
  }
}

// After stream completes, execute tools
if (manager.hasToolCalls()) {
  const toolResults = yield* manager.executeTools(finishEvent);
  messages = [...messages, ...toolResults];
  manager.clear();
}

构造函数

构造器

ts
new ToolCallManager(tools): ToolCallManager;

定义于: activities/chat/tools/tool-calls.ts:50

参数

tools

只读 Tool<SchemaInput, SchemaInput, string>[]

Returns (返回)

ToolCallManager

方法

addToolCallArgsEvent()

ts
addToolCallArgsEvent(event): void;

定义于: activities/chat/tools/tool-calls.ts:72

添加 TOOL_CALL_ARGS 事件以累积参数 (AG-UI)

参数

event

ToolCallArgsEvent

Returns (返回)

void


addToolCallStartEvent()

ts
addToolCallStartEvent(event): void;

定义于: activities/chat/tools/tool-calls.ts:57

添加 TOOL_CALL_START 事件以开始跟踪工具调用 (AG-UI)

参数

event

ToolCallStartEvent

Returns (返回)

void


clear()

ts
clear(): void;

定义于: activities/chat/tools/tool-calls.ts:216

清除工具调用映射,为下一次迭代做准备

Returns (返回)

void


completeToolCall()

ts
completeToolCall(event): void;

定义于: activities/chat/tools/tool-calls.ts:86

完成工具调用,并传入最终输入。在收到 TOOL_CALL_END 时调用

参数

event

ToolCallEndEvent

Returns (返回)

void


executeTools()

ts
executeTools(finishEvent): AsyncGenerator<ToolCallEndEvent, ModelMessage<
  | string
  | ContentPart<unknown, unknown, unknown, unknown, unknown>[]
| null>[], void>;

定义于: activities/chat/tools/tool-calls.ts:118

执行所有工具调用并返回工具结果消息。产生 TOOL_CALL_END 事件以进行流式传输

参数

finishEvent

RunFinishedEvent

来自流的 RUN_FINISHED 事件

Returns (返回)

AsyncGenerator<ToolCallEndEvent, ModelMessage< | string | ContentPart<unknown, unknown, unknown, unknown, unknown>[] | null>[], void>


getToolCalls()

ts
getToolCalls(): ToolCall[];

定义于: activities/chat/tools/tool-calls.ts:107

获取所有完成的工具调用(过滤掉无效的 ID 和名称)

Returns (返回)

ToolCall[]


hasToolCalls()

ts
hasToolCalls(): boolean;

定义于: activities/chat/tools/tool-calls.ts:100

检查是否有任何完成的工具调用可以执行

Returns (返回)

boolean