Không cần KYC — không giấy tờ tùy thân, không selfie, không tài liệu. Thanh toán bằng crypto: BTC, USDT, USDC, ETH, SOL, LTC
Ngôn ngữ: Tiếng Việt
Lấy khóa API

Tài liệu · LangChain · LlamaIndex · Python

Công cụ tìm kiếm web LangChain trên SERP API, cùng phiên bản LlamaIndex

Gói một lệnh gọi HTTPS vào một công cụ, mô tả nó thật rõ, rồi để agent quyết định khi nào tìm kiếm. Đoạn mã dưới đây chạy với LangChain 1.0 trở lên và với LlamaIndex; không cần gói SerpCrypto nào.

Cập nhật lần cuối: · 5 phút đọc

Trả lời nhanh

Làm sao gán công cụ tìm kiếm web cho agent LangChain?

Trang trí một hàm Python bằng @tool từ langchain_core.tools, cho hàm gọi https://serpcrypto.com/api/v1/search và trả về văn bản ngắn, rồi truyền nó vào tools=[...] khi bạn tạo agent. Với SerpCrypto, mỗi lượt tìm kiếm agent chạy tốn 1 credit, tính từ 0,30 US$/1K lượt tìm kiếm, và các lệnh gọi thất bại là miễn phí. Credit được thanh toán bằng crypto, không cần KYC.

Làm sao viết công cụ tìm kiếm?

Một công cụ LangChain là một hàm có kiểu dữ liệu kèm docstring. Decorator biến chữ ký hàm thành schema tham số và biến docstring thành mô tả mà model đọc, nên cả hai đều cần được chăm chút. Đặt tên tham số theo cách model nên nghĩ về chúng: một truy vấn, một quốc gia, một ngôn ngữ.

Hãy trả về văn bản, không phải toàn bộ JSON. Năm kết quả với tiêu đề, liên kết và đoạn trích đủ để model trả lời và trích dẫn, chỉ tốn một phần nhỏ token so với câu trả lời thô. Khi gặp lỗi, trả về một thông báo ngắn thay vì ném ngoại lệ, để agent có thể giải thích hoặc thử lại.

search_tool.py
"""A LangChain tool that searches Google through the SerpCrypto SERP API."""
import os

import requests
from langchain_core.tools import tool

API_URL = "https://serpcrypto.com/api/v1/search"


@tool
def google_search(query: str, gl: str = "us", hl: str = "en") -> str:
    """Search Google for current information. Returns the top results with title, link and snippet.

    Args:
        query: the search query, as a person would type it.
        gl: two-letter country code of the results, for example us, gb or de.
        hl: language code, for example en, de or pt-BR.
    """
    r = requests.get(
        API_URL,
        params={"q": query, "gl": gl, "hl": hl},
        headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
        timeout=90,
    )
    if r.status_code != 200:
        return f"Search failed with HTTP {r.status_code}."
    results = r.json().get("organic_results", [])[:5]
    return "\n\n".join(f"{x['title']}\n{x['link']}\n{x.get('snippet', '')}" for x in results) or "No results."

Làm sao để agent tự quyết định khi nào tìm kiếm?

Truyền công cụ vào create_agent, có sẵn từ LangChain 1.0. Model đọc phần mô tả và gọi công cụ khi câu hỏi cần dữ kiện mới. Đặt AGENT_MODEL thành một chuỗi model mà tài khoản của bạn hỗ trợ, chẳng hạn openai: hoặc anthropic: theo sau là tên model; bất kỳ chat model nào hỗ trợ tool calling đều dùng được.

System prompt quan trọng không kém đoạn mã. Yêu cầu agent chỉ tìm kiếm thông tin mới hơn dữ liệu huấn luyện của nó, và trích dẫn liên kết, sẽ giúp câu trả lời có căn cứ và giới hạn số lượt tìm kiếm tốn phí.

agent.py
"""An agent that decides when to search (LangChain 1.0 or later)."""
import os

from langchain.agents import create_agent

from search_tool import google_search

