본문으로 건너뛰기

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&lt;TToolsOrContext, TContext>

메서드

addToolCallArgsEvent()

addToolCallArgsEvent(event): void;

정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:252

인수를 누적하기 위해 TOOL_CALL_ARGS 이벤트를 추가합니다(AG-UI).

매개변수

event

ToolCallArgsEvent

반환값

void


addToolCallStartEvent()

addToolCallStartEvent(event): void;

정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:235

도구 호출 추적을 시작하기 위해 TOOL_CALL_START 이벤트를 추가합니다(AG-UI).

매개변수

event

ToolCallStartEvent

반환값

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

ToolCallEndEvent

반환값

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

RunFinishedEvent

스트림의 RUN_FINISHED 이벤트

contextArgs

...ExecuteToolsContextArgs&lt;TContext>

반환값

AsyncGenerator&lt;AdapterYieldChunk, ModelMessage&lt; | string | ContentPart&lt;unknown, unknown, unknown, unknown, unknown>[] | null>[], void>


getToolCalls()

getToolCalls(): ToolCall<unknown>[];

정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:291

완료된 모든 도구 호출을 가져옵니다(유효한 ID와 이름으로 필터링).

반환값

ToolCall&lt;unknown>[]


hasToolCalls()

hasToolCalls(): boolean;

정의 위치: packages/ai/src/activities/chat/tools/tool-calls.ts:284

실행할 완료된 도구 호출이 있는지 확인합니다.

반환값

boolean