체험
검색 5,000회
US$9.25
US$1.85/1K 검색
- 에이전트 하나에 연결
- 가장 큰 팩과 동일한 API
- 크레딧은 만료되지 않음
사용 사례 · AI 에이전트 · 도구 이름 web_search
검색은 할 수 있지만 읽지는 못하는 에이전트는 스니펫만으로 추측합니다. 검색과 읽기를 모두 수행하는 도구 하나를 제공하세요. 실시간 웹을 검색하고 처음 몇 개의 페이지를 깔끔한 Markdown으로 반환하며, 모델이 인용할 수 있도록 번호를 매깁니다.
빠른 답변
AI 에이전트에게 페이지 콘텐츠를 반환하는 웹 검색 도구를 어떻게 제공하나요?
웹 검색 API를 검색 쿼리를 받아 번호가 매겨진 출처와 해당 페이지 텍스트를 반환하는 도구로 감싸세요. LLMWebSearch은 이를 한 번의 호출로 수행합니다. 실시간 검색의 순위 결과와 처음 3개 페이지의 본문을 Markdown으로 읽어 크레딧 1개로 제공합니다. 가격은 검색 5,000회에 US$9.25부터 시작하여 US$1.20/1K 검색까지 내려갑니다. KYC 없이, 암호화폐로 결제하세요.
| 도구 | POST https://llmwebsearch.com/api/v1/search을 호출하는 web_search(query, recent) |
|---|---|
| 반환값 | 순위 결과 최대 20개, 처음 3개는 본문을 Markdown으로 포함 |
| 길이 제어 | 페이지당 max_chars, 페이지 수는 read, 목록은 max_results |
| 비용 | 크레딧 1개로 검색 1회를 이용할 수 있습니다. 최대 20개의 순위 결과를 받고, 상위 3개 페이지의 본문을 읽어 Markdown으로 반환합니다. 4~10개 페이지를 읽으면 크레딧 2개가 됩니다. 오류로 끝난 호출에는 비용이 청구되지 않습니다 |
| 필터 | 결과의 국가와 언어, 기간(지난 하루, 주, 월 또는 연도), 웹 또는 뉴스 결과, 포함하거나 제외할 도메인을 선택할 수 있습니다 |
| 바로 쓸 수 있는 통합 | MCP 서버, OpenAI 함수 호출, LangChain 및 LlamaIndex, n8n, OpenClaw |
답이 스니펫 안에 있는 경우는 드물기 때문입니다. 검색 결과 페이지는 검색 엔진이 고른 제목과 한두 줄만 보여줍니다. 사용자가 물어본 숫자, 날짜, 규칙은 페이지 더 아래에 있습니다.
스니펫만 보는 에이전트에게는 두 가지 나쁜 선택지밖에 없습니다. 단편만으로 답하며 틀릴 위험을 감수하거나, 각 페이지를 가져오기 위해 두 번째 도구를 호출하는 것입니다. 두 번째 방법은 왕복 횟수와 도구 정의를 두 배로 늘립니다.
LLMWebSearch에서는 처음 몇 페이지가 이미 읽힌 상태로 도착합니다. 내비게이션, 광고, 쿠키 배너가 제거되므로 모델은 토큰을 콘텐츠에 씁니다. 나머지 결과에는 여전히 스니펫이 붙어 있어 모델이 다시 검색할지 판단하는 데 도움이 됩니다.
스키마를 작게 유지하세요. 필수 query 하나와 최대 한두 개의 스위치만 두세요. 모델은 단순한 도구를 더 안정적으로 호출합니다. 아래 예시는 time_range=month에 매핑되는 recent 플래그를 노출하며, 나머지는 모두 코드에 고정되어 있습니다.
함수는 JSON이 아니라 일반 텍스트를 반환합니다. 각 출처는 번호, 제목, URL로 시작하고 그 뒤에 Markdown이 이어집니다. 이 배치는 모델이 [2] 같은 인용을 자연스럽게 쓰도록 합니다.
에이전트가 이미 web_search라는 이름의 도구를 갖고 있다면, Claude Code와 OpenClaw처럼, search_web 같은 다른 이름을 붙이세요. 같은 이름의 도구 두 개는 모델을 혼란스럽게 합니다.
import json
import os
import requests
API = "https://llmwebsearch.com/api/v1/search"
HEADERS = {"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]}
# Tool definition in the OpenAI function-calling format; most agent frameworks accept the same JSON schema.
WEB_SEARCH_TOOL = {
"type": "function",
"function": {
"name": "web_search",
"description": "Search the live web. Returns numbered sources; the first ones include the page text in Markdown.",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "A short search query, 3 to 8 words"},
"recent": {"type": "boolean", "description": "True to keep only results from the past month"},
},
"required": ["query"],
},
},
}
def web_search(query, recent=False, read=3, max_chars=4000):
"""Run one search (1 credit with read <= 3) and return compact text the model can cite."""
body = {"q": query, "max_results": 5, "read": read, "max_chars": max_chars}
if recent:
body["time_range"] = "month"
resp = requests.post(API, headers=HEADERS, json=body, timeout=60)
resp.raise_for_status()
lines = []
for r in resp.json()["results"]:
lines.append(f"[{r['position']}] {r['title']} — {r['url']}")
if r.get("content_status") == "ok":
lines.append(r["content"])
else:
lines.append(r.get("snippet", ""))
lines.append("")
return "\n".join(lines)
def run_tool_call(call):
"""Execute a tool call returned by the model and give back the text for the tool message."""
args = json.loads(call["function"]["arguments"])
return web_search(args["query"], recent=args.get("recent", False))답이 변하는 사실이나 모델이 알 수 없는 사실에 달려 있을 때 검색하세요. 가격, 버전, 법률, 일정, 최근 사건이 여기에 해당합니다. 정의나 안정적인 지식은 보통 해당하지 않습니다.
이 규칙을 시스템 프롬프트에 적고, 예산을 추가하세요. 세 가지 습관이 도움이 됩니다:
세 가지 파라미터가 모델에 도달하는 텍스트 양을 결정합니다. read은 읽을 페이지 수를 0에서 10까지 설정합니다. max_chars는 각 페이지를 500에서 50,000자까지 제한합니다. max_results은 나열할 결과 수를 1에서 20까지 설정합니다.
챗 에이전트의 경우 read=3와 max_chars=4000로 검색 한 번당 약 12,000자의 페이지 텍스트가 반환됩니다. 그러면 한 대화에서 여러 번 검색할 여지가 남습니다. 진행하면서 요약하는 리서치 작업에는 더 긴 페이지도 괜찮습니다.
word_count 필드는 잘리기 전 전체 페이지가 얼마나 길었는지 알려줍니다. 에이전트는 이를 사용해 extract endpoint로 더 가져올지 판단할 수 있습니다.
결과는 제목, URL, 스니펫과 함께 여전히 반환되지만 콘텐츠는 없습니다. content_status 필드가 이유를 알려줍니다.
blocked_by_robots: 사이트의 robots.txt가 저희 리더를 허용하지 않습니다.blocked_by_site_policy: robots.txt에 Content-Signal: ai-input=no를 설정한 사이트는 해당 페이지의 콘텐츠가 결과에 포함되지 않습니다.target_refused: 사이트가 거부 응답을 보냈습니다. 상태는 target_status에 있습니다.fetch_failed 또는 fetch_timeout: 페이지가 제때 로드되지 않았습니다.사이트가 저희 리더를 거부하면, 결과는 콘텐츠 없이 해당 사이트의 상태와 함께 반환됩니다. 저희는 CAPTCHA를 풀거나 계정에 로그인하거나 차단 또는 페이월을 우회하지 않습니다. 페이지가 비어서 돌아오면 에이전트에게 스니펫이나 다른 출처를 사용하라고 알려주세요. 각 페이지에 무슨 일이 있었든 검색 자체는 여전히 1크레딧입니다.
내장 도구는 편리하지만 제어권이 적습니다. 2026년 10월 22일 기준으로, OpenAI의 web_search 도구는 1,000회 호출당 $10에 검색 콘텐츠를 입력 토큰으로 청구합니다. Anthropic의 Claude 웹 검색도 1,000회 검색당 $10에 토큰 비용이 더해집니다. Gemini 3 그라운딩은 유료 티어에서 월 5,000회 검색을 무료로 포함하고, 그 이후에는 1,000회당 $14입니다.
이 도구들은 대부분 원본 페이지가 아니라 인용이 포함된 작성된 답변을 반환합니다. 또한 검색을 하나의 모델 공급업체에 묶습니다. 독립형 도구는 어떤 모델과도 작동하며 각 페이지의 길이를 설정할 수 있습니다. 내장 도구 비교에 전체 표가 있습니다.
read가 3 이하일 때 검색 한 번에 1크레딧입니다. 팀에서 사용하는 어시스턴트가 하루 100개 질문에 각각 4번 검색으로 답하면 한 달에 약 12,000회 검색입니다. US$41.25의 검색 25,000회는 그 달과 다음 달 대부분을 충당합니다.
개발자 한 명이 사용하는 코딩 에이전트는 하루에 20번, 한 달에 약 600번 검색할 수 있습니다. 그러면 US$9.25의 검색 5,000회가 몇 달간 지속됩니다. 크레딧은 만료되지 않기 때문입니다. 비용 가이드에 더 큰 워크로드의 계산이 나와 있습니다.
검색 5,000회에서 프로토타입하고, 에이전트가 일상적으로 쓰이면 검색 25,000회이나 검색 100,000회로 옮기세요.
검색 5,000회
US$9.25
US$1.85/1K 검색
검색 25,000회
US$41.25
US$1.65/1K 검색
검색 100,000회
US$145
US$1.45/1K 검색
모든 요금제에 포함: 상위 3개 페이지를 Markdown으로 읽기 · 국가, 언어, 시간, 도메인 필터 · 실패한 호출은 과금되지 않음 · 크레딧은 만료되지 않음
네, 검색을 도구로 노출하는 작은 MCP 서버를 통해 가능합니다. MCP 페이지에 코드와 클라이언트 설정이 있습니다.
네. 위의 스키마는 일반 JSON Schema이며, Anthropic, Google, Mistral, 오픈소스 프레임워크가 약간의 변경으로 받아들입니다. 도구는 저희 HTTPS endpoint만 호출합니다.
도구 래퍼에서 호출을 세고 예산이 소진되면 짧은 메시지를 반환하세요. 예산을 시스템 프롬프트에도 넣어 모델이 계획에 반영하게 하세요.
시도할 수 있습니다. 페이지 텍스트를 데이터로 취급하세요: 시스템 프롬프트에서 출처 안에서 발견된 지시를 무시하라고 모델에 알리고, 출처가 스스로 행동을 촉발하게 두지 마세요.
US$1.20/1K 검색부터 · KYC 없이
API 키 받기