Skip to main content
Perplexity

Search documentation

Type to search this documentation.

On this pageOverview

Perplexity with CAMEL-AI

CAMEL-AI's SearchToolkit ships a search_perplexity method that wraps the Perplexity Search API as a native CAMEL tool. The tool returns ranked web results — title, URL, snippet, and date — so the calling ChatAgent can ground its responses on fresh, citable sources.

Bash
pip install camel-ai

Set your Perplexity API key as an environment variable:

Bash
export PERPLEXITY_API_KEY="your_api_key_here"

Get API Key

Generate your API key from the Perplexity dashboard.

Register search_perplexity as a tool on a ChatAgent:

Python
from camel.agents import ChatAgent
from camel.toolkits import FunctionTool, SearchToolkit

agent = ChatAgent(
    system_message=(
        "You are a helpful assistant that can use the Perplexity "
        "search engine to answer questions."
    ),
    tools=[FunctionTool(SearchToolkit().search_perplexity)],
)

response = agent.step(
    input_message="What are the latest developments in multi-agent AI systems?",
    response_format=None,
)
print(response.msgs[0].content)

The tool calls POST https://api.perplexity.ai/search under the hood and returns the raw API response so the agent can pick which results to cite.

All Search API parameters are supported directly on search_perplexity:

Python
from camel.toolkits import SearchToolkit

toolkit = SearchToolkit()

results = toolkit.search_perplexity(
    query="AI safety research",
    max_results=5,
    max_tokens_per_page=512,
    country="US",
    search_recency_filter="week",                         # hour | day | week | month | year
    search_domain_filter=["arxiv.org", "-medium.com"],   # prefix with '-' to exclude
    search_language_filter=["en"],
)

You can also pass a list of queries for batched search, or use extra_params to forward any additional Search API field that isn't yet a first-class argument:

Python
results = toolkit.search_perplexity(
    query=["NVIDIA earnings", "AMD earnings"],
    max_results=3,
    extra_params={
        "search_after_date_filter": "1/1/2026",
        "search_before_date_filter": "5/1/2026",
    },
)

search_perplexity returns the raw Perplexity Search API response as a Dict[str, Any]. On success it contains a results list along with id and server_time:

Python
{
    "id": "...",
    "server_time": "...",
    "results": [
        {
            "title": "...",
            "url": "...",
            "snippet": "...",
            "date": "...",          # may be present
            "last_updated": "...",  # may be present
        },
        # ...
    ],
}

On failure the response is a dictionary with an error key describing the issue (missing API key, HTTP error, or request exception).

Need help with the integration?

Suggest an edit

Propose a replacement for this page. The site team reviews it before applying any changes.

Export
Documentation menu