Home / File/ test_search_api.py — langchain Source File

test_search_api.py — langchain Source File

Architecture documentation for test_search_api.py, a python file in the langchain codebase. 4 imports, 0 dependents.

Entity Profile

Dependency Diagram

graph LR
  c5bdb159_a507_64c4_3512_f17a98e144d2["test_search_api.py"]
  9e98f0a7_ec6e_708f_4f1b_e9428b316e1c["os"]
  c5bdb159_a507_64c4_3512_f17a98e144d2 --> 9e98f0a7_ec6e_708f_4f1b_e9428b316e1c
  120e2591_3e15_b895_72b6_cb26195e40a6["pytest"]
  c5bdb159_a507_64c4_3512_f17a98e144d2 --> 120e2591_3e15_b895_72b6_cb26195e40a6
  c554676d_b731_47b2_a98f_c1c2d537c0aa["langchain_core.documents"]
  c5bdb159_a507_64c4_3512_f17a98e144d2 --> c554676d_b731_47b2_a98f_c1c2d537c0aa
  0a64b352_1be7_5fff_8155_512d479e612f["langchain_perplexity"]
  c5bdb159_a507_64c4_3512_f17a98e144d2 --> 0a64b352_1be7_5fff_8155_512d479e612f
  style c5bdb159_a507_64c4_3512_f17a98e144d2 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

"""Integration tests for Perplexity Search API."""

import os

import pytest
from langchain_core.documents import Document

from langchain_perplexity import PerplexitySearchResults, PerplexitySearchRetriever


@pytest.mark.skipif(not os.environ.get("PPLX_API_KEY"), reason="PPLX_API_KEY not set")
class TestPerplexitySearchAPI:
    def test_search_retriever_basic(self) -> None:
        """Test basic search with retriever."""
        retriever = PerplexitySearchRetriever(k=3)
        docs = retriever.invoke("What is the capital of France?")
        assert len(docs) > 0
        assert isinstance(docs[0], Document)
        assert "Paris" in docs[0].page_content
        assert docs[0].metadata["title"]
        assert docs[0].metadata["url"]

    def test_search_retriever_with_filters(self) -> None:
        """Test search with filters."""
        # Search for recent news (recency filter)
        retriever = PerplexitySearchRetriever(
            k=3, search_recency_filter="month", search_domain_filter=["wikipedia.org"]
        )
        docs = retriever.invoke("Python programming language")
        assert len(docs) > 0
        for doc in docs:
            assert "wikipedia.org" in doc.metadata["url"]

    def test_search_tool_basic(self) -> None:
        """Test basic search with tool."""
        tool = PerplexitySearchResults(max_results=3)
        results = tool.invoke("Who won the 2024 Super Bowl?")

        # BaseTool.invoke calls _run. If return_direct is False (default),
        # it returns the output of _run, which is a list of dicts.
        assert isinstance(results, list)
        assert len(results) > 0
        assert "title" in results[0]
        assert "url" in results[0]
        assert "snippet" in results[0]

    def test_search_tool_multi_query(self) -> None:
        """Test search tool with multiple queries."""
        tool = PerplexitySearchResults(max_results=2)
        queries = ["Apple stock price", "Microsoft stock price"]
        # Pass input as dict to avoid BaseTool validation error with list
        results = tool.invoke({"query": queries})

        assert isinstance(results, list)
        # Should have results for both (combined)
        assert len(results) > 0

Subdomains

Dependencies

  • langchain_core.documents
  • langchain_perplexity
  • os
  • pytest

Frequently Asked Questions

What does test_search_api.py do?
test_search_api.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, Serialization subdomain.
What does test_search_api.py depend on?
test_search_api.py imports 4 module(s): langchain_core.documents, langchain_perplexity, os, pytest.
Where is test_search_api.py in the architecture?
test_search_api.py is located at libs/partners/perplexity/tests/integration_tests/test_search_api.py (domain: CoreAbstractions, subdomain: Serialization, directory: libs/partners/perplexity/tests/integration_tests).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free