88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support
Tìm kiếm web

Tìm kiếm web DeepSeek

Cho DeepSeek V4.1 Flash tìm kiếm thông tin thời gian thực trên web và dẫn nguồn, bằng công cụ web_search của Responses API.

📝 Giới thiệu

deepseek-v4.1-flash hỗ trợ tìm kiếm web: mô hình tự quyết định có cần tìm kiếm không và dùng từ khóa nào, trả lời dựa trên kết quả tìm kiếm và kèm liên kết nguồn. Phù hợp với thông tin thay đổi nhanh như tin tức, thời tiết, thị trường, kết quả thi đấu.

Tìm kiếm web được bật bằng công cụ web_search của Responses API (POST /v1/responses).

Điều kiện

  • Nhóm của token: Deepseek官转
  • Mô hình: deepseek-v4.1-flash
  • Endpoint: POST https://api.88api.ai/v1/responses

💡 Ví dụ

Cách dùng cơ bản ✅

curl https://api.88api.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "tools": [{"type": "web_search"}],
    "input": "Thời tiết Hàng Châu hôm nay thế nào?"
  }'

Python (OpenAI SDK) ✅

from openai import OpenAI

client = OpenAI(base_url="https://api.88api.ai/v1", api_key="sk-token-cua-ban")

resp = client.responses.create(
    model="deepseek-v4.1-flash",
    tools=[{"type": "web_search"}],
    input="Thời tiết Hàng Châu hôm nay thế nào?",
)
print(resp.output_text)

Giới hạn số từ khóa và số kết quả ✅

curl https://api.88api.ai/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $API_KEY" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "max_tool_calls": 2,
    "tools": [{
      "type": "web_search",
      "max_keyword": 2,
      "limit": 5,
      "user_location": {"type": "approximate", "country": "Trung Quốc", "region": "Chiết Giang", "city": "Hàng Châu"}
    }],
    "input": "Thời tiết Hàng Châu hôm nay thế nào?"
  }'

Streaming ✅

Thêm "stream": true vào body. Mỗi lần tìm kiếm sẽ trả về lần lượt các sự kiện sau, sau đó mới bắt đầu văn bản trả lời:

Sự kiệnÝ nghĩa
response.web_search_call.in_progressBắt đầu một lần tìm kiếm
response.web_search_call.searchingĐang tìm kiếm
response.web_search_call.completedTìm kiếm xong
response.output_text.deltaVăn bản trả lời theo từng phần
response.completedHoàn tất; có usage

📬 Ví dụ phản hồi

Trích đoạn; đã lược bỏ phần suy luận (reasoning) và một số trường khác:

{
  "object": "response",
  "status": "completed",
  "output": [
    {
      "type": "web_search_call",
      "id": "ws_0217925902513450000...",
      "status": "completed",
      "action": {
        "type": "search",
        "query": "thời tiết Hàng Châu hôm nay"
      }
    },
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "Sáng nay ở Hàng Châu mưa đã tạnh, trời chuyển nhiều mây, nhiệt độ cao nhất khoảng 21–24°C...",
          "annotations": [
            {
              "type": "url_citation",
              "title": "中国气象局-天气预报-城市预报",
              "url": "https://weather.cma.cn/web/text/HD/AZJ.html",
              "site_name": "中国气象局",
              "publish_time": "2026年10月21日 08:00:00(CST) 星期三"
            }
          ]
        }
      ]
    }
  ],
  "usage": {
    "input_tokens": 4320,
    "output_tokens": 418,
    "total_tokens": 4738,
    "tool_usage": {"web_search": 1},
    "tool_usage_details": {"web_search": {"search_engine": 1}}
  }
}
TrườngMô tả
output[].type = "web_search_call"Một lần tìm kiếm của mô hình; action.query là các từ khóa, phân cách bằng ; khi một lượt dùng nhiều từ khóa
output[].type = "message"Câu trả lời cuối cùng; văn bản nằm trong output_text.text
annotations[].type = "url_citation"Nguồn được trích dẫn: tiêu đề, liên kết, tên trang, thời gian đăng
usage.tool_usage.web_searchSố lần tìm kiếm của yêu cầu (tính theo từ khóa)

⚙️ Tham số

web_search trong tools

Tham sốKiểuBắt buộcMô tả
typestringCóLuôn là web_search
max_keywordintegerKhôngSố từ khóa tối đa mỗi lượt tìm kiếm, 1–50
limitintegerKhôngSố kết quả tối đa mỗi lần tìm kiếm, 1–50, mặc định 10
user_locationobjectKhôngVị trí gần đúng của người dùng, giúp câu hỏi về thời tiết và địa phương chính xác hơn. Định dạng: {"type": "approximate", "country": "Trung Quốc", "region": "Chiết Giang", "city": "Hàng Châu"}

Tham số cấp yêu cầu

Tham sốKiểuBắt buộcMô tả
max_tool_callsintegerKhôngSố lượt tìm kiếm tối đa trong một câu trả lời, 1–10, mặc định 3
streambooleanKhôngTrả về dạng streaming

Các tham số khác (input, instructions, max_output_tokens, ...) giống OpenAI Responses.

💰 Tính phí

Chi phí = token của mô hình + phí tìm kiếm:

  • Tìm kiếm được tính theo từ khóa: một lượt dùng bao nhiêu từ khóa thì tính bấy nhiêu lần, theo usage.tool_usage.web_search. Khi mô hình quyết định không tìm kiếm thì không có phí tìm kiếm.
  • Token: kết quả tìm kiếm được đưa vào làm đầu vào cho mô hình, nên token đầu vào tăng đáng kể (thường thêm vài nghìn token mỗi lần tìm kiếm) và được tính theo giá mô hình.
  • Để kiểm soát chi phí, dùng max_keyword để giới hạn số từ khóa mỗi lượt và max_tool_calls để giới hạn số lượt tìm kiếm.

❓ Câu hỏi thường gặp

Có dùng tìm kiếm web với /v1/chat/completions được không? Không. Tìm kiếm web chỉ hoạt động trên /v1/responses. Công cụ web_search gửi tới Chat Completions sẽ không tìm kiếm và không bị tính phí.

Vì sao mô hình không tìm kiếm? Mô hình tự đánh giá câu hỏi có cần tìm kiếm không. Câu hỏi không cần thông tin mới (tính toán, kiến thức chung) sẽ được trả lời trực tiếp. Muốn chắc chắn có tìm kiếm, hãy yêu cầu rõ, ví dụ "hãy tìm trên web rồi trả lời".

Nhóm khác có dùng được không? Hiện chỉ deepseek-v4.1-flash trong nhóm Deepseek官转 hỗ trợ tìm kiếm web.