mirror of
https://github.com/hwchase17/langchain
synced 2024-11-08 07:10:35 +00:00
79 lines
2.3 KiB
Markdown
79 lines
2.3 KiB
Markdown
|
# langchain-standard-tests
|
||
|
|
||
|
This is an INTERNAL library for the LangChain project. It contains the base classes for
|
||
|
a standard set of tests.
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
This package will NOT be regularly published to pypi. It is intended to be installed
|
||
|
directly from github at test time.
|
||
|
|
||
|
Pip:
|
||
|
|
||
|
```bash
|
||
|
pip install git+https://github.com/langchain-ai/langchain.git#subdirectory=libs/standard-tests
|
||
|
```
|
||
|
|
||
|
Poetry:
|
||
|
|
||
|
```bash
|
||
|
poetry add git+https://github.com/langchain-ai/langchain.git#subdirectory=libs/standard-tests
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
To add standard tests to an integration package's e.g. ChatModel, you need to create
|
||
|
|
||
|
1. A unit test class that inherits from ChatModelUnitTests
|
||
|
2. An integration test class that inherits from ChatModelIntegrationTests
|
||
|
|
||
|
`tests/unit_tests/test_standard.py`:
|
||
|
|
||
|
```python
|
||
|
"""Standard LangChain interface tests"""
|
||
|
|
||
|
from typing import Type
|
||
|
|
||
|
import pytest
|
||
|
from langchain_core.language_models import BaseChatModel
|
||
|
from langchain_standard_tests.unit_tests import ChatModelUnitTests
|
||
|
|
||
|
from langchain_parrot_chain import ChatParrotChain
|
||
|
|
||
|
|
||
|
class TestParrotChainStandard(ChatModelUnitTests):
|
||
|
@pytest.fixture
|
||
|
def chat_model_class(self) -> Type[BaseChatModel]:
|
||
|
return ChatParrotChain
|
||
|
```
|
||
|
|
||
|
`tests/integration_tests/test_standard.py`:
|
||
|
|
||
|
```python
|
||
|
"""Standard LangChain interface tests"""
|
||
|
|
||
|
from typing import Type
|
||
|
|
||
|
import pytest
|
||
|
from langchain_core.language_models import BaseChatModel
|
||
|
from langchain_standard_tests.integration_tests import ChatModelIntegrationTests
|
||
|
|
||
|
from langchain_parrot_chain import ChatParrotChain
|
||
|
|
||
|
|
||
|
class TestParrotChainStandard(ChatModelIntegrationTests):
|
||
|
@pytest.fixture
|
||
|
def chat_model_class(self) -> Type[BaseChatModel]:
|
||
|
return ChatParrotChain
|
||
|
```
|
||
|
|
||
|
## Reference
|
||
|
|
||
|
The following fixtures are configurable in the test classes. Anything not marked
|
||
|
as required is optional.
|
||
|
|
||
|
- `chat_model_class` (required): The class of the chat model to be tested
|
||
|
- `chat_model_params`: The keyword arguments to pass to the chat model constructor
|
||
|
- `chat_model_has_tool_calling`: Whether the chat model can call tools. By default, this is set to `hasattr(chat_model_class, 'bind_tools)`
|
||
|
- `chat_model_has_structured_output`: Whether the chat model can structured output. By default, this is set to `hasattr(chat_model_class, 'with_structured_output')`
|