`hasToolCall()`
hasToolCall()
가장 최근 스텝에서 지정된 툴 중 하나가 호출되면 중지하는 stop condition을 만듭니다. 이 함수는 generateText와 streamText의 stopWhen과 함께 사용하여, 지정된 툴 중 하나가 호출되었는지에 따라 툴 호출 루프를 언제 멈출지 제어합니다.
출처: 문서
본문
import { generateText, hasToolCall } from 'ai';
__PROVIDER_IMPORT__;
const result = await generateText({
model: __MODEL__,
tools: {
weather: weatherTool,
finalAnswer: finalAnswerTool,
},
// Stop when the finalAnswer tool is called
stopWhen: hasToolCall('finalAnswer'),
});
Import
import { hasToolCall } from "ai"
API Signature
Parameters (파라미터)
...toolNames:string[]— 하나 이상의 툴 이름입니다. 가장 최근 스텝에서 이 중 하나라도 호출되면 stop condition이 트리거됩니다.
Returns (반환값)
가장 최근 스텝에서 지정된 툴 중 하나가 호출되면 true를 반환하는 StopCondition 함수를 반환합니다. 이 함수는 generateText와 streamText의 stopWhen 파라미터와 함께 사용할 수 있습니다.
Examples (예제)
기본 사용법
특정 툴이 호출되면 멈춥니다.
import { generateText, hasToolCall } from 'ai';
const result = await generateText({
model: yourModel,
tools: {
submitAnswer: submitAnswerTool,
search: searchTool,
},
stopWhen: hasToolCall('submitAnswer'),
});
여러 툴 매칭
가장 최근 스텝에서 여러 툴 중 하나가 호출되면 멈춥니다.
import { generateText, hasToolCall } from 'ai';
const result = await generateText({
model: yourModel,
tools: {
weather: weatherTool,
search: searchTool,
finalAnswer: finalAnswerTool,
},
stopWhen: hasToolCall('weather', 'finalAnswer'),
});
다른 조건과 결합
여러 stop condition을 배열로 결합할 수 있습니다.
import { generateText, hasToolCall, isStepCount } from 'ai';
const result = await generateText({
model: yourModel,
tools: {
weather: weatherTool,
search: searchTool,
finalAnswer: finalAnswerTool,
},
// Stop when weather tool is called OR finalAnswer is called OR after 5 steps
stopWhen: [
hasToolCall('weather'),
hasToolCall('finalAnswer'),
isStepCount(5),
],
});
에이전트 패턴
최종 답변을 제공할 때까지 실행되는 에이전트의 일반적인 패턴입니다.
import { generateText, hasToolCall } from 'ai';
const result = await generateText({
model: yourModel,
tools: {
search: searchTool,
calculate: calculateTool,
finalAnswer: {
description: 'Provide the final answer to the user',
inputSchema: z.object({
answer: z.string(),
}),
execute: async ({ answer }) => answer,
},
},
stopWhen: hasToolCall('finalAnswer'),
});