# Một công cụ tìm kiếm web cho AI agent mang về cả nội dung trang

> Tìm kiếm web cho AI agent trả về kết quả đã xếp hạng, đọc trang đầu dưới dạng Markdown cùng schema, ngân sách và chi phí. Không cần KYC, thanh toán bằng crypto.

- URL: https://llmwebsearch.com/vi/use-cases/ai-agents/
- Cập nhật lần cuối: 2026-10-22
- Đơn vị phát hành: LLMWebSearch (https://llmwebsearch.com)

Một agent chỉ biết tìm kiếm mà không đọc được thì phải đoán từ các snippet. Hãy cho nó một công cụ làm cả hai: nó tìm kiếm trên web trực tiếp và trả về những trang đầu dưới dạng Markdown sạch, được đánh số để model có thể trích dẫn.

**Trả lời nhanh — Làm sao để trao cho AI agent một công cụ tìm kiếm web trả về nội dung trang?**

Gói một API tìm kiếm web thành một công cụ nhận truy vấn và trả về các nguồn được đánh số kèm nội dung trang của chúng. **LLMWebSearch** làm việc này trong một lệnh gọi: kết quả đã xếp hạng từ một tìm kiếm trực tiếp, với 3 trang đầu được đọc dưới dạng Markdown, chỉ tốn một credit. Giá bắt đầu từ 9,25 US$ cho 5.000 lượt tìm kiếm và giảm xuống 1,20 US$/1K lượt tìm kiếm. Không cần KYC; thanh toán bằng crypto.

## LLMWebSearch như một công cụ cho agent

| Thuộc tính | Giá trị |
| --- | --- |
| Công cụ | `web_search(query, recent)` gọi `POST https://llmwebsearch.com/api/v1/search` |
| Trả về | Tối đa 20 kết quả đã xếp hạng; 3 kết quả đầu kèm nội dung trang ở dạng Markdown |
| Kiểm soát độ dài | `max_chars` mỗi trang, `read` cho số trang, `max_results` cho danh sách |
| Chi phí | Một credit trả cho một lượt tìm kiếm: tối đa 20 kết quả được xếp hạng, với nội dung của 3 trang đầu được đọc và trả về dưới dạng Markdown. Đọc từ 4 đến 10 trang thì tính 2 credit. Lượt gọi kết thúc bằng lỗi không tốn gì |
| Bộ lọc | Chọn quốc gia và ngôn ngữ của kết quả, khoảng thời gian (ngày, tuần, tháng hoặc năm qua), kết quả web hoặc tin tức, và các tên miền cần bao gồm hoặc loại trừ |
| Tích hợp sẵn dùng | [MCP server](https://llmwebsearch.com/vi/docs/mcp/), [OpenAI function calling](https://llmwebsearch.com/vi/docs/openai/), [LangChain và LlamaIndex](https://llmwebsearch.com/vi/docs/langchain/), [n8n](https://llmwebsearch.com/vi/docs/n8n/), [OpenClaw](https://llmwebsearch.com/vi/docs/openclaw/) |

## Tại sao agent cần văn bản trang chứ không chỉ đoạn trích?

Bởi vì câu trả lời hiếm khi nằm trong đoạn trích. Trang kết quả chỉ đưa ra một tiêu đề và một hai dòng do công cụ tìm kiếm chọn. Con số, ngày tháng hay quy tắc mà người dùng hỏi nằm sâu hơn trong trang.

Một agent chỉ thấy đoạn trích có hai lựa chọn tệ. Nó có thể trả lời từ một mảnh vụn và có nguy cơ sai, hoặc gọi thêm một công cụ thứ hai để tải từng trang. Lựa chọn thứ hai làm tăng gấp đôi số lượt gọi và số định nghĩa công cụ.

Với LLMWebSearch, những trang đầu tiên đến đã được đọc sẵn. Điều hướng, quảng cáo và banner cookie bị loại bỏ, nên model dùng token cho nội dung. Các kết quả còn lại vẫn giữ đoạn trích, giúp model quyết định có tìm kiếm lại hay không.

## Nên định nghĩa công cụ tìm kiếm như thế nào?

Giữ schema nhỏ: một `query` bắt buộc và tối đa một hoặc hai tùy chọn bật/tắt. Model gọi các công cụ đơn giản một cách đáng tin cậy hơn. Ví dụ dưới đây mở ra một cờ `recent` ánh xạ tới `time_range=month`; mọi thứ còn lại cố định trong code của bạn.

Hàm trả về văn bản thuần, không phải JSON. Mỗi nguồn bắt đầu bằng một số, một tiêu đề và một URL, tiếp theo là Markdown của nó. Cách bố trí đó khiến các trích dẫn như [2] trở nên tự nhiên với model.

Nếu agent của bạn đã có sẵn một công cụ tên là `web_search`, như Claude Code và OpenClaw có, hãy đặt cho công cụ của bạn một tên khác như `search_web`. Hai công cụ cùng một tên sẽ làm model bối rối.

*Python: công cụ web_search cho function calling kiểu OpenAI*

```python
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))
```

## Khi nào agent nên tìm kiếm, và bao lâu một lần?

Tìm kiếm khi câu trả lời phụ thuộc vào những sự thật thay đổi hoặc mà model không thể biết. Giá cả, phiên bản, luật lệ, lịch trình và sự kiện gần đây đều thuộc diện này. Định nghĩa và kiến thức ổn định thì thường không.

Hãy viết quy tắc đó vào system prompt, và thêm một hạn mức. Ba thói quen sẽ giúp ích:

- **Lập kế hoạch trước khi tìm kiếm.** Yêu cầu model viết truy vấn trước. Hai truy vấn chính xác tốt hơn năm truy vấn mơ hồ.
- **Giới hạn số lượt gọi.** Cho phép, ví dụ, bốn lần tìm kiếm mỗi lượt người dùng. Chỉ nâng hạn mức cho các tác vụ nghiên cứu.
- **Dừng khi các nguồn đồng ý.** Nếu ba trang độc lập nói cùng một điều, agent có thể trả lời.

## Làm sao để giữ cửa sổ ngữ cảnh trong tầm kiểm soát?

Ba tham số quyết định lượng văn bản đến model. `read` đặt số trang được đọc, từ 0 đến 10. `max_chars` giới hạn mỗi trang, từ 500 đến 50.000 ký tự. `max_results` đặt số kết quả được liệt kê, từ 1 đến 20.

Với một chat agent, `read=3` với `max_chars=4000` trả về khoảng 12.000 ký tự văn bản trang mỗi lần tìm kiếm. Như vậy còn chỗ cho vài lần tìm kiếm trong một cuộc hội thoại. Với một tác vụ nghiên cứu vừa tóm tắt vừa chạy, trang dài hơn cũng ổn.

Trường `word_count` cho bạn biết toàn bộ trang dài bao nhiêu trước khi bị cắt. Agent có thể dùng nó để quyết định có tải thêm bằng [endpoint extract](https://llmwebsearch.com/vi/docs/extract/) hay không.

## Điều gì xảy ra khi không thể đọc một trang?

Kết quả vẫn được trả về, với tiêu đề, URL và đoạn trích, nhưng không có nội dung. Trường `content_status` cho biết lý do.

- `blocked_by_robots`: robots.txt của trang không cho phép trình đọc của chúng tôi.
- `blocked_by_site_policy`: Một trang đặt Content-Signal: ai-input=no trong robots.txt sẽ giữ nội dung các trang của mình khỏi nội dung trong kết quả của bạn.
- `target_refused`: trang trả về lời từ chối; mã trạng thái nằm trong `target_status`.
- `fetch_failed` hoặc `fetch_timeout`: trang không tải kịp thời gian.

Khi một trang từ chối trình đọc của chúng tôi, kết quả trả về không có nội dung kèm trạng thái của trang: chúng tôi không bao giờ giải CAPTCHA, đăng nhập vào tài khoản hay lách qua một chặn chặn hoặc paywall. Hãy bảo agent dùng đoạn trích, hoặc một nguồn khác, khi một trang trả về trống. Bản thân lần tìm kiếm vẫn tính một credit, bất kể điều gì xảy ra với từng trang.

## Tại sao không dùng công cụ tìm kiếm tích hợp sẵn trong model?

Công cụ tích hợp sẵn tiện lợi nhưng cho bạn ít quyền kiểm soát hơn. Tính đến ngày 22 tháng 10 năm 2026, công cụ `web_search` của OpenAI có giá 10 đô-la cho mỗi 1.000 lượt gọi cộng với nội dung tìm kiếm được tính như token đầu vào. Tính năng tìm kiếm web của Claude (Anthropic) cũng có giá 10 đô-la cho mỗi 1.000 lần tìm kiếm cộng với chi phí token. Gemini 3 grounding bao gồm 5.000 lần tìm kiếm miễn phí mỗi tháng trên gói trả phí, sau đó có giá 14 đô-la cho mỗi 1.000 lần.

Các công cụ này chủ yếu trả về một câu trả lời được viết sẵn kèm trích dẫn, không phải các trang thô. Chúng cũng gắn việc tìm kiếm của bạn với một nhà cung cấp model. Một công cụ độc lập hoạt động với bất kỳ model nào và cho phép bạn đặt độ dài của từng trang. [So sánh công cụ tích hợp sẵn](https://llmwebsearch.com/vi/compare/built-in-web-search-tools/) có bảng đầy đủ.

## Chạy một agent trên LLMWebSearch tốn bao nhiêu?

Một credit mỗi lần tìm kiếm khi `read` là 3 hoặc ít hơn. Một trợ lý được một nhóm dùng, trả lời 100 câu hỏi mỗi ngày với 4 lần tìm kiếm mỗi câu, chạy khoảng 12.000 lần tìm kiếm mỗi tháng. 25.000 lượt tìm kiếm với 41,25 US$ đủ cho tháng đó và phần lớn tháng sau.

Một coding agent được một lập trình viên dùng có thể tìm kiếm 20 lần mỗi ngày, tức khoảng 600 lần mỗi tháng. 5.000 lượt tìm kiếm với 9,25 US$ khi đó dùng được vài tháng, vì credit không bao giờ hết hạn. [Hướng dẫn chi phí](https://llmwebsearch.com/vi/guides/ai-agent-web-search-cost/) trình bày phép tính cho khối lượng lớn hơn.

## Gói nào phù hợp với một agent?

Làm nguyên mẫu trên 5.000 lượt tìm kiếm; chuyển sang 25.000 lượt tìm kiếm hoặc 100.000 lượt tìm kiếm khi agent đã được dùng hàng ngày.

| Gói | Số lượng | Giá | Giá mỗi đơn vị |
| --- | --- | --- | --- |
| Dùng thử | 5.000 lượt tìm kiếm | 9,25 US$ | 1,85 US$/1K lượt tìm kiếm |
| Người xây dựng | 25.000 lượt tìm kiếm | 41,25 US$ | 1,65 US$/1K lượt tìm kiếm |
| Production | 100.000 lượt tìm kiếm | 145 US$ | 1,45 US$/1K lượt tìm kiếm |

Trong mọi gói: Top 3 trang được đọc dưới dạng Markdown · Bộ lọc theo quốc gia, ngôn ngữ, thời gian và tên miền · Không tính phí các lần gọi thất bại · Credit không bao giờ hết hạn

**Trước khi bạn thanh toán**

- Nạp tối thiểu 25 US$. Nạp một lần bằng crypto, rồi mua bất kỳ gói nào từ số dư của bạn.
- Tiền trong số dư của bạn không hết hạn và mua credit tìm kiếm bất cứ khi nào bạn muốn. Khi một pack rẻ hơn mức nạp tối thiểu, phần bạn đã trả chỉ để đạt mức tối thiểu đó sẽ được hoàn lại cho bạn theo yêu cầu trong vòng 30 ngày kể từ ngày thanh toán, bằng USDT hoặc USDC, miễn là phần đó vẫn chưa được dùng. Phần còn lại của số dư sẽ không được hoàn trả trừ khi pháp luật yêu cầu.
- Được ghi có khi thanh toán của bạn đã được kiểm tra trên blockchain. Thời gian xác nhận mạng thông thường: BTC ≈ 20 phút · USDT TRC-20 ≈ 1 phút · USDT ERC-20 ≈ 5 phút · USDC ERC-20 ≈ 5 phút · ETH ≈ 5 phút · SOL ≈ 1 phút · LTC ≈ 15 phút

## AI agent: các câu hỏi thường gặp

### Tôi có thể thêm LLMWebSearch vào Claude Desktop, Cursor hoặc Claude Code không?

Có, thông qua một MCP server nhỏ mở ra tìm kiếm như một công cụ. [Trang MCP](https://llmwebsearch.com/vi/docs/mcp/) có code và cấu hình client.

### Công cụ có hoạt động với các model khác ngoài OpenAI không?

Có. Schema ở trên là JSON Schema thuần, mà Anthropic, Google, Mistral và các framework mã nguồn mở chấp nhận với những thay đổi nhỏ. Công cụ chỉ gọi endpoint HTTPS của chúng tôi.

### Làm sao để ngăn một agent tìm kiếm quá nhiều?

Đếm số lượt gọi trong trình bao công cụ của bạn và trả về một thông báo ngắn khi hết hạn mức. Cũng đưa hạn mức vào system prompt, để model lập kế hoạch cho nó.

### Văn bản của một trang có thể đưa ra chỉ dẫn cho agent của tôi không?

Nó có thể thử. Hãy coi văn bản trang là dữ liệu: bảo model trong system prompt bỏ qua các chỉ dẫn tìm thấy bên trong nguồn, và đừng bao giờ để một nguồn tự kích hoạt hành động.

## Nguồn

1. [Giá API (công cụ tìm kiếm web)](https://developers.openai.com/api/docs/pricing) — OpenAI (read 2026-10-22)
2. [Bảng giá (công cụ tìm kiếm web)](https://platform.claude.com/docs/en/about-claude/pricing) — Anthropic (read 2026-10-22)
3. [Giá Gemini Developer API](https://ai.google.dev/gemini-api/docs/pricing) — Google (read 2026-10-22)

---

LLMWebSearch: LLMWebSearch là một web search API cho AI agent, trả về kết quả đã xếp hạng kèm nội dung của các trang hàng đầu ở định dạng Markdown, thanh toán bằng crypto mà không cần tải lên giấy tờ tùy thân. Credit trả trước từ 1,20 US$/1K lượt tìm kiếm không bao giờ hết hạn. Không cần KYC — không ID, không selfie, không giấy tờ. Thanh toán bằng crypto.
