Class: ToolCallManager<TToolsOrContext, TContext>
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:213
chat() 메서드의 자동 도구 실행 루프를 위한 도구 호출 누적 및 실행을 관리합니다.
책임:
- 스트리밍 도구 호출 이벤트(ID, 이름, 인수)를 누적합니다.
- 도구 호출을 검증합니다(불완전한 호출은 필터링).
- 파싱된 인수로 도구
execute함수를 실행합니다. - 클라이언트가 확인할 수 있도록
TOOL_CALL_END이벤트를 발생시킵니다. - 대화 기록을 위한 도구 결과 메시지를 반환합니다.
이 클래스는 AI.chat() 메서드가 자동 도구 실행 루프를 처리할 때 내부적으로 사용됩니다. 사용자 지정 도구 실행 로직에 독립적으로 사용할 수도 있습니다.
예제
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();
}
타입 매개변수
TToolsOrContext
TToolsOrContext = ReadonlyArray<AnyTool>
TContext
TContext = TToolsOrContext extends ReadonlyArray<AnyTool> ? ContextFromTools<TToolsOrContext> : TToolsOrContext
생성자
생성자
new ToolCallManager<TToolsOrContext, TContext>(tools): ToolCallManager<TToolsOrContext, TContext>;
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:224
매개변수
tools
TToolsOrContext 확장하면 readonly AnyTool[] ? TToolsOrContext : readonly AnyTool[]
반환값
ToolCallManager<TToolsOrContext, TContext>
메서드
addToolCallArgsEvent()
addToolCallArgsEvent(event): void;
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:252
인수를 누적하기 위해 TOOL_CALL_ARGS 이벤트를 추가합니다(AG-UI).
매개변수
event
반환값
void
addToolCallStartEvent()
addToolCallStartEvent(event): void;
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:235
도구 호출 추적을 시작하기 위해 TOOL_CALL_START 이벤트를 추가합니다(AG-UI).
매개변수
event
반환값
void
clear()
clear(): void;
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:423
다음 반복을 위해 도구 호출 맵을 지웁니다.
반환값
void
completeToolCall()
completeToolCall(event): void;
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:270
최종 입력으로 도구 호출을 완료합니다. TOOL_CALL_END를 수신할 때 호출됩니다.
매개변수
event
반환값
void
executeTools()
executeTools(finishEvent, ...contextArgs): AsyncGenerator<AdapterYieldChunk, ModelMessage<
| string
| ContentPart<unknown, unknown, unknown, unknown, unknown>[]
| null>[], void>;
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:302
모든 도구 호출을 실행하고 도구 결과 메시지를 반환합니다. 스트리밍을 위해 TOOL_CALL_END 이벤트를 yield합니다.
매개변수
finishEvent
스트림의 RUN_FINISHED 이벤트
contextArgs
...ExecuteToolsContextArgs<TContext>
반환값
AsyncGenerator<AdapterYieldChunk, ModelMessage<
| string
| ContentPart<unknown, unknown, unknown, unknown, unknown>[]
| null>[], void>
getToolCalls()
getToolCalls(): ToolCall<unknown>[];
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:291
완료된 모든 도구 호출을 가져옵니다(유효한 ID와 이름으로 필터링).
반환값
ToolCall<unknown>[]
hasToolCalls()
hasToolCalls(): boolean;
정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:284
실행할 완료된 도구 호출이 있는지 확인합니다.
반환값
boolean