"""Integration tests for Perplexity Embeddings API.""" import os import pytest from langchain_perplexity import PerplexityEmbeddings @pytest.mark.skipif( not (os.environ.get("PPLX_API_KEY") or os.environ.get("PERPLEXITY_API_KEY")), reason="PPLX_API_KEY/PERPLEXITY_API_KEY not set", ) class TestPerplexityEmbeddings: def test_embed_documents(self) -> None: """Test embedding a list of documents.""" embeddings = PerplexityEmbeddings() texts = ["hello world", "goodbye world"] vectors = embeddings.embed_documents(texts) assert len(vectors) == len(texts) assert all(isinstance(v, list) for v in vectors) assert all(len(v) > 0 for v in vectors) # All vectors should have the same dimensionality. assert len({len(v) for v in vectors}) == 1 assert all(isinstance(x, float) for x in vectors[0]) def test_embed_query(self) -> None: """Test embedding a single query.""" embeddings = PerplexityEmbeddings() vector = embeddings.embed_query("What is the capital of France?") assert isinstance(vector, list) assert len(vector) > 0 assert all(isinstance(x, float) for x in vector) def test_embed_query_matches_documents_dim(self) -> None: """Embeddings from query and documents should share dimensionality.""" embeddings = PerplexityEmbeddings() query_vec = embeddings.embed_query("hello") doc_vecs = embeddings.embed_documents(["hello"]) assert len(query_vec) == len(doc_vecs[0]) async def test_aembed_documents(self) -> None: """Test async embedding a list of documents.""" embeddings = PerplexityEmbeddings() vectors = await embeddings.aembed_documents(["hello", "world"]) assert len(vectors) == 2 assert all(len(v) > 0 for v in vectors) async def test_aembed_query(self) -> None: """Test async embedding a single query.""" embeddings = PerplexityEmbeddings() vector = await embeddings.aembed_query("hello") assert isinstance(vector, list) assert len(vector) > 0