agent = create_agent(
    model=os.environ["AGENT_MODEL"],  # a provider:model string, such as one of your OpenAI or Anthropic models
    tools=[google_search],
    system_prompt="Answer with current facts. Use google_search when you need information newer than your training data, and cite the links you used.",
)

result = agent.invoke({"messages": [{"role": "user", "content": "What changed in Google's search results pages this year?"}]})
print(result["messages"][-1].content)

Làm sao làm điều tương tự với LlamaIndex?

Viết một hàm thường có type hints và docstring, rồi bọc nó bằng FunctionTool.from_defaults. LlamaIndex đọc tên, các type hint và docstring để dựng schema công cụ, giống như LangChain. Thêm công cụ vào bất kỳ agent LlamaIndex nào nhận danh sách công cụ.

LlamaIndex FunctionTool
"""The same search as a LlamaIndex FunctionTool."""
import os

import requests
from llama_index.core.tools import FunctionTool


def google_search(query: str, gl: str = "us", hl: str = "en") -> str:
    """Search Google for current information and return the top results with title, link and snippet."""
    r = requests.get(
        "https://serpcrypto.com/api/v1/search",
        params={"q": query, "gl": gl, "hl": hl},
        headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
        timeout=90,
    )
    r.raise_for_status()
    results = r.json().get("organic_results", [])[:5]
    return "\n\n".join(f"{x['title']}\n{x['link']}\n{x.get('snippet', '')}" for x in results)


search_tool = FunctionTool.from_defaults(fn=google_search)
# Pass search_tool in the tools list of your LlamaIndex agent.

Công cụ nên trả về JSON hay văn bản?

Văn bản, trong hầu hết trường hợp. Model đọc tốt văn bản ngắn có nhãn, và tốn ít token hơn JSON lồng nhau. Chỉ trả về JSON khi một bước sau trong chuỗi của bạn phân tích nó, ví dụ để lưu thứ hạng.

Hãy giữ các liên kết trong đầu ra. Chúng giúp model trích dẫn nguồn, và giúp bạn kiểm tra lại sau đó câu trả lời dựa vào những trang nào.

Làm sao kiểm soát chi phí tìm kiếm trong agent?

Mỗi lệnh gọi công cụ thành công là một credit. Ba thói quen giúp giữ số lượng thấp: nói với model trong system prompt khi nào không nên tìm kiếm, giới hạn số lệnh gọi công cụ mỗi lần chạy trong vòng lặp agent của bạn, và cache câu trả lời cho các câu hỏi lặp lại trong mã của chính bạn.

Một pack 100.000 tìm kiếm giá 56,25 US$, và Credit tìm kiếm trả trước không bao giờ hết hạn: các lượt tìm kiếm chưa dùng vẫn nằm trong tài khoản của bạn cho đến khi bạn dùng, nên một tháng ít dùng cũng không lãng phí gì.

Câu hỏi về LangChain

Đây có phải tích hợp LangChain chính thức không?

Không. Đây là một công cụ tùy chỉnh nhỏ dựng trên decorator @tool công khai của LangChain. Vì là mã của bạn, bạn có thể đổi định dạng đầu ra, thêm tham số như location hoặc engine, hoặc thêm công cụ thứ hai cho Google News.

Công cụ có thể tìm kiếm một thành phố cụ thể không?

Được. Thêm tham số location và truyền vào params, viết dạng City, Region, Country. Xem locations để biết định dạng và ví dụ.

Agent có trả phí cho các lượt tìm kiếm thất bại không?

Không. 1 credit = 1 truy vấn tìm kiếm thành công, trả về một trang kết quả trên bất kỳ engine nào được hỗ trợ. Truy vấn thất bại không bị tính phí. Một lệnh gọi công cụ bị timeout hoặc gặp lỗi tạm thời không dùng credit nào.

Những model nào dùng được công cụ này?

Bất kỳ chat model nào hỗ trợ tool calling trong LangChain hoặc LlamaIndex. Bản thân công cụ chỉ gửi một yêu cầu HTTPS, nên không phụ thuộc vào nhà cung cấp model.

Từ 0,30 US$/1K lượt tìm kiếm · không cần KYC

Lấy khóa API