`toolSearch()`
toolSearch()
주변 생성의 지연 로딩(deferred) 툴들을 이름과 설명으로 검색하는 툴을 만들어요. 팩토리는 인자를 받지 않아요. generateText, streamText, ToolLoopAgent, 또는 @ai-sdk/workflow의 WorkflowAgent와 함께 사용하세요. WorkflowAgent는 직접 툴 호출을 지원해요. 다른 API들은 toolDiscovery: 'conversation'으로 구성된 코드 모드도 지원해요.
import { toolSearch } from 'ai';
const search = toolSearch();
직접 호출 및 코드 모드 예시(코드 모드가 툴 정의 캐시를 보존하는 방법 포함)는 Tool Search 가이드를 참고하세요.
출처: 문서
본문
모델 입력 (Model Input)
모델은 검색 툴에 다음 입력을 제공해요:
{ "query": "weather forecast" }
query는 필수이며 비어 있지 않은 검색 키워드 문자열이에요. 검색은 로컬이고 대소문자를 구분하지 않으며, 툴 이름과 설명의 단어를 매칭해요. 카멜케이스 이름은 단어로 분리돼요. 이름 매칭이 설명 매칭보다 위에 순위가 매겨져요. 동점 점수는 등록 순서를 보존해요. 함수 설명은 현재 툴 컨텍스트와 샌드박스로 해석돼요. 임베딩 서비스나 추가 모델 호출은 사용되지 않아요.
출력 (Output)
{
tools: [
{ name: 'getForecast', description: 'Get the weather forecast for a city.' },
],
}
결과에는 최대 5개의 매칭 툴이 이름과 선택적 설명과 함께 포함돼요. 스키마는 포함되지 않아요. 매칭이 없으면 { tools: [] }을 반환해요. 반환된 모든 매칭은 발견(discovery)을 위해 대기열에 들어가요. 새로 발견된 툴은 정의가 제공된 후 다음 모델 스텝에서만 호출할 수 있어요. 검색과 같은 응답에서의 병렬 호출은 새로 발견된 툴을 사용할 수 없어요. 코드 모드의 경우 현재 실행을 끝내고 기능 업데이트를 기다리세요.
발견 라이프사이클 (Discovery Lifecycle)
다음 모델 스텝 전에, SDK는 발견된 툴을 구성된 호출자를 통해 사용 가능하게 해요:
- 직접 호출: 프로바이더가 업데이트된 툴 정의를 받아요.
- 코드 모드: SDK가 업데이트된 기능 카탈로그를 담은 사용자 메시지를 추가해요. 프로바이더가 보는 코드 모드 정의는 변경되지 않아요. 기존 카탈로그는 대화에 남아요. 최신 카탈로그가 현재 사용 가능한 완전한 툴 세트를 설명해요.
실제 프롬프트 캐시 재사용은 프로바이더에 따라 달라요. 코드 모드 검색도 toolDiscovery: 'conversation'이 필요해요. 설명 발견과 프로바이더 호출자는 지원되지 않아요.
발견된 툴은 activeTools의 적용을 받아 생성이 끝날 때까지 로드된 상태를 유지해요. 검색은 activeTools로 제외된 툴을 발견할 수 없어요. 발견 상태는 같은 에이전트나 툴 인스턴스를 재사용하는 호출을 포함해 생성 호출 간에 격리돼요.
모델이 검색하고, 발견된 툴을 사용하고, 답변할 수 있도록 generateText와 streamText에서 다단계 stopWhen 조건을 설정하세요.
더 알아보기 (Learn more)
- generateText
- streamText
- embed
- embedMany
- rerank
- generateImage
- experimental_streamTranscribe
- experimental_streamTranslate
- transcribe
- generateSpeech
- experimental_generateVideo
- experimental_evaluate
- uploadFile
- uploadSkill
- Agent (Interface)
- ToolLoopAgent
- createAgentUIStream
- createAgentUIStreamResponse
- pipeAgentUIStreamToResponse
- experimental_startBatch
- tool
- experimental_getBatchStatus
- dynamicTool
- experimental_getBatchResults
- experimental_cancelBatch
- createMCPClient
- experimental_getRealtimeToolDefinitions
- toolSearch
- experimental_listBatches
- MCP Apps
- Experimental_StdioMCPTransport
- jsonSchema
- zodSchema
- valibotSchema
- Output
- filterActiveTools
- ModelMessage
- UIMessage
- validateUIMessages
- safeValidateUIMessages
- Experimental_SandboxSession
- createProviderRegistry
- customProvider
- cosineSimilarity
- wrapLanguageModel
- wrapImageModel
- LanguageModelV4Middleware
- extractReasoningMiddleware
- simulateStreamingMiddleware
- defaultInstructionsMiddleware
- defaultSettingsMiddleware
- addToolInputExamplesMiddleware
- extractJsonMiddleware
- isStepCount
- hasToolCall
- isLoopFinished
- simulateReadableStream
- smoothStream
- generateId
- createIdGenerator
- DefaultGeneratedFile