@@ -182,23 +182,21 @@ def chat_model_params(self) -> dict:
182182
183183 Test subclasses **must** implement the following two properties:
184184
185- chat_model_class
186- The chat model class to test, e.g., `ChatParrotLink`.
185+ `chat_model_class`: The chat model class to test, e.g., `ChatParrotLink`.
187186
188- ```python
189- @property
190- def chat_model_class(self) -> Type[ChatParrotLink]:
191- return ChatParrotLink
192- ```
187+ ```python
188+ @property
189+ def chat_model_class(self) -> Type[ChatParrotLink]:
190+ return ChatParrotLink
191+ ```
193192
194- chat_model_params
195- Initialization parameters for the chat model.
193+ `chat_model_params`: Initialization parameters for the chat model.
196194
197- ```python
198- @property
199- def chat_model_params(self) -> dict:
200- return {"model": "bird-brain-001", "temperature": 0}
201- ```
195+ ```python
196+ @property
197+ def chat_model_params(self) -> dict:
198+ return {"model": "bird-brain-001", "temperature": 0}
199+ ```
202200
203201 In addition, test subclasses can control what features are tested (such as tool
204202 calling or multi-modality) by selectively overriding the following properties.
@@ -266,7 +264,7 @@ def has_tool_choice(self) -> bool:
266264 `with_structured_output` method is overridden. If the base implementation is
267265 intended to be used, this method should be overridden.
268266
269- See: https://python .langchain.com/docs/concepts/structured_outputs/
267+ See: https://docs .langchain.com/oss/python/langchain/structured-output
270268
271269 ```python
272270 @property
@@ -290,7 +288,7 @@ def structured_output_kwargs(self) -> dict:
290288 Boolean property indicating whether the chat model supports JSON mode in
291289 `with_structured_output`.
292290
293- See: https://python .langchain.com/docs/concepts/structured_outputs/#json-mode
291+ See: https://docs .langchain.com/oss/python/langchain/structured-output
294292
295293 ```python
296294 @property
@@ -324,7 +322,7 @@ def supports_json_mode(self) -> bool:
324322 }
325323 ```
326324
327- See https://python .langchain.com/docs/concepts/multimodality/
325+ See https://docs .langchain.com/oss/python/langchain/models#multimodal
328326
329327 ```python
330328 @property
@@ -349,7 +347,7 @@ def supports_image_inputs(self) -> bool:
349347 }
350348 ```
351349
352- See https://python .langchain.com/docs/concepts/multimodality/
350+ See https://docs .langchain.com/oss/python/langchain/models#multimodal
353351
354352 ```python
355353 @property
@@ -374,7 +372,7 @@ def supports_image_urls(self) -> bool:
374372 }
375373 ```
376374
377- See https://python .langchain.com/docs/concepts/multimodality/
375+ See https://docs .langchain.com/oss/python/langchain/models#multimodal
378376
379377 ```python
380378 @property
@@ -399,7 +397,7 @@ def supports_pdf_inputs(self) -> bool:
399397 }
400398 ```
401399
402- See https://python .langchain.com/docs/concepts/multimodality/
400+ See https://docs .langchain.com/oss/python/langchain/models#multimodal
403401
404402 ```python
405403 @property
@@ -420,8 +418,8 @@ def supports_audio_inputs(self) -> bool:
420418
421419 Defaults to `True`.
422420
423- `usage_metadata` is an optional dict attribute on `AIMessage`s that track input
424- and output tokens.
421+ `usage_metadata` is an optional dict attribute on `AIMessage` objects that track
422+ input and output tokens.
425423 [See more](https://python.langchain.com/api_reference/core/messages/langchain_core.messages.ai.UsageMetadata.html).
426424
427425 ```python
@@ -537,8 +535,8 @@ def supports_pdf_tool_message(self) -> bool:
537535 Property controlling what usage metadata details are emitted in both invoke
538536 and stream.
539537
540- `usage_metadata` is an optional dict attribute on `AIMessage`s that track input
541- and output tokens.
538+ `usage_metadata` is an optional dict attribute on `AIMessage` objects that track
539+ input and output tokens.
542540 [See more](https://python.langchain.com/api_reference/core/messages/langchain_core.messages.ai.UsageMetadata.html).
543541
544542 It includes optional keys `input_token_details` and `output_token_details`
@@ -580,9 +578,7 @@ def enable_vcr_tests(self) -> bool:
580578 also exclude additional headers, override the default exclusions, or apply
581579 other customizations to the VCR configuration. See example below:
582580
583- ```python
584- :caption: tests/conftest.py
585-
581+ ```python title="tests/conftest.py"
586582 import pytest
587583 from langchain_tests.conftest import (
588584 _base_vcr_config as _base_vcr_config,
@@ -617,9 +613,7 @@ def vcr_config(_base_vcr_config: dict) -> dict: # noqa: F811
617613 to your VCR fixture and enable this serializer in the config. See
618614 example below:
619615
620- ```python
621- :caption: tests/conftest.py
622-
616+ ```python title="tests/conftest.py"
623617 import pytest
624618 from langchain_tests.conftest import (
625619 CustomPersister,
@@ -658,7 +652,6 @@ def vcr_config(_base_vcr_config: dict) -> dict: # noqa: F811
658652 def pytest_recording_configure(config: dict, vcr: VCR) -> None:
659653 vcr.register_persister(CustomPersister())
660654 vcr.register_serializer("yaml.gz", CustomSerializer())
661-
662655 ```
663656
664657 You can inspect the contents of the compressed cassettes (e.g., to
0 commit comments