AI 모델은 인터넷검색을 하지 못합니다.
AI 모델은 정말 인터넷 검색을 못할까?
LiteLLM을 Docker로 실행하고, Amazon Bedrock의 Nova 1.0과 Qwen2.5-1.5B-Instruct를 연결했습니다. LiteLLM Playground에서 오늘 날씨를 물었을 때 두 모델 모두 최신 날씨를 알 수 없다고 답변했습니다.
- 예제코드: https://github.com/choisungwook/portfolio/pull/975
[Bedrock Nova 답변]

[vLLM Qwen 답변]

그렇다면, AI 모델은 어떻게 검색을 요청할까?
AI 모델은 인터넷 검색을 못하기 때문에, tool을 호출해 달라는 구조화된 응답을 보냅니다. 아래 응답에서 stopReason은 tool_use이고, name은 호출할 tool, input.query는 검색어입니다.
{
"stopReason": "tool_use",
"toolUse": [
{
"toolUseId": "tooluse_i4XPcUE4L7lG2a1Sg7Wurs",
"name": "web_search",
"input": {
"query": "today's date in Korea"
}
}
]
}
tool_use 응답을 누군가는 input.query로 실제 검색을 수행하고, 검색 결과를 tool result로 다시 모델에 전달해야합니다. 모델은 인터넷 검색을 받고 최종 답변을 생성합니다.
웹 검색은 어디에서 실행할까?
AI gateway를 사용하는 구조에서는 웹 검색 tool을 다음 세 위치 중 한 곳에서 실행할 수 있습니다. tool call을 누가 실행하고 검색 결과를 누가 모델에 다시 전달하는지가 중요합니다.
- 클라이언트
- AI gateway
- AI provider
방법 1: 클라이언트에서 실행하기
클라이언트에서 처리하는 방식은 모델의 tool call을 애플리케이션이 직접 실행하는 구조입니다. 모델 요청에 web_search의 이름과 입력 형식을 등록하면, 모델이 필요한 순간 검색 요청을 반환합니다.

아래 예제는 모델에 검색 tool을 제공하고 tool call을 요청하는 단계입니다. 클라이언트는 응답의 tool call을 읽은 뒤 검색 API를 호출하고, 그 결과를 다시 모델에 전달해야 합니다.
WEB_SEARCH_TOOL = {
"type": "function",
"function": {
"name": "web_search",
"description": "Search the public web for current information and source URLs.",
"strict": True,
"parameters": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"],
"additionalProperties": False,
},
},
}
client.chat.completions.create(
model=model,
messages=messages,
tools=[WEB_SEARCH_TOOL],
tool_choice={"type": "function", "function": {"name": "web_search"}},
)
실습코드 전체를 호출하면 클라이언트가 오늘 서울 날씨를 검색하고, 검색 결과를 바탕으로 AI가 답변하는 것을 확인할 수 있습니다.

방법 2: AI gateway에서 실행하기
AI gateway에서 처리하는 방식은 gateway가 모델의 검색 tool call을 가로채 실행하는 구조입니다. LiteLLM은 litellm_web_search tool call을 감지한 뒤 설정한 검색 provider로 검색하고, 검색 결과를 포함해 모델을 한 번 더 호출합니다.
- 참고: LiteLLM Web Search Interception 문서

LiteLLM은 검색 엔진과 websearch_interception을 설정해야 합니다. 아래처럼 litellm_settings 아래에 callback과 검색 설정을 배치합니다.
litellm_settings:
callbacks:
- websearch_interception
websearch_interception_params:
enabled_providers:
- openai
- bedrock
search_tool_name: local-search
search_tools:
- search_tool_name: local-search
litellm_params:
search_provider: searxng
api_base: os.environ/SEARXNG_URL
클라이언트는 AI 모델을 호출할 때 LiteLLM이 가로챌 litellm_web_search tool을 설정합니다.
LITELLM_WEB_SEARCH_TOOL = {
"type": "function",
"function": {
"name": "litellm_web_search",
"description": "Search the public web for current information and source URLs.",
"strict": True,
"parameters": {
"type": "object",
"properties": {"query": {"type": "string"}},
"required": ["query"],
"additionalProperties": False,
},
},
}
client.chat.completions.create(
model=parse_model_argument(),
messages=[
{
"role": "user",
"content": os.getenv(
"QUESTION", "오늘은 몇 월 며칠이고 서울 날씨는 어때요? 출처 URL과 함께 답하세요."
),
}
],
tools=[LITELLM_WEB_SEARCH_TOOL],
tool_choice={"type": "function", "function": {"name": "litellm_web_search"}},
)
방법 3: AI provider에서 실행하기
AI provider 방식은 모델을 제공하는 서비스가 검색 tool까지 실행하는 구조입니다. AI provider가 웹 grounding이나 server-side tool use를 제공하면 애플리케이션이 검색 API를 직접 호출합니다.
다만 이 기능은 모든 AI provider에 공통으로 제공되지 않습니다. 모델 버전, API 종류, 리전, IAM 권한, provider의 지원 범위를 함께 확인해야 합니다.
예를 들어 Amazon Bedrock의 Amazon Nova는 tool use를 지원하며, 최신 Nova 문서에는 nova_grounding system tool을 사용하는 웹 grounding이 설명되어 있습니다. nova grouding 기능을 활성화하면 Nova가 검색 필요성을 판단하고 검색 결과를 바탕으로 답변을 만들 수 있습니다.
- Amazon Bedrock tool use
- Amazon Nova Web Grounding

정리
AI 모델은 인터넷 검색을 할 수 없어 tool call을 통해 web_search tool을 사용해야합니다. 그래서 AI모델 인터넷검색의 핵심은 tool call을 어디에서 실행하고 결과를 어떻게 다시 전달하는지입니다.
tool call 실행하는 곳을 분류하고 장점만 나열하면,
1. 클라이언트는 실행 흐름을 세밀하게 제어하기 좋고,
2. AI gateway는 여러 모델에 공통 정책을 적용하기 좋으며,
3. AI provider 방식은 구현을 줄이는 대신 provider의 지원 범위에 의존합니다.
'전공영역 공부 기록' 카테고리의 다른 글
| AWS bedrock에서 Anthropic, openAI모델 사용 활성화하는 방법 (0) | 2026.08.17 |
|---|---|
| LLM - 멀티턴 대화가 동작하는 원리 (0) | 2026.08.16 |
| 스터디정리-프롬프트를 보내고 토큰을 받기까지, 서빙엔진 안에서 벌어지는 일 (0) | 2026.08.16 |
| LLM모델의 Attention을 간단히 이해해보자 (1) | 2026.08.09 |
| 다운로드한 AI 모델을 실행하려면 무엇이 필요할까?(서빙) (0) | 2026.08.09 |