웹 검색
웹 검색 (Web Search)
WebSearch 캐퍼빌리티는 에이전트에 웹 검색 기능을 더해 줘요. 다른 provider-adaptive tools처럼 모델이 지원하면 공급자의 네이티브 웹 검색을 사용하고, 다른 모델에서는 로컬 구현으로 폴백할 수 있습니다.
출처: 문서
본문
WebSearch는 기본적으로 네이티브 전용이에요. 네이티브 측은 WebSearchTool로 뒷받침됩니다 (공급자 지원과 설정은 Web Search Tool 참고) — 네이티브 인스턴스를 완전히 제어해야 한다면 native=WebSearchTool(...)를 직접 전달하세요.
로컬 측은 local='duckduckgo' (또는 local=True)를 전달하면 DuckDuckGo 폴백을 사용합니다 (duckduckgo 옵션 그룹 필요). 다른 검색 공급자는 common_tools의 Tavily 래퍼, Pydantic AI Harness의 ExaSearchToolset, 또는 callable, Tool, AbstractToolset 아무거나 사용할 수 있어요.
네이티브 설정 필드: search_context_size, user_location, blocked_domains, allowed_domains, max_uses, 그리고 OpenAI Responses의 external_web_access. 도메인과 max_uses 제약은 네이티브 지원이 필요해요. external_web_access=False를 설정하는 것도 네이티브 지원이 필요한데, 로컬 폴백은 캐시되거나 인덱스 전용 검색을 보장할 수 없기 때문입니다.
from pydantic_ai.capabilities import WebSearch
# Native-only -- raises on models without native web search
WebSearch()
# Native preferred; DuckDuckGo fallback (needs `pydantic-ai-slim[duckduckgo]`)
WebSearch(local='duckduckgo')
# Native preferred; custom callable as fallback
def my_search(query: str) -> str: ...
WebSearch(local=my_search)