mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-22 02:50:31 +00:00
Add cohere partner package structure for API reference documentation
Co-authored-by: mdrxy <61371264+mdrxy@users.noreply.github.com>
This commit is contained in:
39
libs/partners/cohere/README.md
Normal file
39
libs/partners/cohere/README.md
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# LangChain Cohere
|
||||||
|
|
||||||
|
This package contains the Cohere integrations for LangChain.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install langchain-cohere
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
The `langchain-cohere` package provides integrations for Cohere's language models and embeddings.
|
||||||
|
|
||||||
|
### Chat Models
|
||||||
|
|
||||||
|
```python
|
||||||
|
from langchain_cohere import ChatCohere
|
||||||
|
|
||||||
|
chat = ChatCohere(model="command-r-plus")
|
||||||
|
```
|
||||||
|
|
||||||
|
### Embeddings
|
||||||
|
|
||||||
|
```python
|
||||||
|
from langchain_cohere import CohereEmbeddings
|
||||||
|
|
||||||
|
embeddings = CohereEmbeddings(model="embed-english-v3.0")
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rerank
|
||||||
|
|
||||||
|
```python
|
||||||
|
from langchain_cohere import CohereRerank
|
||||||
|
|
||||||
|
rerank = CohereRerank(model="rerank-english-v3.0")
|
||||||
|
```
|
||||||
|
|
||||||
|
For more details, visit the [LangChain Cohere repository](https://github.com/langchain-ai/langchain-cohere).
|
22
libs/partners/cohere/langchain_cohere/__init__.py
Normal file
22
libs/partners/cohere/langchain_cohere/__init__.py
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
"""Cohere integration package for LangChain.
|
||||||
|
|
||||||
|
This package contains the Cohere integrations for LangChain.
|
||||||
|
For the full implementation, please install: pip install langchain-cohere
|
||||||
|
|
||||||
|
This is a placeholder package to enable API documentation generation.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Import from local modules for documentation generation
|
||||||
|
from .chat_models import ChatCohere
|
||||||
|
from .common import CohereCitation
|
||||||
|
from .embeddings import CohereEmbeddings
|
||||||
|
from .rag_retrievers import CohereRagRetriever
|
||||||
|
from .rerank import CohereRerank
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"CohereCitation",
|
||||||
|
"ChatCohere",
|
||||||
|
"CohereEmbeddings",
|
||||||
|
"CohereRagRetriever",
|
||||||
|
"CohereRerank",
|
||||||
|
]
|
63
libs/partners/cohere/langchain_cohere/chat_models.py
Normal file
63
libs/partners/cohere/langchain_cohere/chat_models.py
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
"""Chat model for Cohere."""
|
||||||
|
|
||||||
|
from typing import Any, Dict, List, Optional, Union
|
||||||
|
|
||||||
|
try:
|
||||||
|
from langchain_core.language_models.chat_models import BaseChatModel
|
||||||
|
from langchain_core.messages import BaseMessage
|
||||||
|
except ImportError:
|
||||||
|
# Fallback for when langchain_core is not available
|
||||||
|
class BaseChatModel:
|
||||||
|
pass
|
||||||
|
class BaseMessage:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class ChatCohere(BaseChatModel):
|
||||||
|
"""Cohere chat model.
|
||||||
|
|
||||||
|
To use this, you need to install the ``langchain-cohere`` package.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip install langchain-cohere
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from langchain_cohere import ChatCohere
|
||||||
|
|
||||||
|
chat = ChatCohere(model="command-r-plus")
|
||||||
|
messages = [("human", "Hello, how are you?")]
|
||||||
|
response = chat.invoke(messages)
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
model: str = "command-r-plus"
|
||||||
|
"""Model name to use."""
|
||||||
|
|
||||||
|
cohere_api_key: Optional[str] = None
|
||||||
|
"""Cohere API key. If not provided, will read from environment variable COHERE_API_KEY."""
|
||||||
|
|
||||||
|
temperature: float = 0.0
|
||||||
|
"""Temperature for sampling."""
|
||||||
|
|
||||||
|
max_tokens: Optional[int] = None
|
||||||
|
"""Maximum number of tokens to generate."""
|
||||||
|
|
||||||
|
def _generate(
|
||||||
|
self,
|
||||||
|
messages: List[BaseMessage],
|
||||||
|
stop: Optional[List[str]] = None,
|
||||||
|
run_manager: Optional[Any] = None,
|
||||||
|
**kwargs: Any,
|
||||||
|
) -> Any:
|
||||||
|
"""Generate chat completion."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"This is a placeholder class. Install langchain-cohere to use: pip install langchain-cohere"
|
||||||
|
)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def _llm_type(self) -> str:
|
||||||
|
"""Return type of chat model."""
|
||||||
|
return "cohere-chat"
|
53
libs/partners/cohere/langchain_cohere/common.py
Normal file
53
libs/partners/cohere/langchain_cohere/common.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
"""Common utilities and types for Cohere integration."""
|
||||||
|
|
||||||
|
from typing import Any, Dict, Optional
|
||||||
|
|
||||||
|
|
||||||
|
class CohereCitation:
|
||||||
|
"""Represents a citation from Cohere model responses.
|
||||||
|
|
||||||
|
To use this, you need to install the ``langchain-cohere`` package.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip install langchain-cohere
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from langchain_cohere import CohereCitation
|
||||||
|
|
||||||
|
citation = CohereCitation(
|
||||||
|
start=0,
|
||||||
|
end=10,
|
||||||
|
text="cited text",
|
||||||
|
document_ids=["doc1"]
|
||||||
|
)
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
start: int
|
||||||
|
"""Start index of the citation in the generated text."""
|
||||||
|
|
||||||
|
end: int
|
||||||
|
"""End index of the citation in the generated text."""
|
||||||
|
|
||||||
|
text: str
|
||||||
|
"""The cited text."""
|
||||||
|
|
||||||
|
document_ids: list[str]
|
||||||
|
"""List of document IDs that support this citation."""
|
||||||
|
|
||||||
|
def __init__(
|
||||||
|
self,
|
||||||
|
start: int,
|
||||||
|
end: int,
|
||||||
|
text: str,
|
||||||
|
document_ids: list[str],
|
||||||
|
**kwargs: Any,
|
||||||
|
) -> None:
|
||||||
|
"""Initialize citation."""
|
||||||
|
self.start = start
|
||||||
|
self.end = end
|
||||||
|
self.text = text
|
||||||
|
self.document_ids = document_ids
|
48
libs/partners/cohere/langchain_cohere/embeddings.py
Normal file
48
libs/partners/cohere/langchain_cohere/embeddings.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
"""Cohere embeddings."""
|
||||||
|
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
try:
|
||||||
|
from langchain_core.embeddings import Embeddings
|
||||||
|
except ImportError:
|
||||||
|
# Fallback for when langchain_core is not available
|
||||||
|
class Embeddings:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CohereEmbeddings(Embeddings):
|
||||||
|
"""Cohere embeddings.
|
||||||
|
|
||||||
|
To use this, you need to install the ``langchain-cohere`` package.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip install langchain-cohere
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from langchain_cohere import CohereEmbeddings
|
||||||
|
|
||||||
|
embeddings = CohereEmbeddings(model="embed-english-v3.0")
|
||||||
|
text_embeddings = embeddings.embed_documents(["Hello world"])
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
model: str = "embed-english-v3.0"
|
||||||
|
"""Model name to use."""
|
||||||
|
|
||||||
|
cohere_api_key: Optional[str] = None
|
||||||
|
"""Cohere API key. If not provided, will read from environment variable COHERE_API_KEY."""
|
||||||
|
|
||||||
|
def embed_documents(self, texts: List[str]) -> List[List[float]]:
|
||||||
|
"""Embed search docs."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"This is a placeholder class. Install langchain-cohere to use: pip install langchain-cohere"
|
||||||
|
)
|
||||||
|
|
||||||
|
def embed_query(self, text: str) -> List[float]:
|
||||||
|
"""Embed query text."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"This is a placeholder class. Install langchain-cohere to use: pip install langchain-cohere"
|
||||||
|
)
|
0
libs/partners/cohere/langchain_cohere/py.typed
Normal file
0
libs/partners/cohere/langchain_cohere/py.typed
Normal file
47
libs/partners/cohere/langchain_cohere/rag_retrievers.py
Normal file
47
libs/partners/cohere/langchain_cohere/rag_retrievers.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
"""Cohere RAG retriever."""
|
||||||
|
|
||||||
|
from typing import Any, List, Optional
|
||||||
|
|
||||||
|
try:
|
||||||
|
from langchain_core.documents import Document
|
||||||
|
from langchain_core.retrievers import BaseRetriever
|
||||||
|
except ImportError:
|
||||||
|
# Fallback for when langchain_core is not available
|
||||||
|
class Document:
|
||||||
|
pass
|
||||||
|
class BaseRetriever:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CohereRagRetriever(BaseRetriever):
|
||||||
|
"""Cohere RAG retriever.
|
||||||
|
|
||||||
|
To use this, you need to install the ``langchain-cohere`` package.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip install langchain-cohere
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from langchain_cohere import CohereRagRetriever
|
||||||
|
|
||||||
|
retriever = CohereRagRetriever()
|
||||||
|
docs = retriever.get_relevant_documents("query")
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
cohere_api_key: Optional[str] = None
|
||||||
|
"""Cohere API key. If not provided, will read from environment variable COHERE_API_KEY."""
|
||||||
|
|
||||||
|
def _get_relevant_documents(
|
||||||
|
self,
|
||||||
|
query: str,
|
||||||
|
*,
|
||||||
|
run_manager: Optional[Any] = None,
|
||||||
|
) -> List[Document]:
|
||||||
|
"""Get documents relevant to a query."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"This is a placeholder class. Install langchain-cohere to use: pip install langchain-cohere"
|
||||||
|
)
|
51
libs/partners/cohere/langchain_cohere/rerank.py
Normal file
51
libs/partners/cohere/langchain_cohere/rerank.py
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
"""Cohere rerank functionality."""
|
||||||
|
|
||||||
|
from typing import Any, List, Optional, Sequence
|
||||||
|
|
||||||
|
try:
|
||||||
|
from langchain_core.documents import Document
|
||||||
|
except ImportError:
|
||||||
|
# Fallback for when langchain_core is not available
|
||||||
|
class Document:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class CohereRerank:
|
||||||
|
"""Cohere rerank model.
|
||||||
|
|
||||||
|
To use this, you need to install the ``langchain-cohere`` package.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
pip install langchain-cohere
|
||||||
|
|
||||||
|
Example:
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from langchain_cohere import CohereRerank
|
||||||
|
|
||||||
|
rerank = CohereRerank(model="rerank-english-v3.0")
|
||||||
|
docs = [Document(page_content="doc1"), Document(page_content="doc2")]
|
||||||
|
reranked = rerank.rerank(docs, "query")
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
model: str = "rerank-english-v3.0"
|
||||||
|
"""Model name to use."""
|
||||||
|
|
||||||
|
cohere_api_key: Optional[str] = None
|
||||||
|
"""Cohere API key. If not provided, will read from environment variable COHERE_API_KEY."""
|
||||||
|
|
||||||
|
top_n: int = 10
|
||||||
|
"""Number of documents to return."""
|
||||||
|
|
||||||
|
def rerank(
|
||||||
|
self,
|
||||||
|
documents: Sequence[Document],
|
||||||
|
query: str,
|
||||||
|
**kwargs: Any,
|
||||||
|
) -> List[Document]:
|
||||||
|
"""Rerank documents based on query relevance."""
|
||||||
|
raise NotImplementedError(
|
||||||
|
"This is a placeholder class. Install langchain-cohere to use: pip install langchain-cohere"
|
||||||
|
)
|
93
libs/partners/cohere/pyproject.toml
Normal file
93
libs/partners/cohere/pyproject.toml
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
[build-system]
|
||||||
|
requires = ["poetry-core>=1.0.0"]
|
||||||
|
build-backend = "poetry.core.masonry.api"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
name = "langchain-cohere"
|
||||||
|
version = "0.4.4"
|
||||||
|
description = "An integration package connecting Cohere and LangChain"
|
||||||
|
readme = "README.md"
|
||||||
|
license = {text = "MIT"}
|
||||||
|
dependencies = [
|
||||||
|
"langchain-core>=0.3.27",
|
||||||
|
"cohere>=5.12.0,<6.0",
|
||||||
|
"langchain-community>=0.3.0",
|
||||||
|
"pydantic>=2,<3",
|
||||||
|
]
|
||||||
|
authors = [
|
||||||
|
{name = "LangChain", email = "hello@langchain.com"}
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
"Source Code" = "https://github.com/langchain-ai/langchain-cohere"
|
||||||
|
"Homepage" = "https://github.com/langchain-ai/langchain-cohere"
|
||||||
|
|
||||||
|
[tool.poetry]
|
||||||
|
name = "langchain-cohere"
|
||||||
|
version = "0.4.4"
|
||||||
|
description = "An integration package connecting Cohere and LangChain"
|
||||||
|
authors = []
|
||||||
|
readme = "README.md"
|
||||||
|
repository = "https://github.com/langchain-ai/langchain-cohere"
|
||||||
|
license = "MIT"
|
||||||
|
|
||||||
|
[tool.poetry.urls]
|
||||||
|
"Source Code" = "https://github.com/langchain-ai/langchain-cohere"
|
||||||
|
|
||||||
|
[tool.poetry.dependencies]
|
||||||
|
python = ">=3.9,<4.0"
|
||||||
|
langchain-core = "^0.3.27"
|
||||||
|
cohere = ">=5.12.0,<6.0"
|
||||||
|
langchain-community = { version = "^0.3.0"}
|
||||||
|
pydantic = ">=2,<3"
|
||||||
|
|
||||||
|
[tool.poetry.group.test]
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[tool.poetry.group.test.dependencies]
|
||||||
|
pytest = "^8.2.2"
|
||||||
|
freezegun = "^1.2.2"
|
||||||
|
pytest-mock = "^3.10.0"
|
||||||
|
syrupy = "^4.0.2"
|
||||||
|
pytest-watcher = "^0.3.4"
|
||||||
|
pytest-asyncio = "^0.21.1"
|
||||||
|
langchain-tests = "0.3.1"
|
||||||
|
|
||||||
|
[tool.poetry.group.codespell]
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[tool.poetry.group.codespell.dependencies]
|
||||||
|
codespell = "^2.2.0"
|
||||||
|
|
||||||
|
[tool.poetry.group.lint]
|
||||||
|
optional = true
|
||||||
|
|
||||||
|
[tool.poetry.group.lint.dependencies]
|
||||||
|
ruff = "^0.1.5"
|
||||||
|
|
||||||
|
[tool.poetry.group.typing.dependencies]
|
||||||
|
mypy = "^0.991"
|
||||||
|
|
||||||
|
[tool.ruff]
|
||||||
|
select = [
|
||||||
|
"E", # pycodestyle
|
||||||
|
"F", # pyflakes
|
||||||
|
"I", # isort
|
||||||
|
]
|
||||||
|
|
||||||
|
fixable = ["ALL"]
|
||||||
|
|
||||||
|
[tool.mypy]
|
||||||
|
disallow_untyped_defs = true
|
||||||
|
|
||||||
|
[tool.coverage.run]
|
||||||
|
omit = ["tests/*"]
|
||||||
|
|
||||||
|
[tool.pytest.ini_options]
|
||||||
|
addopts = "--snapshot-warn-unused --strict-markers --strict-config --durations=5"
|
||||||
|
markers = [
|
||||||
|
"requires: mark tests as requiring a specific library",
|
||||||
|
"asyncio: mark tests as requiring asyncio",
|
||||||
|
"compile: mark placeholder test used to compile integration tests without running them",
|
||||||
|
]
|
||||||
|
asyncio_mode = "auto"
|
Reference in New Issue
Block a user