mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
## Description This PR adds a new `PerplexityEmbeddings` class to the `langchain-perplexity` partner package, providing first-class support for the Perplexity Embeddings API alongside the existing `ChatPerplexity`, `PerplexitySearchRetriever`, and `PerplexitySearchResults` integrations. ### What was added - `langchain_perplexity/embeddings.py` — `PerplexityEmbeddings` class implementing `langchain_core.embeddings.Embeddings` with sync (`embed_documents`, `embed_query`) and async (`aembed_documents`, `aembed_query`) methods. Defaults to model `pplx-embed-v1-4b` and reuses the existing `_utils.initialize_client` helper for API key resolution (`PPLX_API_KEY` / `PERPLEXITY_API_KEY`). - `__init__.py` exports `PerplexityEmbeddings` and adds it to `__all__`. - Unit tests under `tests/unit_tests/test_embeddings.py` covering sync/async paths with mocked clients (no network). - Integration tests under `tests/integration_tests/test_embeddings.py`, gated on `PPLX_API_KEY` (matches the pattern in `test_search_api.py`). - README updated to advertise the new component. ### Why LangChain users already get chat, search, and tool wrappers from `langchain-perplexity`, but had to drop down to the raw Perplexity SDK to use embeddings. This closes that gap. ### References - Perplexity Embeddings docs: https://docs.perplexity.ai/docs/embeddings - Perplexity Embeddings API reference: https://docs.perplexity.ai/api-reference/embeddings-post ### Issue Closes #36726 ## Testing - `cd libs/partners/perplexity && make lint` — passes (ruff, format, mypy). - `cd libs/partners/perplexity && make test` — all unit tests pass (59 passed, 1 skipped). - Integration tests will run in CI with secrets; they exercise real `embed_documents` / `embed_query` / async variants against the live API and assert vector dimensionality consistency. --------- Co-authored-by: Claude Agent <agent@anthropic.com> Co-authored-by: Mason Daugherty <github@mdrxy.com>
32 lines
898 B
Python
32 lines
898 B
Python
"""Perplexity AI integration for LangChain."""
|
|
|
|
from langchain_perplexity.chat_models import ChatPerplexity
|
|
from langchain_perplexity.embeddings import PerplexityEmbeddings
|
|
from langchain_perplexity.output_parsers import (
|
|
ReasoningJsonOutputParser,
|
|
ReasoningStructuredOutputParser,
|
|
strip_think_tags,
|
|
)
|
|
from langchain_perplexity.retrievers import PerplexitySearchRetriever
|
|
from langchain_perplexity.tools import PerplexitySearchResults
|
|
from langchain_perplexity.types import (
|
|
MediaResponse,
|
|
MediaResponseOverrides,
|
|
UserLocation,
|
|
WebSearchOptions,
|
|
)
|
|
|
|
__all__ = [
|
|
"ChatPerplexity",
|
|
"PerplexityEmbeddings",
|
|
"PerplexitySearchRetriever",
|
|
"PerplexitySearchResults",
|
|
"UserLocation",
|
|
"WebSearchOptions",
|
|
"MediaResponse",
|
|
"MediaResponseOverrides",
|
|
"ReasoningJsonOutputParser",
|
|
"ReasoningStructuredOutputParser",
|
|
"strip_think_tags",
|
|
]
|