Compare commits

...

233 Commits

Author SHA1 Message Date
ccurme
e1b593ae77 text-splitters[patch]: release 0.3.6 (#29647) 2025-02-06 16:16:05 -05:00
ccurme
a91e58bc10 core: release 0.3.34 (#29644) 2025-02-06 15:53:56 -05:00
Vincent Emonet
08b9eaaa6f community: improve FastEmbedEmbeddings support for ONNX execution provider (e.g. GPU) (#29645)
I made a change to how was implemented the support for GPU in
`FastEmbedEmbeddings` to be more consistent with the existing
implementation `langchain-qdrant` sparse embeddings implementation

It is directly enabling to provide the list of ONNX execution providers:
https://github.com/langchain-ai/langchain/blob/master/libs/partners/qdrant/langchain_qdrant/fastembed_sparse.py#L15

It is a bit less clear to a user that just wants to enable GPU, but
gives more capabilities to work with other execution providers that are
not the `CUDAExecutionProvider`, and is more future proof

Sorry for the disturbance @ccurme

> Nice to see you just moved to `uv`! It is so much nicer to run
format/lint/test! No need to manually rerun the `poetry install` with
all required extras now
2025-02-06 15:31:23 -05:00
Erick Friis
1bf620222b infra: remove deepseek from scheduled tests (#29643) 2025-02-06 19:43:03 +00:00
ccurme
3450bfc806 infra: add UV_FROZEN to makefiles (#29642)
These are set in Github workflows, but forgot to add them to most
makefiles for convenience when developing locally.

`uv run` will automatically sync the lock file. Because many of our
development dependencies are local installs, it will pick up version
changes and update the lock file. Passing `--frozen` or setting this
environment variable disables the behavior.
2025-02-06 14:36:54 -05:00
ccurme
d172984c91 infra: migrate to uv (#29566) 2025-02-06 13:36:26 -05:00
ccurme
9da06e6e94 standard-tests[patch]: use has_structured_output property to engage structured output tests (#29635)
Motivation: dedicated structured output features are becoming more
common, such that integrations can support structured output without
supporting tool calling.

Here we make two changes:

1. Update the `has_structured_output` method to default to True if a
model supports tool calling (in addition to defaulting to True if
`with_structured_output` is overridden).
2. Update structured output tests to engage if `has_structured_output`
is True.
2025-02-06 10:09:06 -08:00
Vincent Emonet
db8201d4da community: fix typo in the module imported when using GPU with FastEmbedEmbeddings (#29631)
Made a mistake in the module to import (the module stay the same only
the installed package changes), fixed it and tested it

https://github.com/langchain-ai/langchain/pull/29627

@ccurme
2025-02-06 10:26:08 -05:00
Mohammed Abbadi
f8fd65dea2 community: Update deeplake.py (#29633)
Deep Lake recently released version 4, which introduces significant
architectural changes, including a new on-disk storage format, enhanced
indexing mechanisms, and improved concurrency. However, LangChain's
vector store integration currently does not support Deep Lake v4 due to
breaking API changes.

Previously, the installation command was:
`pip install deeplake[enterprise]`
This installs the latest available version, which now defaults to Deep
Lake v4. Since LangChain's vector store integration is still dependent
on v3, this can lead to compatibility issues when using Deep Lake as a
vector database within LangChain.

To ensure compatibility, the installation command has been updated to:
`pip install deeplake[enterprise]<4.0.0`
This constraint ensures that pip installs the latest available version
of Deep Lake within the v3 series while avoiding the incompatible v4
update.
2025-02-06 10:25:13 -05:00
Vincent Emonet
0ac5536f04 community: add support for using GPUs with FastEmbedEmbeddings (#29627)
- **Description:** add a `gpu: bool = False` field to the
`FastEmbedEmbeddings` class which enables to use GPU (through ONNX CUDA
provider) when generating embeddings with any fastembed model. It just
requires the user to install a different dependency and we use a
different provider when instantiating `fastembed.TextEmbedding`
- **Issue:** when generating embeddings for a really large amount of
documents this drastically increase performance (honestly that is a must
have in some situations, you can't just use CPU it is way too slow)
- **Dependencies:** no direct change to dependencies, but internally the
users will need to install `fastembed-gpu` instead of `fastembed`, I
made all the changes to the init function to properly let the user know
which dependency they should install depending on if they enabled `gpu`
or not
 
cf. fastembed docs about GPU for more details:
https://qdrant.github.io/fastembed/examples/FastEmbed_GPU/

I did not added test because it would require access to a GPU in the
testing environment
2025-02-06 08:04:19 -05:00
Dmitrii Rashchenko
0ceda557aa add o1 and o3-mini to pricing (#29628)
### PR Title:  
**community: add latest OpenAI models pricing**  

### Description:  
This PR updates the OpenAI model cost calculation mapping by adding the
latest OpenAI models, **o1 (non-preview)** and **o3-mini**, based on the
pricing listed on the [OpenAI pricing
page](https://platform.openai.com/docs/pricing).

### Changes:  
- Added pricing for `o1`, `o1-2024-12-17`, `o1-cached`, and
`o1-2024-12-17-cached` for input tokens.
- Added pricing for `o1-completion` and `o1-2024-12-17-completion` for
output tokens.
- Added pricing for `o3-mini`, `o3-mini-2025-01-31`, `o3-mini-cached`,
and `o3-mini-2025-01-31-cached` for input tokens.
- Added pricing for `o3-mini-completion` and
`o3-mini-2025-01-31-completion` for output tokens.

### Issue:  
N/A  

### Dependencies:  
None  

### Testing & Validation:  
- No functional changes outside of updating the cost mapping.  
- No tests were added or modified.
2025-02-06 08:02:20 -05:00
ZhangShenao
ac53977dbc [MistralAI] Improve MistralAIEmbeddings (#29242)
- Add static method decorator for method.
- Add expected exception for retry decorator

#29125
2025-02-05 21:31:54 -05:00
Andrew Wason
22aa5e07ed standard-tests: Fix ToolsIntegrationTests to correctly handle "content_and_artifact" tools (#29391)
**Description:**

The response from `tool.invoke()` is always a ToolMessage, with content
and artifact fields, not a tuple.
The tuple is converted to a ToolMessage here

b6ae7ca91d/libs/core/langchain_core/tools/base.py (L726)

**Issue:**

Currently `ToolsIntegrationTests` requires `invoke()` to return a tuple
and so standard tests fail for "content_and_artifact" tools. This fixes
that to check the returned ToolMessage.

This PR also adds a test that now passes.
2025-02-05 21:27:09 -05:00
Mohammad Anash
f849305a56 fixed Bug in PreFilter of AzureCosmosDBNoSqlVectorSearch (#29613)
Description: Fixes PreFilter value handling in Azure Cosmos DB NoSQL
vectorstore. The current implementation fails to handle numeric values
in filter conditions, causing an undefined value variable error. This PR
adds support for numeric, boolean, and NULL values while maintaining the
existing string and list handling.

Changes:
Added handling for numeric types (int/float)
Added boolean value support
Added NULL value handling
Added type validation for unsupported values
Fixed scope of value variable initialization

Issue: 
Fixes #29610

Implementation Notes:
No changes to public API
Backwards compatible
Maintains consistent behavior with existing MongoDB-style filtering
Preserves SQL injection prevention through proper value handling

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-02-06 02:20:26 +00:00
Philippe PRADOS
6ff0d5c807 community[minor]: 04 - Refactoring PDFMiner parser (#29526)
This is one part of a larger Pull Request (PR) that is too large to be
submitted all at once. This specific part focuses on updating the XXX
parser.

For more details, see [PR
28970](https://github.com/langchain-ai/langchain/pull/28970).

---------

Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
2025-02-05 21:08:27 -05:00
Yoav Levy
4460d20ba9 docs: Nimble provider doc fixes (#29597)
## Description

- Removed broken link for the API Reference
- Added `OPENAI_API_KEY` setter for the chains to properly run
- renamed one of our examples so it won't override the original
retriever and cause confusion due to it using a different mode of
retrieving
- Moved one of our simple examples to be the first example of our
retriever :)
2025-02-05 11:24:37 -08:00
Isaac Francisco
91ffd7caad core: allow passing message dicts into ChatPromptTemplate (#29363)
Co-authored-by: Erick Friis <erick@langchain.dev>
2025-02-05 09:45:52 -08:00
ccurme
69595b0914 docs: fix builds (#29607)
Failing with:
> ValueError: Provider page not found for databricks-langchain. Please
add one at docs/integrations/providers/databricks-langchain.{mdx,ipynb}
2025-02-05 14:24:53 +00:00
ccurme
91a33a9211 anthropic[patch]: release 0.3.6 (#29606) 2025-02-05 14:18:02 +00:00
ccurme
5cbe6aba8f anthropic[patch]: support citations in streaming (#29591) 2025-02-05 09:12:07 -05:00
William FH
5ae4ed791d Drop duplicate inputs (#29589) 2025-02-04 18:06:10 -08:00
Erick Friis
65f0deb81a packages: databricks-langchain (#29593) 2025-02-05 01:53:34 +00:00
Yoav Levy
621bba7e26 docs: add nimble as a provider (#29579)
## Description:

- Add docs/docs/providers/nimbleway.ipynb
- Add docs/docs/integrations/retrievers/nimbleway.ipynb
- Register nimbleway in libs/packages.yml

- X (twitter) handle: @urielkn / @LevyNorbit8
2025-02-04 16:47:03 -08:00
Erick Friis
50d61eafa2 partners/deepseek: release 0.1.1 (#29592) 2025-02-04 23:46:38 +00:00
Erick Friis
7edfcbb090 docs: rename to langchain-deepseek in docs (#29587) 2025-02-04 14:22:17 -08:00
Erick Friis
04e8f3b6d7 infra: add deepseek api key to release (#29585) 2025-02-04 10:35:07 -08:00
Erick Friis
df8fa882b2 deepseek: bump core (#29584) 2025-02-04 10:25:46 -08:00
Erick Friis
455f65947a deepseek: rename to langchain-deepseek from langchain-deepseek-official (#29583) 2025-02-04 17:57:25 +00:00
Philippe PRADOS
5771e561fb [Bugfix langchain_community] Fix PyMuPDFLoader (#29550)
- **Description:**  add legacy properties
    - **Issue:** #29470
    - **Twitter handle:** pprados
2025-02-04 09:24:40 -05:00
Ashutosh Kumar
65b404a2d1 [oci_generative_ai] Option to pass auth_file_location (#29481)
**PR title**: "community: Option to pass auth_file_location for
oci_generative_ai"

**Description:** Option to pass auth_file_location, to overwrite config
file default location "~/.oci/config" where profile name configs
present. This is not fixing any issues. Just added optional parameter
called "auth_file_location", which internally supported by any OCI
client including GenerativeAiInferenceClient.
2025-02-03 21:44:13 -05:00
Teruaki Ishizaki
aeb42dc900 partners: Fixed the procedure of initializing pad_token_id (#29500)
- **Description:** Add to check pad_token_id and eos_token_id of model
config. It seems that this is the same bug as the HuggingFace TGI bug.
It's same bug as #29434
- **Issue:** #29431
- **Dependencies:** none
- **Twitter handle:** tell14

Example code is followings:
```python
from langchain_huggingface.llms import HuggingFacePipeline

hf = HuggingFacePipeline.from_model_id(
    model_id="meta-llama/Llama-3.2-3B-Instruct",
    task="text-generation",
    pipeline_kwargs={"max_new_tokens": 10},
)

from langchain_core.prompts import PromptTemplate

template = """Question: {question}

Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)

chain = prompt | hf

question = "What is electroencephalography?"

print(chain.invoke({"question": question}))
```
2025-02-03 21:40:33 -05:00
Tanushree
e8b91283ef Banner for interrupt (#29567)
Adding banner for interrupt
2025-02-03 17:40:24 -08:00
Erick Friis
ab67137fa3 docs: chat model order experiment (#29480) 2025-02-03 18:55:18 +00:00
AmirPoursaberi
a6efd22ba1 Fix a tiny typo in create_retrieval_chain docstring (#29552)
Hi there!

To fix a tiny typo in `create_retrieval_chain` docstring.
2025-02-03 10:54:49 -05:00
JHIH-SIOU LI
48fa3894c2 docs: update readthedocs document loader options (#29556)
Hi there!

This PR updates the documentation according to the code.
If we run the example as is, then it would result in the following
error:

![image](https://github.com/user-attachments/assets/9c0a336c-775c-489c-a275-f1153d447ecb)

It seems that this part of the code already supplied the required
argument to the BeautifulSoup4:

0c782ee547/libs/community/langchain_community/document_loaders/readthedocs.py (L87-L90)

Since the example can only work by removing this argument, it also seems
legit to remove it from the documentation.
2025-02-03 10:54:24 -05:00
Tyllen
0c782ee547 docs: update payman docs (#29479)
- **Description:** fix the import docs variables

---------

Co-authored-by: ccurme <chester.curme@gmail.com>
2025-02-02 02:41:54 +00:00
Hemant Rawat
db1693aa70 community: fix issue #29429 in age_graph.py (#29506)
## Description:

This PR addresses issue #29429 by fixing the _wrap_query method in
langchain_community/graphs/age_graph.py. The method now correctly
handles Cypher queries with UNION and EXCEPT operators, ensuring that
the fields in the SQL query are ordered as they appear in the Cypher
query. Additionally, the method now properly handles cases where RETURN
* is not supported.

### Issue: #29429

### Dependencies: None


### Add tests and docs:

Added unit tests in tests/unit_tests/graphs/test_age_graph.py to
validate the changes.
No new integrations were added, so no example notebook is necessary.
Lint and test:

Ran make format, make lint, and make test to ensure code quality and
functionality.
2025-02-01 21:24:45 -05:00
Keenan Pepper
2f97916dea docs: Add goodfire notebook and add to packages.yml (#29512)
- **Description:** Add Goodfire ipynb notebook and add
langchain-goodfire package to packages.yml
- **Issue:** n/a
- **Dependencies:** docs only
- **Twitter handle:** keenanpepper

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-02-01 19:43:20 -05:00
ccurme
a3c5e4d070 deepseek[patch]: bump langchain-openai and add to scheduled testing (#29535) 2025-02-01 18:40:59 -05:00
ccurme
16a422f3fa community: add standard tests for Perplexity (#29534) 2025-02-01 17:02:57 -05:00
A Venkata Sai Krishna Varun
21d8d41595 docs: update delete method in vectorstores.mdx (#29497)
Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-31 18:15:28 +00:00
Mark Perfect
b8e218b09f docs: Fix Milvus vector store initialization (#29511)
- [x] **PR title**:


- [x] **PR message**:

- A change in the Milvus API has caused an issue with the local vector
store initialization. Having used an Ollama embedding model, the vector
store initialization results in the following error:

<img width="978" alt="image"
src="https://github.com/user-attachments/assets/d57e495c-1764-4fbe-ab8c-21ee44f1e686"
/>

- This is fixed by setting the index type explicitly:

`vector_store = Milvus(embedding_function=embeddings,
connection_args={"uri": URI}, index_params={"index_type": "FLAT",
"metric_type": "L2"},)`

Other small documentation edits were also made.


- [x] **Add tests and docs**:
  N/A


- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-31 12:57:36 -05:00
Amit Ghadge
0c405245c4 [Integrations][Tool] Added Jenkins tools support (#29516)
Thank you for contributing to LangChain!

- [x] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [x] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [x] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-31 12:50:10 -05:00
Subrat Lima
5b826175c9 docs: Update local_llms.ipynb - fixed a typo (#29520)
Description: fixed a typo in the how to > local llma > llamafile section
description.
2025-01-31 11:18:24 -05:00
Christophe Bornet
aab2e42169 core[patch]: Use Blockbuster to detect blocking calls in asyncio during tests (#29043)
This PR uses the [blockbuster](https://github.com/cbornet/blockbuster)
library in langchain-core to detect blocking calls made in the asyncio
event loop during unit tests.
Avoiding blocking calls is hard as these can be deeply buried in the
code or made in 3rd party libraries.
Blockbuster makes it easier to detect them by raising an exception when
a call is made to a known blocking function (eg: `time.sleep`).

Adding blockbuster allowed to find a blocking call in
`aconfig_with_context` (it ends up calling `get_function_nonlocals`
which loads function code).

**Dependencies:**
- blockbuster (test)

**Twitter handle:** cbornet_
2025-01-31 10:06:34 -05:00
Philippe PRADOS
ceda8bc050 community[minor]: 03 - Refactoring PyPDF parser (#29330)
This is one part of a larger Pull Request (PR) that is too large to be
submitted all at once.
This specific part focuses on updating the PyPDF parser.

For more details, see [PR
28970](https://github.com/langchain-ai/langchain/pull/28970).
2025-01-31 10:05:07 -05:00
Julian Castro Pulgarin
b7e3e337b1 community: Fix YahooFinanceNewsTool to handle updated yfinance data structure (#29498)
*Description:**
Updates the YahooFinanceNewsTool to handle the current yfinance news
data structure. The tool was failing with a KeyError due to changes in
the yfinance API's response format. This PR updates the code to
correctly extract news URLs from the new structure.

**Issue:** #29495

**Dependencies:** 
No new dependencies required. Works with existing yfinance package.

The changes maintain backwards compatibility while fixing the KeyError
that users were experiencing.

The modified code properly handles the new data structure where:
- News type is now at `content.contentType`
- News URL is now at `content.canonicalUrl.url`

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-31 02:31:44 +00:00
Vadym Barda
22219eefaf docs: update README/intro (#29492) 2025-01-29 22:50:00 +00:00
Erick Friis
332e303858 partners/mistralai: release 0.2.6 (#29491) 2025-01-29 22:23:14 +00:00
Erick Friis
2c795f5628 partners/openai: release 0.3.3 (#29490) 2025-01-29 22:23:03 +00:00
Erick Friis
f307b3cc5f langchain: release 0.3.17 (#29485) 2025-01-29 22:22:49 +00:00
Erick Friis
5cad3683b4 partners/groq: release 0.2.4 (#29488) 2025-01-29 22:22:30 +00:00
Erick Friis
e074c26a6b partners/fireworks: release 0.2.7 (#29487) 2025-01-29 22:22:18 +00:00
Erick Friis
685609e1ef partners/anthropic: release 0.3.5 (#29486) 2025-01-29 22:22:11 +00:00
Erick Friis
ed3a5e664c standard-tests: release 0.3.10 (#29484) 2025-01-29 22:21:05 +00:00
Erick Friis
29461b36d9 partners/ollama: release 0.2.3 (#29489) 2025-01-29 22:19:44 +00:00
Erick Friis
07e2e80fe7 core: release 0.3.33 (#29483) 2025-01-29 14:11:53 -08:00
Erick Friis
8f95da4eb1 multiple: structured output tracing standard metadata (#29421)
Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-29 14:00:26 -08:00
ccurme
284c935b08 tests[patch]: improve coverage of structured output tests (#29478) 2025-01-29 14:52:09 -05:00
Erick Friis
c79274cb7c docs: typo in contrib integrations (#29477) 2025-01-29 19:39:36 +00:00
ccurme
a3878a3c62 infra: update deps for notebook tests (#29476) 2025-01-29 10:23:50 -05:00
Matheus Torquato
7aae738296 docs:Fix Imports for Document and BaseRetriever (#29473)
This pull request addresses an issue with import statements in the
langchain_core/retrievers.py file. The following changes have been made:

Corrected the import for Document from langchain_core.documents.base.
Corrected the import for BaseRetriever from langchain_core.retrievers.
These changes ensure that the SimpleRetriever class can correctly
reference the Document and BaseRetriever classes, improving code
reliability and maintainability.

---------

Co-authored-by: Matheus Torquato <mtorquat@jaguarlandrover.com>
Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-29 14:32:05 +00:00
Mohammad Anash
12bcc85927 added operator filter for supabase (#29475)
Description
This PR adds support for MongoDB-style $in operator filtering in the
Supabase vectorstore implementation. Currently, filtering with $in
operators returns no results, even when matching documents exist. This
change properly translates MongoDB-style filters to PostgreSQL syntax,
enabling efficient multi-document filtering.
Changes

Modified similarity_search_by_vector_with_relevance_scores to handle
MongoDB-style $in operators
Added automatic conversion of $in filters to PostgreSQL IN clauses
Preserved original vector type handling and numpy array conversion
Maintained compatibility with existing postgrest filters
Added support for the same filtering in
similarity_search_by_vector_returning_embeddings

Issue
Closes #27932

Implementation Notes
No changes to public API or function signatures
Backwards compatible - behavior unchanged for non-$in filters
More efficient than multiple individual queries for multi-ID searches
Preserves all existing functionality including numpy array conversion
for vector types

Dependencies
None

Additional Notes
The implementation handles proper SQL escaping for filter values
Maintains consistent behavior with other vectorstore implementations
that support MongoDB-style operators
Future extensions could support additional MongoDB-style operators ($gt,
$lt, etc.)

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-29 14:24:18 +00:00
ccurme
585f467d4a mistral[patch]: release 0.2.5 (#29463) 2025-01-28 18:29:54 -05:00
ccurme
ca9d4e4595 mistralai: support method="json_schema" in structured output (#29461)
https://docs.mistral.ai/capabilities/structured-output/custom_structured_output/
2025-01-28 18:17:39 -05:00
Michael Chin
e120378695 community: Additional AWS deprecations (#29447)
Added deprecation warnings for a few more classes that weremoved to
`langchain-aws` package:
- [SageMaker Endpoint
LLM](https://python.langchain.com/api_reference/aws/retrievers/langchain_aws.retrievers.bedrock.AmazonKnowledgeBasesRetriever.html)
- [Amazon Kendra
retriever](https://python.langchain.com/api_reference/aws/retrievers/langchain_aws.retrievers.kendra.AmazonKendraRetriever.html)
- [Amazon Bedrock Knowledge Bases
retriever](https://python.langchain.com/api_reference/aws/retrievers/langchain_aws.retrievers.bedrock.AmazonKnowledgeBasesRetriever.html)
2025-01-28 09:50:14 -05:00
Tommy Cox
6f711794a7 docs: tiny grammary fix to why_langchain.mdx (#29455)
Description: Tiny grammar fix to doc - why_langchain.mdx
2025-01-28 09:49:33 -05:00
Erick Friis
2d776351af community: release 0.3.16 (#29452) 2025-01-28 07:44:54 +00:00
Erick Friis
737a68fcdc langchain: release 0.3.16 (#29451) 2025-01-28 07:31:09 +00:00
Erick Friis
fa3857c9d0 docs: tests/standard tests api ref redirect (#29444) 2025-01-27 23:21:50 -08:00
Erick Friis
8bf9c71673 core: release 0.3.32 (#29450) 2025-01-28 07:20:04 +00:00
Erick Friis
ecdc881328 langchain: add deepseek provider to init chat model (#29449) 2025-01-27 23:13:59 -08:00
Erick Friis
dced0ed3fd deepseek, docs: chatdeepseek integration added (#29445) 2025-01-28 06:32:58 +00:00
Vadym Barda
7cbf885c18 docs: replace 'state_modifier' with 'prompt' (#29415) 2025-01-27 21:29:18 -05:00
Isaac Francisco
2bb2c9bfe8 change behavior for converting a string to openai messages (#29446) 2025-01-27 18:18:54 -08:00
ccurme
b1fdac726b groq[patch]: update model used in test (#29441)
`llama-3.1-70b-versatile` was [shut
down](https://console.groq.com/docs/deprecations).
2025-01-27 21:11:44 +00:00
Adrián Panella
1551d9750c community(doc_loaders): allow any credential type in AzureAIDocumentI… (#29289)
allow any credential type in AzureAIDocumentInteligence, not only
`api_key`.
This allows to use any of the credentials types integrated with AD.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-27 20:56:30 +00:00
ccurme
f00c66cc1f chroma[patch]: release 0.2.1 (#29440) 2025-01-27 20:41:35 +00:00
Jorge Piedrahita Ortiz
3b886cdbb2 libs: add sambanova-lagchain integration package (#29417)
- **Description:**: Add sambanova-langchain integration package as
suggested in previous PRs

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-27 20:34:55 +00:00
Mohammad Anash
aba1fd0bd4 fixed similarity search with score error #29407 (#29413)
Description: Fix TypeError in AzureSearch similarity_search_with_score
by removing search_type from kwargs before passing to underlying
requests.

This resolves issue #29407 where search_type was being incorrectly
passed through to Session.request().
Issue: #29407

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-27 20:34:42 +00:00
itaismith
7b404fcd37 partners[chroma]: Upgrade Chroma to 0.6.x (#29404)
Thank you for contributing to LangChain!

- [x] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [x] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [x] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-27 15:32:21 -05:00
Teruaki Ishizaki
3fce78994e community: Fixed the procedure of initializing pad_token_id (#29434)
- **Description:** Add to check pad_token_id and eos_token_id of model
config. It seems that this is the same bug as the HuggingFace TGI bug.
In addition, the source code of
libs/partners/huggingface/langchain_huggingface/llms/huggingface_pipeline.py
also requires similar changes.
- **Issue:** #29431
- **Dependencies:** none
- **Twitter handle:** tell14
2025-01-27 14:54:54 -05:00
Christophe Bornet
dbb6b7b103 core: Add ruff rules TRY (tryceratops) (#29388)
TRY004 ("use TypeError rather than ValueError") existing errors are
marked as ignore to preserve backward compatibility.
LMK if you prefer to fix some of them.

Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-24 05:01:40 +00:00
Erick Friis
723b603f52 docs: groq api key links (#29402) 2025-01-24 04:33:18 +00:00
ccurme
bd1909fe05 docs: document citations in ChatAnthropic (#29401) 2025-01-23 17:18:51 -08:00
ccurme
bbc50f65e7 anthropic[patch]: release 0.3.4 (#29399) 2025-01-23 23:55:58 +00:00
ccurme
ed797e17fb anthropic[patch]: always return content blocks if citations are generated (#29398)
We currently return string (and therefore no content blocks / citations)
if the response is of the form
```
[
    {"text": "a claim", "citations": [...]},
]
```

There are other cases where we do return citations as-is:
```
[
    {"text": "a claim", "citations": [...]},
    {"text": "some other text"},
    {"text": "another claim", "citations": [...]},
]
```
Here we update to return content blocks including citations in the first
case as well.
2025-01-23 18:47:23 -05:00
ccurme
933b35b9c5 docs: update how-to index page (#29393) 2025-01-23 16:55:36 -05:00
Bagatur
317fb86fd9 openai[patch]: fix int test (#29395) 2025-01-23 21:23:01 +00:00
Bagatur
8d566a8fe7 openai[patch]: detect old models in with_structured_output (#29392)
Co-authored-by: ccurme <chester.curme@gmail.com>
2025-01-23 20:47:32 +00:00
Christophe Bornet
b6ae7ca91d core: Cache RunnableLambda __repr__ (#29199)
`RunnableLambda`'s `__repr__` may do costly OS operation by calling
`get_lambda_source`.
So it's better to cache it.
See #29043

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-23 18:34:47 +00:00
Christophe Bornet
618e550f06 core: Cache RunnableLambda deps (#29200)
`RunnableLambda`'s `deps` may do costly OS operation by calling
`get_function_nonlocals`.
So it's better to cache it.
See #29043
2025-01-23 13:09:07 -05:00
ccurme
f795ab99ec docs: fix title rendered for integration package (#29387)
"Tilores LangchAIn" -> "Tilores"
2025-01-23 12:21:19 -05:00
Stefan Berkner
8977451c76 docs: add Tilores provider and tools (#29244)
Description: This PR adds documentation for the Tilores provider and
tools.
Issue: closes #26320
2025-01-23 12:17:59 -05:00
Ahmed Tammaa
d5b8aabb32 text-splitters[patch]: delete unused html_chunks_with_headers.xslt (#29340)
This pull request removes the now-unused html_chunks_with_headers.xslt
file from the codebase. In a previous update ([PR
#27678](https://github.com/langchain-ai/langchain/pull/27678)), the
HTMLHeaderTextSplitter class was refactored to utilize BeautifulSoup
instead of lxml and XSLT for HTML processing. As a result, the
html_chunks_with_headers.xslt file is no longer necessary and can be
safely deleted to maintain code cleanliness and reduce potential
confusion.

Issue: N/A

Dependencies: N/A
2025-01-23 11:29:08 -05:00
Wang Ran (汪然)
8f2c11e17b core[patch]: fix API reference for draw_ascii (#29370)
typo: no `draw` but `draw_ascii` and other things

now, it works:
<img width="688" alt="image"
src="https://github.com/user-attachments/assets/5b5a8cc2-cf81-4a5c-b443-da0e4426556c"
/>

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-23 16:04:58 +00:00
Michael Chin
2df9daa7f2 docs: Update BedrockEmbeddings import example in aws.mdx (#29364)
The `BedrockEmbeddings` class in `langchain-community` has been
deprecated since v0.2.11:


https://github.com/langchain-ai/langchain/blob/master/libs/community/langchain_community/embeddings/bedrock.py#L14-L19

Updated the AWS docs for `BedRockEmbeddings` to use the new class in
`langchain-aws`.
2025-01-23 10:05:57 -05:00
Loris Alexandre
e4921239a6 community: missing mandatory parameter partition_key for AzureCosmosDBNoSqlVectorSearch (#29382)
- **Description:** the `delete` function of
AzureCosmosDBNoSqlVectorSearch is using
`self._container.delete_item(document_id)` which miss a mandatory
parameter `partition_key`
We use the class function `delete_document_by_id` to provide a default
`partition_key`
- **Issue:** #29372 
- **Dependencies:** None
- **Twitter handle:** None

Co-authored-by: Loris Alexandre <loris.alexandre@boursorama.fr>
2025-01-23 10:05:10 -05:00
Terry Tan
ec0ebb76f2 community: fix Google Scholar tool errors (#29371)
Resolve https://github.com/langchain-ai/langchain/issues/27557
2025-01-23 10:03:01 -05:00
江同学呀
a1e62070d0 community: Fix the problem of error reporting when OCR extracts text from PDF. (#29378)
- **Description:** The issue has been fixed where images could not be
recognized from ```xObject[obj]["/Filter"]``` (whose value can be either
a string or a list of strings) in the ```_extract_images_from_page()```
method. It also resolves the bug where vectorization by Faiss fails due
to the failure of image extraction from a PDF containing only
images```IndexError: list index out of range```.

![69a60f3f6bd474641b9126d74bb18f7e](https://github.com/user-attachments/assets/dc9e098d-2862-49f7-93b0-00f1056727dc)

- **Issue:** 
    Fix the following issues:
[#15227 ](https://github.com/langchain-ai/langchain/issues/15227)
[#22892 ](https://github.com/langchain-ai/langchain/issues/22892)
[#26652 ](https://github.com/langchain-ai/langchain/issues/26652)
[#27153 ](https://github.com/langchain-ai/langchain/issues/27153)
    Related issues:
[#7067 ](https://github.com/langchain-ai/langchain/issues/7067)

- **Dependencies:** None
- **Twitter handle:** None

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-23 15:01:52 +00:00
Tim Mallezie
a13faab6b7 community; allow to set gitlab url in gitlab tool in constrictor (#29380)
This pr, expands the gitlab url so it can also be set in a constructor,
instead of only through env variables.

This allows to do something like this. 
```
       # Create the GitLab API wrapper
        gitlab_api = GitLabAPIWrapper(
            gitlab_url=self.gitlab_url,
            gitlab_personal_access_token=self.gitlab_personal_access_token,
            gitlab_repository=self.gitlab_repository,
            gitlab_branch=self.gitlab_branch,
            gitlab_base_branch=self.gitlab_base_branch,
        )
```
Where before you could not set the url in the constructor.

Co-authored-by: Tim Mallezie <tim.mallezie@dropsolid.com>
2025-01-23 09:36:27 -05:00
Tyllen
f2ea62f632 docs: add payman docs (#29362)
- **Description:** Adding the docs to use the payman-langchain
integration :)
2025-01-22 18:37:47 -08:00
Erick Friis
861024f388 docs: openai audio input (#29360) 2025-01-22 23:45:35 +00:00
Erick Friis
3f1d20964a standard-tests: release 0.3.9 (#29356) 2025-01-22 09:46:19 -08:00
Macs Dickinson
7378c955db community: adds support for getting github releases for the configured repository (#29318)
**Description:** adds support for github tool to query github releases
on the configure respository
**Issue:** N/A
**Dependencies:** N/A
**Twitter handle:** @macsdickinson

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-22 15:45:52 +00:00
Tayaa Med Amine
ef1610e24a langchain[patch]: support ollama in init_embeddings (#29349)
Why not Ollama ?

Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-22 14:47:12 +00:00
Siddhant
9eb10a9240 langchain: added vectorstore docstring linting (#29241)
…ore.py

Thank you for contributing to LangChain!

- [x] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"
  
Added docstring linting in the vectorstore.py file relating to issue
#25154


- [x] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.

---------

Co-authored-by: Siddhant Jain <sjain35@buffalo.edu>
Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-22 03:47:43 +00:00
Erick Friis
a2ed796aa6 infra: run doc lint on root pyproject change (#29350) 2025-01-22 03:22:13 +00:00
Sohan
de1fc4811d packages, docs: Pipeshift - Langchain integration of pipeshift (#29114)
Description: Added pipeshift integration. This integrates pipeshift LLM
and ChatModels APIs with langchain
Dependencies: none

Unit Tests & Integration tests are added

Documentation is added as well

This PR is w.r.t
[#27390](https://github.com/langchain-ai/langchain/pull/27390) and as
per request, a freshly minted `langchain-pipeshift` package is uploaded
to PYPI. Only changes to the docs & packages.yml are made in langchain
master branch

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-22 03:03:06 +00:00
Erick Friis
e723882a49 docs: mongodb api ref redirect (#29348) 2025-01-21 16:48:03 -08:00
Christophe Bornet
836c791829 text-splitters: Bump ruff version to 0.9 (#29231)
Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-22 00:27:58 +00:00
Christophe Bornet
a004dec119 langchain: Bump ruff version to 0.9 (#29211)
Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-22 00:26:39 +00:00
Christophe Bornet
2340b3154d standard-tests: Bump ruff version to 0.9 (#29230)
Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-22 00:23:01 +00:00
Christophe Bornet
e4a78dfc2a core: Bump ruff version to 0.9 (#29201)
Also run some preview autofix and formatting

---------

Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-22 00:20:09 +00:00
Ella Charlaix
6f95db81b7 huggingface: Add IPEX models support (#29179)
Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-22 00:16:44 +00:00
Bhav Sardana
d6a7aaa97d community: Fix for Pydantic model validator of GoogleApiClient (#29346)
- [ *] **PR message**: ***Delete this entire checklist*** and replace
with
- **Description:** Fix for pedantic model validator for GoogleApiHandler
    - **Issue:** the issue #29165 

- [ *] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified.

---------

Signed-off-by: Bhav Sardana <sardana.bhav@gmail.com>
2025-01-21 15:17:43 -05:00
Christophe Bornet
1c4ce7b42b core: Auto-fix some docstrings (#29337) 2025-01-21 13:29:53 -05:00
ccurme
86a0720310 fireworks[patch]: update model used in integration tests (#29342)
No access to firefunction-v1 and -v2.
2025-01-21 11:05:30 -05:00
Hugo Berg
32c9c58adf Community: fix missing f-string modifier in oai structured output parsing error (#29326)
- **Description:** The ValueError raised on certain structured-outputs
parsing errors, in langchain openai community integration, was missing a
f-string modifier and so didn't produce useful outputs. This is a
2-line, 2-character change.
- **Issue:** None open that this fixes
- **Dependencies:** Nothing changed
- **Twitter handle:** None

- [X] **Add tests and docs**: There's nothing to add for.
- [-] **Lint and test**: Happy to run this if you deem it necessary.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-21 14:26:38 +00:00
Nuno Campos
566915d7cf core: fix call to get closure vars for partial-wrapped funcs (#29316)
Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-21 09:26:15 -05:00
ZhangShenao
33e22ccb19 [Doc] Improve api doc (#29324)
- Fix doc description
- Add static method decorator
2025-01-21 09:16:08 -05:00
Tugay Talha İçen
7b44c3384e Docs: update huggingfacehub.ipynb (#29329)
langchain -> langchain langchain-huggingface 


Updated the installation command from:
%pip install --upgrade --quiet langchain sentence_transformers to: %pip
install --upgrade --quiet langchain-huggingface sentence_transformers

This resolves an import error in the notebook when using from
langchain_huggingface.embeddings import HuggingFaceEmbeddings.
2025-01-21 09:12:22 -05:00
Bagatur
536b44a47f community[patch]: Release 0.3.15 (#29325) 2025-01-21 03:10:07 +00:00
Bagatur
ec5fae76d4 langchain[patch]: Release 0.3.15 (#29322) 2025-01-21 02:24:11 +00:00
Bagatur
923e6fb321 core[patch]: 0.3.31 (#29320) 2025-01-21 01:17:31 +00:00
Ikko Eltociear Ashimine
06456c1dcf docs: update google_cloud_sql_mssql.ipynb (#29315)
arbitary -> arbitrary
2025-01-20 16:11:08 -05:00
Ahmed Tammaa
d3ed9b86be text-splitters[minor]: Replace lxml and XSLT with BeautifulSoup in HTMLHeaderTextSplitter for Improved Large HTML File Processing (#27678)
This pull request updates the `HTMLHeaderTextSplitter` by replacing the
`split_text_from_file` method's implementation. The original method used
`lxml` and XSLT for processing HTML files, which caused
`lxml.etree.xsltapplyerror maxhead` when handling large HTML documents
due to limitations in the XSLT processor. Fixes #13149

By switching to BeautifulSoup (`bs4`), we achieve:

- **Improved Performance and Reliability:** BeautifulSoup efficiently
processes large HTML files without the errors associated with `lxml` and
XSLT.
- **Simplified Dependencies:** Removes the dependency on `lxml` and
external XSLT files, relying instead on the widely used `beautifulsoup4`
library.
- **Maintained Functionality:** The new method replicates the original
behavior, ensuring compatibility with existing code and preserving the
extraction of content and metadata.

**Issue:**

This change addresses issues related to processing large HTML files with
the existing `HTMLHeaderTextSplitter` implementation. It resolves
problems where users encounter lxml.etree.xsltapplyerror maxhead due to
large HTML documents.

**Dependencies:**

- **BeautifulSoup (`beautifulsoup4`):** The `beautifulsoup4` library is
now used for parsing HTML content.
  - Installation: `pip install beautifulsoup4`

**Code Changes:**

Updated the `split_text_from_file` method in `HTMLHeaderTextSplitter` as
follows:

```python
def split_text_from_file(self, file: Any) -> List[Document]:
    """Split HTML file using BeautifulSoup.

    Args:
        file: HTML file path or file-like object.

    Returns:
        List of Document objects with page_content and metadata.
    """
    from bs4 import BeautifulSoup
    from langchain.docstore.document import Document
    import bs4

    # Read the HTML content from the file or file-like object
    if isinstance(file, str):
        with open(file, 'r', encoding='utf-8') as f:
            html_content = f.read()
    else:
        # Assuming file is a file-like object
        html_content = file.read()

    # Parse the HTML content using BeautifulSoup
    soup = BeautifulSoup(html_content, 'html.parser')

    # Extract the header tags and their corresponding metadata keys
    headers_to_split_on = [tag[0] for tag in self.headers_to_split_on]
    header_mapping = dict(self.headers_to_split_on)

    documents = []

    # Find the body of the document
    body = soup.body if soup.body else soup

    # Find all header tags in the order they appear
    all_headers = body.find_all(headers_to_split_on)

    # If there's content before the first header, collect it
    first_header = all_headers[0] if all_headers else None
    if first_header:
        pre_header_content = ''
        for elem in first_header.find_all_previous():
            if isinstance(elem, bs4.Tag):
                text = elem.get_text(separator=' ', strip=True)
                if text:
                    pre_header_content = text + ' ' + pre_header_content
        if pre_header_content.strip():
            documents.append(Document(
                page_content=pre_header_content.strip(),
                metadata={}  # No metadata since there's no header
            ))
    else:
        # If no headers are found, return the whole content
        full_text = body.get_text(separator=' ', strip=True)
        if full_text.strip():
            documents.append(Document(
                page_content=full_text.strip(),
                metadata={}
            ))
        return documents

    # Process each header and its associated content
    for header in all_headers:
        current_metadata = {}
        header_name = header.name
        header_text = header.get_text(separator=' ', strip=True)
        current_metadata[header_mapping[header_name]] = header_text

        # Collect all sibling elements until the next header of the same or higher level
        content_elements = []
        for sibling in header.find_next_siblings():
            if sibling.name in headers_to_split_on:
                # Stop at the next header
                break
            if isinstance(sibling, bs4.Tag):
                content_elements.append(sibling)

        # Get the text content of the collected elements
        current_content = ''
        for elem in content_elements:
            text = elem.get_text(separator=' ', strip=True)
            if text:
                current_content += text + ' '

        # Create a Document if there is content
        if current_content.strip():
            documents.append(Document(
                page_content=current_content.strip(),
                metadata=current_metadata.copy()
            ))
        else:
            # If there's no content, but we have metadata, still create a Document
            documents.append(Document(
                page_content='',
                metadata=current_metadata.copy()
            ))

    return documents
```

---------

Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
2025-01-20 16:10:37 -05:00
Christophe Bornet
989eec4b7b core: Add ruff rule S101 (no assert) (#29267)
Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
2025-01-20 20:24:31 +00:00
Christophe Bornet
e5d62c6ce7 core: Add ruff rule W293 (whitespaces) (#29272) 2025-01-20 15:16:12 -05:00
Philippe PRADOS
4efc5093c1 community[minor]: Refactoring PyMuPDF parser, loader and add image blob parsers (#29063)
* Adds BlobParsers for images. These implementations can take an image
and produce one or more documents per image. This interface can be used
for exposing OCR capabilities.
* Update PyMuPDFParser and Loader to standardize metadata, handle
images, improve table extraction etc.

- **Twitter handle:** pprados

This is one part of a larger Pull Request (PR) that is too large to be
submitted all at once.
This specific part focuses to prepare the update of all parsers.

For more details, see [PR
28970](https://github.com/langchain-ai/langchain/pull/28970).

---------

Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
2025-01-20 15:15:43 -05:00
Syed Baqar Abbas
f175319303 [feat] Added backwards compatibility for OllamaEmbeddings initialization (migration from langchain_community.embeddings to langchain_ollama.embeddings (#29296)
- [feat] **Added backwards compatibility for OllamaEmbeddings
initialization (migration from `langchain_community.embeddings` to
`langchain_ollama.embeddings`**: "langchain_ollama"
- **Description:** Given that `OllamaEmbeddings` from
`langchain_community.embeddings` is deprecated, code is being shifted to
``langchain_ollama.embeddings`. However, this does not offer backward
compatibility of initializing the parameters and `OllamaEmbeddings`
object.
    - **Issue:** #29294 
    - **Dependencies:** None
    - **Twitter handle:** @BaqarAbbas2001


## Additional Information
Previously, `OllamaEmbeddings` from `langchain_community.embeddings`
used to support the following options:

e9abe583b2/libs/community/langchain_community/embeddings/ollama.py (L125-L139)

However, in the new package `from langchain_ollama import
OllamaEmbeddings`, there is no method to set these options. I have added
these parameters to resolve this issue.

This issue was also discussed in
https://github.com/langchain-ai/langchain/discussions/29113
2025-01-20 11:16:29 -05:00
CLOVA Studio 개발
7a95ffc775 community: fix some features on Naver ChatModel & embedding model 2 (#29243)
## Description
- Responding to `NCP API Key` changes.
- To fix `ChatClovaX` `astream` function to raise `SSEError` when an
error event occurs.
- To add `token length` and `ai_filter` to ChatClovaX's
`response_metadata`.
- To update document for apply NCP API Key changes.

cc. @efriis @vbarda
2025-01-20 11:01:03 -05:00
Sangyun_LEE
5d64597490 docs: fix broken Appearance of langchain_community/document_loaders/recursive_url_loader API Reference (#29305)
# PR mesesage
## Description
Fixed a broken Appearance of RecurisveUrlLoader API Reference.

### Before
<p align="center">
<img width="750" alt="image"
src="https://github.com/user-attachments/assets/f39df65d-b788-411d-88af-8bfa2607c00b"
/>
<img width="750" alt="image"
src="https://github.com/user-attachments/assets/b8a92b70-4548-4b4a-965f-026faeebd0ec"
/>
</p>

### After
<p align="center">
<img width="750" alt="image"
src="https://github.com/user-attachments/assets/8ea28146-de45-42e2-b346-3004ec4dfc55"
/>
<img width="750" alt="image"
src="https://github.com/user-attachments/assets/914c6966-4055-45d3-baeb-2d97eab06fe7"
/>
</p>

## Issue:
N/A
## Dependencies
None
## Twitter handle
N/A

# Add tests and docs
Not applicable; this change only affects documentation.

# Lint and test
Ran make format, make lint, and make test to ensure no issues.
2025-01-20 10:56:59 -05:00
Hemant Rawat
6c52378992 Add Google-style docstring linting and update pyproject.toml (#29303)
### Description:

This PR introduces Google-style docstring linting for the
ModelLaboratory class in libs/langchain/langchain/model_laboratory.py.
It also updates the pyproject.toml file to comply with the latest Ruff
configuration standards (deprecating top-level lint settings in favor of
lint).

### Changes include:
- [x] Added detailed Google-style docstrings to all methods in
ModelLaboratory.
- [x] Updated pyproject.toml to move select and pydocstyle settings
under the [tool.ruff.lint] section.
- [x] Ensured all files pass Ruff linting.

Issue:
Closes #25154

### Dependencies:
No additional dependencies are required for this change.

### Checklist
- [x] Files passes ruff linting.
- [x] Docstrings conform to the Google-style convention.
- [x] pyproject.toml updated to avoid deprecation warnings.
- [x] My PR is ready to review, please review.
2025-01-19 14:37:21 -05:00
Mohammad Mohtashim
b5fbebb3c8 (Community): Changing the BaseURL and Model for MiniMax (#29299)
- **Description:** Changed the Base Default Model and Base URL to
correct versions. Plus added a more explicit exception if user provides
an invalid API Key
- **Issue:** #29278
2025-01-19 14:15:02 -05:00
ccurme
c20f7418c7 openai[patch]: fix Azure LLM test (#29302)
The tokens I get are:
```
['', '\n\n', 'The', ' sun', ' was', ' setting', ' over', ' the', ' horizon', ',', ' casting', '']
```
so possibly an extra empty token is included in the output.

lmk @efriis if we should look into this further.
2025-01-19 17:25:42 +00:00
ccurme
6b249a0dc2 openai[patch]: release 0.3.1 (#29301) 2025-01-19 17:04:00 +00:00
ThomasSaulou
e9abe583b2 chatperplexity stream-citations in additional kwargs (#29273)
chatperplexity stream-citations in additional kwargs

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-18 22:31:10 +00:00
Farzad Sharif
8fad9214c7 docs: fix qa_per_user.ipynb (#29290)
# Description
The `config` option was not passed to `configurable_retriever.invoke()`.
Screenshot below. Fixed.
 
<img width="731" alt="Screenshot 2025-01-18 at 11 59 28 AM"
src="https://github.com/user-attachments/assets/21f30739-2abd-4150-b3ad-626ea9e3f96c"
/>
2025-01-18 16:24:31 -05:00
Vadim Rusin
2fb6fd7950 docs: fix broken link in JSONOutputParser reference (#29292)
### PR message:
- **Description:** Fixed a broken link in the documentation for the
`JSONOutputParser`. Updated the link to point to the correct reference:
  From:  

`https://python.langchain.com/api_reference/core/output_parsers/langchain_core.output_parsers.json.JSONOutputParser.html`
  To:  

`https://python.langchain.com/api_reference/core/output_parsers/langchain_core.output_parsers.json.JsonOutputParser.html`.
This ensures accurate navigation for users referring to the
`JsonOutputParser` documentation.
- **Issue:** N/A
- **Dependencies:** None
- **Twitter handle:** N/A

### Add tests and docs:
Not applicable; this change only affects documentation.

### Lint and test:
Ran `make format`, `make lint`, and `make test` to ensure no issues.
2025-01-18 16:17:34 -05:00
TheSongg
1cd4d8d101 [langchain_community.llms.xinference]: Rewrite _stream() method and support stream() method in xinference.py (#29259)
- [ ] **PR title**:[langchain_community.llms.xinference]: Rewrite
_stream() method and support stream() method in xinference.py

- [ ] **PR message**: Rewrite the _stream method so that the
chain.stream() can be used to return data streams.

       chain = prompt | llm
       chain.stream(input=user_input)


- [ ] **tests**: 
      from langchain_community.llms import Xinference
      from langchain.prompts import PromptTemplate

      llm = Xinference(
server_url="http://0.0.0.0:9997", # replace your xinference server url
model_uid={model_uid} # replace model_uid with the model UID return from
launching the model
          stream = True
       )
prompt = PromptTemplate(input=['country'], template="Q: where can we
visit in the capital of {country}? A:")
      chain = prompt | llm
      chain.stream(input={'country': 'France'})
2025-01-17 20:31:59 -05:00
Amaan
d4b9404fd6 docs: add langchain dappier tool integration notebook (#29265)
Add tools to interact with Dappier APIs with an example notebook.

For `DappierRealTimeSearchTool`, the tool can be invoked with:

```python
from langchain_dappier import DappierRealTimeSearchTool

tool = DappierRealTimeSearchTool()

tool.invoke({"query": "What happened at the last wimbledon"})
```

```
At the last Wimbledon in 2024, Carlos Alcaraz won the title by defeating Novak Djokovic. This victory marked Alcaraz's fourth Grand Slam title at just 21 years old! 🎉🏆🎾
```

For DappierAIRecommendationTool the tool can be invoked with:

```python
from langchain_dappier import DappierAIRecommendationTool

tool = DappierAIRecommendationTool(
    data_model_id="dm_01j0pb465keqmatq9k83dthx34",
    similarity_top_k=3,
    ref="sportsnaut.com",
    num_articles_ref=2,
    search_algorithm="most_recent",
)
```

```
[{"author": "Matt Weaver", "image_url": "https://images.dappier.com/dm_01j0pb465keqmatq9k83dthx34...", "pubdate": "Fri, 17 Jan 2025 08:04:03 +0000", "source_url": "https://sportsnaut.com/chili-bowl-thursday-bell-column/", "summary": "The article highlights the thrilling unpredictability... ", "title": "Thursday proves why every lap of Chili Bowl..."},
{"author": "Matt Higgins", "image_url": "https://images.dappier.com/dm_01j0pb465keqmatq9k83dthx34...", "pubdate": "Fri, 17 Jan 2025 02:48:42 +0000", "source_url": "https://sportsnaut.com/new-york-mets-news-pete-alonso...", "summary": "The New York Mets are likely parting ways with star...", "title": "MLB insiders reveal New York Mets’ last-ditch..."},
{"author": "Jim Cerny", "image_url": "https://images.dappier.com/dm_01j0pb465keqmatq9k83dthx34...", "pubdate": "Fri, 17 Jan 2025 05:10:39 +0000", "source_url": "https://www.foreverblueshirts.com/new-york-rangers-news...", "summary": "The New York Rangers achieved a thrilling 5-3 comeback... ", "title": "Rangers score 3 times in 3rd period for stirring 5-3..."}]
```

The integration package can be found over here -
https://github.com/DappierAI/langchain-dappier
2025-01-17 19:02:28 -05:00
ccurme
184ea8aeb2 anthropic[patch]: update tool choice type (#29276) 2025-01-17 15:26:33 -05:00
ccurme
ac52021097 anthropic[patch]: release 0.3.2 (#29275) 2025-01-17 19:48:31 +00:00
ccurme
c616b445f2 anthropic[patch]: support parallel_tool_calls (#29257)
Need to:
- Update docs
- Decide if this is an explicit kwarg of bind_tools
- Decide if this should be in standard test with flag for supporting
2025-01-17 19:41:41 +00:00
Erick Friis
628145b172 infra: fix api build (#29274) 2025-01-17 10:41:59 -08:00
Zapiron
97a5bc7fc7 docs: Fixed typos and improve metadata explanation (#29266)
Fix mini typos and made the explanation of metadata filtering clearer
2025-01-17 11:17:40 -05:00
Jun He
f0226135e5 docs: Remove redundant "%" (#29205)
Before this commit, the copied command can't be used directly.
2025-01-17 14:30:58 +00:00
Michael Chin
36ff83a0b5 docs: Message history for Neptune chains (#29260)
Expanded the Amazon Neptune documentation with new sections detailing
usage of chat message history with the
`create_neptune_opencypher_qa_chain` and
`create_neptune_sparql_qa_chain` functions.
2025-01-17 09:06:17 -05:00
ccurme
d5360b9bd6 core[patch]: release 0.3.30 (#29256) 2025-01-16 17:52:37 -05:00
Nuno Campos
595297e2e5 core: Add support for calls in get_function_nonlocals (#29255)
Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-16 14:43:42 -08:00
Luis Lopez
75663f2cae community: Add cost per 1K tokens for fine-tuned model cached input (#29248)
### Description

- Since there is no cost per 1k input tokens for a fine-tuned cached
version of `gpt-4o-mini-2024-07-18` is not available when using the
`OpenAICallbackHandler`, it raises an error when trying to make calls
with such model.
- To add the price in the `MODEL_COST_PER_1K_TOKENS` dictionary

cc. @efriis
2025-01-16 15:19:26 -05:00
Junon
667d2a57fd add mode arg to OBSFileLoader.load() method (#29246)
- **Description:** add mode arg to OBSFileLoader.load() method
  - **Issue:** #29245
  - **Dependencies:** no dependencies required for this change

---------

Co-authored-by: Junon_Gz <junon_gz@qq.com>
2025-01-16 11:09:04 -05:00
c6388d736b docs: fix typo in tool_results_pass_to_model.ipynb (how-to) (#29252)
Description: fix typo. change word from `cals` to `calls`
Issue: closes #29251 
Dependencies: None
Twitter handle: None
2025-01-16 11:05:28 -05:00
Erick Friis
4bc6cb759f docs: update recommended code interpreters (#29236)
unstable :(
2025-01-15 16:03:26 -08:00
Erick Friis
5eb4dc5e06 standard-tests: double messages test (#29237) 2025-01-15 15:14:29 -08:00
Nithish Raghunandanan
1051fa5729 couchbase: Migrate couchbase partner package to different repo (#29239)
**Description:** Migrate the couchbase partner package to
[Couchbase-Ecosystem](https://github.com/Couchbase-Ecosystem/langchain-couchbase)
org
2025-01-15 12:37:27 -08:00
Nadeem Sajjad
eaf2fb287f community(pypdfloader): added page_label in metadata for pypdf loader (#29225)
# Description

## Summary
This PR adds support for handling multi-labeled page numbers in the
**PyPDFLoader**. Some PDFs use complex page numbering systems where the
actual content may begin after multiple introductory pages. The
page_label field helps accurately reflect the document’s page structure,
making it easier to handle such cases during document parsing.

## Motivation
This feature improves document parsing accuracy by allowing users to
access the actual page labels instead of relying only on the physical
page numbers. This is particularly useful for documents where the first
few pages have roman numerals or other non-standard page labels.

## Use Case
This feature is especially useful for **Retrieval-Augmented Generation**
(RAG) systems where users may reference page numbers when asking
questions. Some PDFs have both labeled page numbers (like roman numerals
for introductory sections) and index-based page numbers.

For example, a user might ask:

	"What is mentioned on page 5?"

The system can now check both:
	•	**Index-based page number** (page)
	•	**Labeled page number** (page_label)

This dual-check helps improve retrieval accuracy. Additionally, the
results can be validated with an **agent or tool** to ensure the
retrieved pages match the user’s query contextually.

## Code Changes

- Added a page_label field to the metadata of the Document class in
**PyPDFLoader**.
- Implemented support for retrieving page_label from the
pdf_reader.page_labels.
- Created a test case (test_pypdf_loader_with_multi_label_page_numbers)
with a sample PDF containing multi-labeled pages
(geotopo-komprimiert.pdf) [[Source of
pdf](https://github.com/py-pdf/sample-files/blob/main/009-pdflatex-geotopo/GeoTopo-komprimiert.pdf)].
- Updated existing tests to ensure compatibility and verify page_label
extraction.

## Tests Added

- Added a new test case for a PDF with multi-labeled pages.
- Verified both page and page_label metadata fields are correctly
extracted.

## Screenshots

<img width="549" alt="image"
src="https://github.com/user-attachments/assets/65db9f5c-032e-4592-926f-824777c28f33"
/>
2025-01-15 14:18:07 -05:00
Mehdi
1a38948ee3 Mehdi zare/fmp data doc (#29219)
Title: community: add Financial Modeling Prep (FMP) API integration

Description: Adding LangChain integration for Financial Modeling Prep
(FMP) API to enable semantic search and structured tool creation for
financial data endpoints. This integration provides semantic endpoint
search using vector stores and automatic tool creation with proper
typing and error handling. Users can discover relevant financial
endpoints using natural language queries and get properly typed
LangChain tools for discovered endpoints.

Issue: N/A

Dependencies:

fmp-data>=0.3.1
langchain-core>=0.1.0
faiss-cpu
tiktoken
Twitter handle: @mehdizarem

Unit tests and example notebook have been added:

Tests are in tests/integration_tests/est_tools.py and
tests/unit_tests/test_tools.py
Example notebook is in docs/tools.ipynb
All format, lint and test checks pass:

pytest
mypy .
Dependencies are imported within functions and not added to
pyproject.toml. The changes are backwards compatible and only affect the
community package.

---------

Co-authored-by: mehdizare <mehdizare@users.noreply.github.com>
Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-15 15:31:01 +00:00
Mohammad Mohtashim
288613d361 (text-splitters): Small Fix in _process_html for HTMLSemanticPreservingSplitter to properly extract the metadata. (#29215)
- **Description:** Include `main` in the list of elements whose child
elements needs to be processed for splitting the HTML.
- **Issue:** #29184
2025-01-15 10:18:06 -05:00
TheSongg
4867fe7ac8 [langchain_community.llms.xinference]: fix error in xinference.py (#29216)
- [ ] **PR title**: [langchain_community.llms.xinference]: fix error in
xinference.py

- [ ] **PR message**:
- The old code raised an ValidationError:
pydantic_core._pydantic_core.ValidationError: 1 validation error for
Xinference when import Xinference from xinference.py. This issue has
been resolved by adjusting it's type and default value.

File "/media/vdc/python/lib/python3.10/site-packages/pydantic/main.py",
line 212, in __init__
validated_self = self.__pydantic_validator__.validate_python(data,
self_instance=self)
pydantic_core._pydantic_core.ValidationError: 1 validation error for
Xinference
        client
Field required [type=missing, input_value={'server_url':
'http://10...t4', 'model_kwargs': {}}, input_type=dict]
For further information visit https://errors.pydantic.dev/2.9/v/missing

- [ ] **tests**:

       from langchain_community.llms import Xinference
       llm = Xinference(
server_url="http://0.0.0.0:9997", # replace your xinference server url
model_uid={model_uid} # replace model_uid with the model UID return from
launching the model
         )
2025-01-15 10:11:26 -05:00
Kostadin Devedzhiev
bea5798b04 docs: Fix typo in retrievers documentation: 'An vectorstore' -> 'A vectorstore' (#29221)
- [x] **PR title**: "docs: Fix typo in documentation"

- [x] **PR message**:
- **Description:** Fixed a typo in the documentation, changing "An
vectorstore" to "A vector store" for grammatical accuracy.
    - **Issue:** N/A (no issue filed for this typo fix)
    - **Dependencies:** None
    - **Twitter handle:** N/A


- [x] **Add tests and docs**: This is a minor documentation fix that
doesn't require additional tests or example notebooks.


- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/
2025-01-15 10:10:14 -05:00
Sohaib Athar
d1cf10373b Update elasticsearch_retriever.ipynb (#29223)
docs: fix typo (connection)
- **Twitter handle:** @ReallyVirtual
2025-01-15 10:09:51 -05:00
Syed Baqar Abbas
4278046329 [fix] Convert table names to list for compatibility in SQLDatabase (#29229)
- [langchain_community.utilities.SQLDatabase] **[fix] Convert table
names to list for compatibility in SQLDatabase**:
  - The issue #29227 is being fixed here
  - The "package" modified is community
  - The issue lied in this block of code:

44b41b699c/libs/community/langchain_community/utilities/sql_database.py (L72-L77)

- [langchain_community.utilities.SQLDatabase] **[fix] Convert table
names to list for compatibility in SQLDatabase**:
- **Description:** When the SQLDatabase is initialized, it runs a code
`self._inspector.get_table_names(schema=schema)` which expects an output
of list. However, with some connectors (such as snowflake) the data type
returned could be another iterable. This results in a type error when
concatenating the table_names to view_names. I have added explicit type
casting to prevent this.
    - **Issue:** The issue #29227 is being fixed here
    - **Dependencies:** None
    - **Twitter handle:** @BaqarAbbas2001

## Additional Information
When the following method is called for a Snowflake database:

44b41b699c/libs/community/langchain_community/utilities/sql_database.py (L75)

Snowflake under the hood calls:
```python
from snowflake.sqlalchemy.snowdialect import SnowflakeDialect
SnowflakeDialect.get_table_names
```

This method returns a `dict_keys()` object which is incompatible to
concatenate with a list and results in a `TypeError`

### Relevant Library Versions
- **snowflake-sqlalchemy**: 1.7.2  
- **snowflake-connector-python**: 3.12.4  
- **sqlalchemy**: 2.0.20  
- **langchain_community**: 0.3.14
2025-01-15 10:00:03 -05:00
Jin Hyung Ahn
05554265b4 community: Fix ConfluenceLoader load() failure caused by deleted pages (#29232)
## Description
This PR modifies the is_public_page function in ConfluenceLoader to
prevent exceptions caused by deleted pages during the execution of
ConfluenceLoader.process_pages().


**Example scenario:**
Consider the following usage of ConfluenceLoader:
```python
import os
from langchain_community.document_loaders import ConfluenceLoader

loader = ConfluenceLoader(
        url=os.getenv("BASE_URL"),
        token=os.getenv("TOKEN"),
        max_pages=1000,
        cql=f'type=page and lastmodified >= "2020-01-01 00:00"',
        include_restricted_content=False,
)

# Raised Exception : HTTPError: Outdated version/old_draft/trashed? Cannot find content Please provide valid ContentId.
documents = loader.load()
```

If a deleted page exists within the query result, the is_public_page
function would previously raise an exception when calling
get_all_restrictions_for_content, causing the loader.load() process to
fail for all pages.



By adding a pre-check for the page's "current" status, unnecessary API
calls to get_all_restrictions_for_content for non-current pages are
avoided.


This fix ensures that such pages are skipped without affecting the rest
of the loading process.





## Issue
N/A (No specific issue number)

## Dependencies
No new dependencies are introduced with this change.

## Twitter handle
[@zenoengine](https://x.com/zenoengine)
2025-01-15 09:56:23 -05:00
Mohammad Mohtashim
21eb39dff0 [Community]: AzureOpenAIWhisperParser Authenication Fix (#29135)
- **Description:** `AzureOpenAIWhisperParser` authentication fix as
stated in the issue.
- **Issue:** #29133
2025-01-15 09:44:53 -05:00
Erick Friis
44b41b699c docs: api docs build folder prep update (#29220) 2025-01-15 03:52:00 +00:00
Erick Friis
b05543c69b packages: disable mongodb for api docs (#29218) 2025-01-15 02:23:01 +00:00
Erick Friis
30badd7a32 packages: update mongodb folder (#29217) 2025-01-15 02:01:06 +00:00
pm390
76172511fd community: Additional parameters for OpenAIAssistantV2Runnable (#29207)
**Description:** Added Additional parameters that could be useful for
usage of OpenAIAssistantV2Runnable.

This change is thought to allow langchain users to set parameters that
cannot be set using assistants UI
(max_completion_tokens,max_prompt_tokens,parallel_tool_calls) and
parameters that could be useful for experimenting like top_p and
temperature.

This PR originated from the need of using parallel_tool_calls in
langchain, this parameter is very important in openAI assistants because
without this parameter set to False strict mode is not respected by
OpenAI Assistants
(https://platform.openai.com/docs/guides/function-calling#parallel-function-calling).

> Note: Currently, if the model calls multiple functions in one turn
then strict mode will be disabled for those calls.

**Issue:** None
**Dependencies:** openai
2025-01-14 15:53:37 -05:00
Guy Korland
efadad6067 Add Link to FalkorDB Memory example (#29204)
- **Description:** Add Link to FalkorDB Memory example
2025-01-14 13:27:52 -05:00
Bagatur
4ab04ad6be docs: oai api ref nit (#29210) 2025-01-14 17:55:16 +00:00
Michael Chin
d9b856abad community: Deprecate Amazon Neptune resources in langchain-community (#29191)
Related: https://github.com/langchain-ai/langchain-aws/pull/322

The legacy `NeptuneOpenCypherQAChain` and `NeptuneSparqlQAChain` classes
are being replaced by the new LCEL format chains
`create_neptune_opencypher_qa_chain` and
`create_neptune_sparql_qa_chain`, respectively, in the `langchain_aws`
package.

This PR adds deprecation warnings to all Neptune classes and functions
that have been migrated to `langchain_aws`. All relevant documentation
has also been updated to replace `langchain_community` usage with the
new `langchain_aws` implementations.

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-14 10:23:34 -05:00
Erick Friis
c55af44711 anthropic: pydantic mypy plugin (#29144) 2025-01-13 15:32:40 -08:00
Erick Friis
cdf3a17e55 docs: fix httpx conflicts with overrides in docs build (#29180) 2025-01-13 21:25:00 +00:00
ccurme
1bf6576709 cli[patch]: fix anchor links in templates (#29178)
These are outdated and can break docs builds.
2025-01-13 18:28:18 +00:00
Christopher Varjas
e156b372fb langchain: support api key argument with OpenAI moderation chain (#29140)
**Description:** Makes it possible to instantiate
`OpenAIModerationChain` with an `openai_api_key` argument only and no
`OPENAI_API_KEY` environment variable defined.

**Issue:** https://github.com/langchain-ai/langchain/issues/25176

**Dependencies:** `openai`

---------

Co-authored-by: ccurme <chester.curme@gmail.com>
2025-01-13 11:00:02 -05:00
Nikhil Shahi
335ca3a606 docs: add HyperbrowserLoader docs (#29143)
### Description
This PR adds docs for the
[langchain-hyperbrowser](https://pypi.org/project/langchain-hyperbrowser/)
package. It includes a document loader that uses Hyperbrowser to scrape
or crawl any urls and return formatted markdown or html content as well
as relevant metadata.
[Hyperbrowser](https://hyperbrowser.ai) is a platform for running and
scaling headless browsers. It lets you launch and manage browser
sessions at scale and provides easy to use solutions for any webscraping
needs, such as scraping a single page or crawling an entire site.

### Issue
None

### Dependencies
None

### Twitter Handle
`@hyperbrowser`
2025-01-13 10:45:39 -05:00
Zhengren Wang
4c0217681a cookbook: fix typo in cookbook/mongodb-langchain-cache-memory.ipynb (#29149)
Description: fix "enviornment" into "environment". 
Issue: Typo
Dependencies: None
Twitter handle: zrwang01
2025-01-13 10:35:34 -05:00
Gabe Cornejo
e64bfb537f docs: Fix old link to Unstructured package in document_loader_markdown.ipynb (#29175)
Fixed a broken link in `document_loader_markdown.ipynb` to point to the
updated documentation page for the Unstructured package.
Issue: N/A
Dependencies: None
2025-01-13 15:26:01 +00:00
Tymon Żarski
689592f9bb community: Fix rank-llm import paths for new 0.20.3 version (#29154)
# **PR title**: "community: Fix rank-llm import paths for new 0.20.3
version"
- The "community" package is being modified to handle updated import
paths for the new `rank-llm` version.

---

## Description
This PR updates the import paths for the `rank-llm` package to account
for changes introduced in version `0.20.3`. The changes ensure
compatibility with both pre- and post-revamp versions of `rank-llm`,
specifically version `0.12.8`. Conditional imports are introduced based
on the detected version of `rank-llm` to handle different path
structures for `VicunaReranker`, `ZephyrReranker`, and `SafeOpenai`.

## Issue
RankLLMRerank usage throws an error when used GPT (not only) when
rank-llm version is > 0.12.8 - #29156

## Dependencies
This change relies on the `packaging` and `pkg_resources` libraries to
handle version checks.

## Twitter handle
@tymzar
2025-01-13 10:22:14 -05:00
Andrew
0e3115330d Add additional_instructions on openai assistan runs create. (#29164)
- **Description**: In the functions `_create_run` and `_acreate_run`,
the parameters passed to the creation of
`openai.resources.beta.threads.runs` were limited.

  Source: 
  ```
  def _create_run(self, input: dict) -> Any:
        params = {
            k: v
            for k, v in input.items()
            if k in ("instructions", "model", "tools", "run_metadata")
        }
        return self.client.beta.threads.runs.create(
            input["thread_id"],
            assistant_id=self.assistant_id,
            **params,
        )
  ```
- OpenAI Documentation
([createRun](https://platform.openai.com/docs/api-reference/runs/createRun))

- Full list of parameters `openai.resources.beta.threads.runs` ([source
code](https://github.com/openai/openai-python/blob/main/src/openai/resources/beta/threads/runs/runs.py#L91))

 
- **Issue:** Fix #17574 



- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Co-authored-by: ccurme <chester.curme@gmail.com>
2025-01-13 10:11:47 -05:00
ccurme
e4ceafa1c8 langchain[patch]: update extended tests for compatibility with langchain-openai==0.3 (#29174) 2025-01-13 15:04:22 +00:00
Syed Muneeb Abbas
8ef7f3eacc Fixed the import error in OpenAIWhisperParserLocal and resolved the L… (#29168)
…angChain parser issue.

Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-13 09:47:31 -05:00
Priyansh Agrawal
c115c09b6d community: add missing format specifier in error log in CubeSemanticLoader (#29172)
Thank you for contributing to LangChain!

- [x] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [x] **PR message**
- **Description:** Add a missing format specifier in an an error log in
`langchain_community.document_loaders.CubeSemanticLoader`
- **Issue:** raises `TypeError: not all arguments converted during
string formatting`


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-13 09:32:57 -05:00
ThomasSaulou
349b5c91c2 fix chatperplexity: remove 'stream' from params in _stream method (#29173)
quick fix chatperplexity: remove 'stream' from params in _stream method
2025-01-13 09:31:37 -05:00
LIU Yuwei
f980144e9c community: add init for unstructured file loader (#29101)
## Description
Add `__init__` for unstructured loader of
epub/image/markdown/pdf/ppt/word to restrict the input type to `str` or
`Path`.
In the
[signature](https://python.langchain.com/api_reference/community/document_loaders/langchain_community.document_loaders.markdown.UnstructuredMarkdownLoader.html)
these unstructured loaders receive `file_path: str | List[str] | Path |
List[Path]`, but actually they only receive `str` or `Path`.

## Issue
None

## Dependencies
No changes.
2025-01-13 09:26:00 -05:00
Erick Friis
bbc3e3b2cf openai: disable streaming for o1 by default (#29147)
Currently 400s
https://community.openai.com/t/streaming-support-for-o1-o1-2024-12-17-resulting-in-400-unsupported-value/1085043

o1-mini and o1-preview stream fine
2025-01-11 02:24:11 +00:00
Isaac Francisco
62074bac60 replace all LANGCHAIN_ flags with LANGSMITH_ flags (#29120) 2025-01-11 01:24:40 +00:00
Bagatur
5c2fbb5b86 docs: Update openai README.md (#29146) 2025-01-10 17:24:16 -08:00
Erick Friis
0a54aedb85 anthropic: pdf integration test (#29142) 2025-01-10 21:56:31 +00:00
ccurme
8de8519daf tests[patch]: release 0.3.8 (#29141) 2025-01-10 21:53:41 +00:00
Jiang
7d3fb21807 Add lindorm as new integration (#29123)
Misoperation caused the pr close: [origin pr
link](https://github.com/langchain-ai/langchain/pull/29085)

---------

Co-authored-by: jiangzhijie <jiangzhijie.jzj@alibaba-inc.com>
2025-01-10 16:30:37 -05:00
Zapiron
7594ad694f docs: update the correct learning objective YAML instead of XML (#29131)
Update the correct learning objective for the how-to page by changing
XML to YAML which is taught.

Co-authored-by: ccurme <chester.curme@gmail.com>
2025-01-10 16:13:13 -05:00
Mateusz Szewczyk
b1d3e25eb6 docs: Update IBM WatsonxRerank documentation (#29138)
Thank you for contributing to LangChain!

Update presented model in `WatsonxRerank` documentation.

- [x] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/
2025-01-10 15:07:29 -05:00
ccurme
4819b500e8 pinecone[patch]: release 0.2.2 (#29139) 2025-01-10 14:59:57 -05:00
Ashvin
46fd09ffeb partner: Update aiohttp in langchain pinecone. (#28863)
- **partner**: "Update Aiohttp for resolving vulnerability issue"
    
- **Description:** I have updated the upper limit of aiohttp from `3.10`
to `3.10.5` in the pyproject.toml file of langchain-pinecone. Hopefully
this will resolve #28771 . Please review this as I'm quite unsure.

---------

Co-authored-by: = <=>
Co-authored-by: Chester Curme <chester.curme@gmail.com>
2025-01-10 14:54:52 -05:00
ccurme
df5ec45b32 docs[patch]: update docs for langchain-openai==0.3 (#29119)
Update model for one notebook that specified `gpt-4`.

Otherwise just updating cassettes.

---------

Co-authored-by: Jacob Lee <jacoblee93@gmail.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
2025-01-10 13:29:31 -05:00
ccurme
f3d370753f xai[minor]: release 0.2 (#29132)
Update `langchain-openai` to 0.3. See [release
notes](https://github.com/langchain-ai/langchain/releases/tag/langchain-openai%3D%3D0.3.0)
for details. Should only impact default values of `temperature`, `n`,
and `max_retries`.
2025-01-10 11:47:27 -05:00
ccurme
6e63ccba84 openai[minor]: release 0.3 (#29100)
## Goal

Solve the following problems with `langchain-openai`:

- Structured output with `o1` [breaks out of the
box](https://langchain.slack.com/archives/C050X0VTN56/p1735232400232099).
- `with_structured_output` by default does not use OpenAI’s [structured
output
feature](https://platform.openai.com/docs/guides/structured-outputs).
- We override API defaults for temperature and other parameters.

## Breaking changes:

- Default method for structured output is changing to OpenAI’s dedicated
[structured output
feature](https://platform.openai.com/docs/guides/structured-outputs).
For schemas specified via TypedDict or JSON schema, strict schema
validation is disabled by default but can be enabled by specifying
`strict=True`.
- To recover previous default, pass `method="function_calling"` into
`with_structured_output`.
- Models that don’t support `method="json_schema"` (e.g., `gpt-4` and
`gpt-3.5-turbo`, currently the default model for ChatOpenAI) will raise
an error unless `method` is explicitly specified.
- To recover previous default, pass `method="function_calling"` into
`with_structured_output`.
- Schemas specified via Pydantic `BaseModel` that have fields with
non-null defaults or metadata (like min/max constraints) will raise an
error.
- To recover previous default, pass `method="function_calling"` into
`with_structured_output`.
- `strict` now defaults to False for `method="json_schema"` when schemas
are specified via TypedDict or JSON schema.
- To recover previous behavior, use `with_structured_output(schema,
strict=True)`
- Schemas specified via Pydantic V1 will raise a warning (and use
`method="function_calling"`) unless `method` is explicitly specified.
- To remove the warning, pass `method="function_calling"` into
`with_structured_output`.
- Streaming with default structured output method / Pydantic schema no
longer generates intermediate streamed chunks.
- To recover previous behavior, pass `method="function_calling"` into
`with_structured_output`.
- We no longer override default temperature (was 0.7 in LangChain, now
will follow OpenAI, currently 1.0).
- To recover previous behavior, initialize `ChatOpenAI` or
`AzureChatOpenAI` with `temperature=0.7`.
- Note: conceptually there is a difference between forcing a tool call
and forcing a response format. Tool calls may have more concise
arguments vs. generating content adhering to a schema. Prompts may need
to be adjusted to recover desired behavior.

---------

Co-authored-by: Jacob Lee <jacoblee93@gmail.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
2025-01-10 10:50:32 -05:00
ccurme
facfd42768 docs[patch]: fix links in partner package table (#29112)
Integrations in external repos are not built into [API
ref](https://python.langchain.com/api_reference/), so currently [the
table](https://python.langchain.com/docs/integrations/providers/#integration-packages)
includes broken links. Here we update the links for this type of package
to point to PyPi.
2025-01-09 10:37:15 -05:00
ccurme
815bfa1913 openai[patch]: support streaming with json_schema response format (#29044)
- Stream JSON string content. Final chunk includes parsed representation
(following OpenAI
[docs](https://platform.openai.com/docs/guides/structured-outputs#streaming)).
- Mildly (?) breaking change: if you were using streaming with
`response_format` before, usage metadata will disappear unless you set
`stream_usage=True`.

## Response format

Before:

![Screenshot 2025-01-06 at 11 59
01 AM](https://github.com/user-attachments/assets/e54753f7-47d5-421d-b8f3-172f32b3364d)


After:

![Screenshot 2025-01-06 at 11 58
13 AM](https://github.com/user-attachments/assets/34882c6c-2284-45b4-92f7-5b5b69896903)


## with_structured_output

For pydantic output, behavior of `with_structured_output` is unchanged
(except for warning disappearing), because we pluck the parsed
representation straight from OpenAI, and OpenAI doesn't return it until
the stream is completed. Open to alternatives (e.g., parsing from
content or intermediate dict chunks generated by OpenAI).

Before:

![Screenshot 2025-01-06 at 12 38
11 PM](https://github.com/user-attachments/assets/913d320d-f49e-4cbb-a800-b394ae817fd1)

After:

![Screenshot 2025-01-06 at 12 38
58 PM](https://github.com/user-attachments/assets/f7a45dd6-d886-48a6-8d76-d0e21ca767c6)
2025-01-09 10:32:30 -05:00
Panos Vagenas
858f655a25 docs: add Docling loader docs (#29104)
### Description
This adds the docs for the Docling document loader.
[Docling](https://github.com/DS4SD/docling) parses PDF, DOCX, PPTX,
HTML, and other formats into a rich unified representation including
document layout, tables etc., making them ready for generative AI
workflows like RAG.

Some references:
- https://research.ibm.com/blog/docling-generative-AI
-
https://www.redhat.com/en/blog/docling-missing-document-processing-companion-generative-ai
- [Docling Technical Report](https://arxiv.org/abs/2408.09869)

The introduced `DoclingLoader` enables users to:
- use various document types in their LLM applications with ease and
speed, and
- leverage Docling's rich representation for advanced, document-native
grounding.

### Issue
Replacing PR #27987 as discussed with @efriis
[here](https://github.com/langchain-ai/langchain/pull/27987#issuecomment-2489354930).

### Dependencies
None

---------

Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com>
2025-01-09 10:15:35 -05:00
fzowl
cc55e32924 docs: Adding voyage-3-large to the .ipynb file (#29098)
**Description:**
Adding voyage-3-large model to the .ipynb file (its just extending a
list, so not even a code change)


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-09 10:01:55 -05:00
Tacobaco
287abd9e0d Update word in databricks_vector_search.ipynb from "cna" to "can" (#29109)
fix to word "can"

Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-09 10:01:00 -05:00
Mohammad Mohtashim
a46c2bce51 [Community]: Small Fix in google_firestore memory notebook (#29107)
- **Description:** Just a small fix in google_firestore memory notebook
- **Issue:** @29095
2025-01-09 10:00:41 -05:00
Joshua Campbell
00dcc44739 Langchain_community: Fix issue with missing backticks in arango client (#29110)
- **Description:** Adds backticks to generate_schema function in the
arango graph client
- **Issue:** We experienced an issue with the generate schema function
when talking to our arango database where these backticks were missing
    - **Dependencies:** none
    - **Twitter handle:** @anangelofgrace
2025-01-09 10:00:10 -05:00
Inah Jeon
fa6f08faa1 docs: Add upstage document parse loader to pdf loaders (#29099)
Add upstage document parse loader to pdf loaders

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-08 15:32:39 -05:00
LIU Yuwei
2b09f798e1 community: add init for UnstructuredHTMLLoader to solve pathlib paths (#29091)
## Description
Add `__init__` for `UnstructuredHTMLLoader` to restrict the input type
to `str` or `Path`, and transfer the `self.file_path` to `str` just like
`UnstructuredXMLLoader` does.

## Issue
Fix #29090 

## Dependencies
No changes.
2025-01-08 10:19:27 -05:00
Jin Hyung Ahn
c8ca1cd42f community: fix "confluence-loader" enable include_labels for documents loaded via CQL (#29089)
## Description
This PR enables label inclusion for documents loaded via CQL in the
confluence-loader.

- Updated _lazy_load to pass the include_labels parameter instead of
False in process_pages calls for documents loaded via CQL.
- Ensured that labels can now be fetched and added to the metadata for
documents queried with cql.

## Related Modification History
This PR builds on the previous functionality introduced in
[#28259](https://github.com/langchain-ai/langchain/pull/28259), which
added support for including labels with the include_labels option.
However, this functionality did not work as expected for CQL queries,
and this PR fixes that issue.

If the False handling was intentional due to another issue, please let
me know. I have verified with our Confluence instance that this change
allows labels to be correctly fetched for documents loaded via CQL.

## Issue
Fixes #29088


## Dependencies
No changes.

## Twitter Handle
[@zenoengine](https://x.com/zenoengine)
2025-01-08 10:16:39 -05:00
Inah Jeon
9d290abccd partner: Update Upstage Model Names and Remove Deprecated Model (#29093)
This PR updates model names in the upstage library to reflect the latest
naming conventions and removes deprecated models.

Changes:

Renamed Models:
- `solar-1-mini-chat` -> `solar-mini`
- `solar-1-mini-embedding-query` -> `embedding-query`

Removed Deprecated Models:
- `layout-analysis` (replaced to `document-parse`)

Reference:
- https://console.upstage.ai/docs/getting-started/overview
-
https://github.com/langchain-ai/langchain-upstage/releases/tag/libs%2Fupstage%2Fv0.5.0

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-08 10:13:22 -05:00
Zapiron
9f5fa50bbf docs: Remove additional ` in heading (#29096)
Remove the additional ` in the pipe operator heading
2025-01-08 10:11:30 -05:00
Prashanth Rao
b1dafaef9b Kùzu package integration docs (#29076)
## Langchain Kùzu

### Description
 
This PR adds docs for the `langchain-kuzu` package [on
PyPI](https://pypi.org/project/langchain-kuzu/) that was recently
published, allowing Kùzu users to more easily use and work with
LangChain QA chains. The package will also make it easier for the Kùzu
team to continue supporting and updating the integration over future
releases.

### Twitter Handle

Please tag [@kuzudb](https://x.com/kuzudb) on Twitter once this PR is
merged, so LangChain users can be notified!

---------

Co-authored-by: Erick Friis <erickfriis@gmail.com>
2025-01-08 01:14:00 +00:00
Erick Friis
cc0f81f40f partners/groq: release 0.2.3 (#29081) 2025-01-07 23:36:51 +00:00
Erick Friis
fcc9cdd100 multiple: disable socket for unit tests (#29080) 2025-01-07 15:31:50 -08:00
Erick Friis
539ebd5431 groq: user agent (#29079) 2025-01-07 23:21:57 +00:00
Erick Friis
c5bee0a544 pinecone: bump core version (#29077) 2025-01-07 20:23:33 +00:00
Cory Waddingham
ce9e9f9314 pinecone: Review pinecone tests (#29073)
Title: langchain-pinecone: improve test structure and async handling

Description: This PR improves the test infrastructure for the
langchain-pinecone package by:
1. Implementing LangChain's standard test patterns for embeddings
2. Adding comprehensive configuration testing
3. Improving async test coverage
4. Fixing integration test issues with namespaces and async markers

The changes make the tests more robust, maintainable, and aligned with
LangChain's testing standards while ensuring proper async behavior in
the embeddings implementation.

Key improvements:
- Added standard EmbeddingsTests implementation
- Split custom configuration tests into a separate test class
- Added proper async test coverage with pytest-asyncio
- Fixed namespace handling in vector store integration tests
- Improved test organization and documentation

Dependencies: None (uses existing test dependencies)

Tests and Documentation:
-  Added standard test implementation following LangChain's patterns
-  Added comprehensive unit tests for configuration and async behavior
-  All tests passing locally
- No documentation changes needed (internal test improvements only)

Twitter handle: N/A

---------

Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-07 11:46:30 -08:00
ccurme
d9c51b71c4 infra[patch]: drop prompty from core dependents (#29068) 2025-01-07 11:01:29 -05:00
Philippe PRADOS
2921597c71 community[patch]: Refactoring PDF loaders: 01 prepare (#29062)
- **Refactoring PDF loaders step 1**: "community: Refactoring PDF
loaders to standardize approaches"

- **Description:** Declare CloudBlobLoader in __init__.py. file_path is
Union[str, PurePath] anywhere
- **Twitter handle:** pprados

This is one part of a larger Pull Request (PR) that is too large to be
submitted all at once.
This specific part focuses to prepare the update of all parsers.

For more details, see [PR
28970](https://github.com/langchain-ai/langchain/pull/28970).

@eyurtsev it's the start of a PR series.
2025-01-07 11:00:04 -05:00
lspataroG
a49448a7c9 Add Google Vertex AI Vector Search Hybrid Search Documentation (#29064)
Add examples in the documentation to use hybrid search in Vertex AI
[Vector
Search](https://github.com/langchain-ai/langchain-google/pull/628)
2025-01-07 10:29:03 -05:00
Keiichi Hirobe
0d226de25c [docs] Update indexing.ipynb (#29055)
According to https://github.com/langchain-ai/langchain/pull/21127, now
`AzureSearch` should be compatible with LangChain indexer.
2025-01-07 10:03:32 -05:00
ccurme
55677e31f7 text-splitters[patch]: release 0.3.5 (#29054)
Resolves https://github.com/langchain-ai/langchain/issues/29053
2025-01-07 09:48:26 -05:00
Erick Friis
187131c55c Revert "integrations[patch]: remove non-required chat param defaults" (#29048)
Reverts langchain-ai/langchain#26730

discuss best way to release default changes (esp openai temperature)
2025-01-06 14:45:34 -08:00
Bagatur
3d7ae8b5d2 integrations[patch]: remove non-required chat param defaults (#26730)
anthropic:
  - max_retries

openai:
  - n
  - temperature
  - max_retries

fireworks
  - temperature

groq
  - n
  - max_retries
  - temperature

mistral
  - max_retries
  - timeout
  - max_concurrent_requests
  - temperature
  - top_p
  - safe_mode

---------

Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-06 22:26:22 +00:00
UV
b9db8e9921 DOC: Improve human input prompt in FewShotChatMessagePromptTemplate example (#29023)
Fixes #29010 

This PR updates the example for FewShotChatMessagePromptTemplate by
modifying the human input prompt to include a more descriptive and
user-friendly question format ('What is {input}?') instead of just
'{input}'. This change enhances clarity and usability in the
documentation example.

Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-06 12:29:15 -08:00
ccurme
1f78d4faf4 voyageai[patch]: release 0.1.4 (#29046) 2025-01-06 20:20:19 +00:00
Eugene Evstafiev
6a152ce245 docs: add langchain-pull-md Markdown loader (#29024)
- [x] **PR title**: "docs: add langchain-pull-md Markdown loader"

- [x] **PR message**: 
- **Description:** This PR introduces the `langchain-pull-md` package to
the LangChain community. It includes a new document loader that utilizes
the pull.md service to convert URLs into Markdown format, particularly
useful for handling web pages rendered with JavaScript frameworks like
React, Angular, or Vue.js. This loader helps in efficient and reliable
Markdown conversion directly from URLs without local rendering, reducing
server load.
    - **Issue:** NA
    - **Dependencies:** requests >=2.25.1
    - **Twitter handle:** https://x.com/eugeneevstafev?s=21

- [x] **Add tests and docs**: 
1. Added unit tests to verify URL checking and conversion
functionalities.
2. Created a comprehensive example notebook detailing the usage of the
new loader.

- [x] **Lint and test**: 
- Completed local testing using `make format`, `make lint`, and `make
test` commands as per the LangChain contribution guidelines.


**Related Links:**
- [Package Repository](https://github.com/chigwell/langchain-pull-md)
- [PyPI Package](https://pypi.org/project/langchain-pull-md/)

---------

Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-06 19:32:43 +00:00
Ashvin
20a715a103 community: Fix redundancy in code. (#29022)
In my previous PR (#28953), I added an unwanted condition for validating
the Azure ML Endpoint. In this PR, I have rectified the issue.
2025-01-06 12:58:16 -05:00
Jason Rodrigues
c8d6f9d52b Update index.mdx (#29029)
spell check

Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core, etc. is
being modified. Use "docs: ..." for purely docs changes, "infra: ..."
for CI changes.
  - Example: "community: add foobar LLM"


- [ ] **PR message**: ***Delete this entire checklist*** and replace
with
    - **Description:** a description of the change
    - **Issue:** the issue # it fixes, if applicable
    - **Dependencies:** any dependencies required for this change
- **Twitter handle:** if your PR gets announced, and you'd like a
mention, we'll gladly shout you out!


- [ ] **Add tests and docs**: If you're adding a new integration, please
include
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.


- [ ] **Lint and test**: Run `make format`, `make lint` and `make test`
from the root of the package(s) you've modified. See contribution
guidelines for more: https://python.langchain.com/docs/contributing/

Additional guidelines:
- Make sure optional dependencies are imported within a function.
- Please do not add dependencies to pyproject.toml files (even optional
ones) unless they are required for unit tests.
- Most PRs should not touch more than one package.
- Changes should be backwards compatible.
- If you are adding something to community, do not re-import it in
langchain.

If no one reviews your PR within a few days, please @-mention one of
baskaryan, efriis, eyurtsev, ccurme, vbarda, hwchase17.
2025-01-04 22:04:00 -05:00
Adrián Panella
acddfc772e core: allow artifact in create_retriever_tool (#28903)
Add option to return content and artifacts, to also be able to access
the full info of the retrieved documents.

They are returned as a list of dicts in the `artifacts` property if
parameter `response_format` is set to `"content_and_artifact"`.

Defaults to `"content"` to keep current behavior.

---------

Co-authored-by: Erick Friis <erick@langchain.dev>
2025-01-03 22:10:31 +00:00
ccurme
3e618b16cd community[patch]: release 0.3.14 (#29019) 2025-01-03 15:34:24 -05:00
ccurme
18eb9c249d langchain[patch]: release 0.3.14 (#29018) 2025-01-03 15:15:44 -05:00
752 changed files with 77701 additions and 68358 deletions

21
.github/actions/uv_setup/action.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
# TODO: https://docs.astral.sh/uv/guides/integration/github/#caching
name: uv-install
description: Set up Python and uv
inputs:
python-version:
description: Python version, supporting MAJOR.MINOR only
required: true
env:
UV_VERSION: "0.5.25"
runs:
using: composite
steps:
- name: Install uv and set the python version
uses: astral-sh/setup-uv@v5
with:
version: ${{ env.UV_VERSION }}
python-version: ${{ inputs.python-version }}

View File

@@ -7,6 +7,8 @@ from typing import Dict, List, Set
from pathlib import Path
import tomllib
from packaging.requirements import Requirement
from get_min_versions import get_min_version_from_toml
@@ -30,10 +32,15 @@ IGNORED_PARTNERS = [
# specifically in huggingface jobs
# https://github.com/langchain-ai/langchain/issues/25558
"huggingface",
# prompty exhibiting issues with numpy for Python 3.13
# https://github.com/langchain-ai/langchain/actions/runs/12651104685/job/35251034969?pr=29065
"prompty",
]
PY_312_MAX_PACKAGES = [
"libs/partners/huggingface", # https://github.com/pytorch/pytorch/issues/130249
"libs/partners/pinecone",
"libs/partners/voyageai",
]
@@ -58,15 +65,17 @@ def dependents_graph() -> dict:
# load regular and test deps from pyproject.toml
with open(path, "rb") as f:
pyproject = tomllib.load(f)["tool"]["poetry"]
pyproject = tomllib.load(f)
pkg_dir = "libs" + "/".join(path.split("libs")[1].split("/")[:-1])
for dep in [
*pyproject["dependencies"].keys(),
*pyproject["group"]["test"]["dependencies"].keys(),
*pyproject["project"]["dependencies"],
*pyproject["dependency-groups"]["test"],
]:
requirement = Requirement(dep)
package_name = requirement.name
if "langchain" in dep:
dependents[dep].add(pkg_dir)
dependents[package_name].add(pkg_dir)
continue
# load extended deps from extended_testing_deps.txt
@@ -117,8 +126,7 @@ def _get_configs_for_single_dir(job: str, dir_: str) -> List[Dict[str, str]]:
py_versions = ["3.9", "3.10", "3.11", "3.12", "3.13"]
# custom logic for specific directories
elif dir_ == "libs/partners/milvus":
# milvus poetry doesn't allow 3.12 because they
# declare deps in funny way
# milvus doesn't allow 3.12 because they declare deps in funny way
py_versions = ["3.9", "3.11"]
elif dir_ in PY_312_MAX_PACKAGES:
@@ -145,17 +153,17 @@ def _get_configs_for_single_dir(job: str, dir_: str) -> List[Dict[str, str]]:
def _get_pydantic_test_configs(
dir_: str, *, python_version: str = "3.11"
) -> List[Dict[str, str]]:
with open("./libs/core/poetry.lock", "rb") as f:
core_poetry_lock_data = tomllib.load(f)
for package in core_poetry_lock_data["package"]:
with open("./libs/core/uv.lock", "rb") as f:
core_uv_lock_data = tomllib.load(f)
for package in core_uv_lock_data["package"]:
if package["name"] == "pydantic":
core_max_pydantic_minor = package["version"].split(".")[1]
break
with open(f"./{dir_}/poetry.lock", "rb") as f:
dir_poetry_lock_data = tomllib.load(f)
with open(f"./{dir_}/uv.lock", "rb") as f:
dir_uv_lock_data = tomllib.load(f)
for package in dir_poetry_lock_data["package"]:
for package in dir_uv_lock_data["package"]:
if package["name"] == "pydantic":
dir_max_pydantic_minor = package["version"].split(".")[1]
break
@@ -301,9 +309,8 @@ if __name__ == "__main__":
f"Unknown lib: {file}. check_diff.py likely needs "
"an update for this new library!"
)
elif any(file.startswith(p) for p in ["docs/", "cookbook/"]):
if file.startswith("docs/"):
docs_edited = True
elif file.startswith("docs/") or file in ["pyproject.toml", "uv.lock"]: # docs or root uv files
docs_edited = True
dirs_to_run["lint"].add(".")
dependents = dependents_graph()

View File

@@ -10,26 +10,25 @@ if __name__ == "__main__":
toml_data = tomllib.load(file)
# see if we're releasing an rc
version = toml_data["tool"]["poetry"]["version"]
version = toml_data["project"]["version"]
releasing_rc = "rc" in version or "dev" in version
# if not, iterate through dependencies and make sure none allow prereleases
if not releasing_rc:
dependencies = toml_data["tool"]["poetry"]["dependencies"]
for lib in dependencies:
dep_version = dependencies[lib]
dependencies = toml_data["project"]["dependencies"]
for dep_version in dependencies:
dep_version_string = (
dep_version["version"] if isinstance(dep_version, dict) else dep_version
)
if "rc" in dep_version_string:
raise ValueError(
f"Dependency {lib} has a prerelease version. Please remove this."
f"Dependency {dep_version} has a prerelease version. Please remove this."
)
if isinstance(dep_version, dict) and dep_version.get(
"allow-prereleases", False
):
raise ValueError(
f"Dependency {lib} has allow-prereleases set to true. Please remove this."
f"Dependency {dep_version} has allow-prereleases set to true. Please remove this."
)

View File

@@ -1,3 +1,4 @@
from collections import defaultdict
import sys
from typing import Optional
@@ -7,6 +8,7 @@ else:
# for python 3.10 and below, which doesnt have stdlib tomllib
import tomli as tomllib
from packaging.requirements import Requirement
from packaging.specifiers import SpecifierSet
from packaging.version import Version
@@ -94,6 +96,23 @@ def get_minimum_version(package_name: str, spec_string: str) -> Optional[str]:
return str(min(valid_versions)) if valid_versions else None
def _check_python_version_from_requirement(
requirement: Requirement, python_version: str
) -> bool:
if not requirement.marker:
return True
else:
marker_str = str(requirement.marker)
if "python_version" or "python_full_version" in marker_str:
python_version_str = "".join(
char
for char in marker_str
if char.isdigit() or char in (".", "<", ">", "=", ",")
)
return check_python_version(python_version, python_version_str)
return True
def get_min_version_from_toml(
toml_path: str,
versions_for: str,
@@ -105,8 +124,10 @@ def get_min_version_from_toml(
with open(toml_path, "rb") as file:
toml_data = tomllib.load(file)
# Get the dependencies from tool.poetry.dependencies
dependencies = toml_data["tool"]["poetry"]["dependencies"]
dependencies = defaultdict(list)
for dep in toml_data["project"]["dependencies"]:
requirement = Requirement(dep)
dependencies[requirement.name].append(requirement)
# Initialize a dictionary to store the minimum versions
min_versions = {}
@@ -121,17 +142,11 @@ def get_min_version_from_toml(
if lib in dependencies:
if include and lib not in include:
continue
# Get the version string
version_string = dependencies[lib]
if isinstance(version_string, dict):
version_string = version_string["version"]
if isinstance(version_string, list):
version_string = [
vs
for vs in version_string
if check_python_version(python_version, vs["python"])
][0]["version"]
requirements = dependencies[lib]
for requirement in requirements:
if _check_python_version_from_requirement(requirement, python_version):
version_string = str(requirement.specifier)
break
# Use parse_version to get the minimum supported version from version_string
min_version = get_minimum_version(lib, version_string)

View File

@@ -64,19 +64,29 @@ def main():
try:
# Load packages configuration
package_yaml = load_packages_yaml()
packages = [
# Clean target directories
clean_target_directories([
p
for p in package_yaml["packages"]
if p["repo"].startswith("langchain-ai/")
and p["repo"] != "langchain-ai/langchain"
])
# Move libraries to their new locations
move_libraries([
p
for p in package_yaml["packages"]
if not p.get("disabled", False)
and p["repo"].startswith("langchain-ai/")
and p["repo"] != "langchain-ai/langchain"
]
])
# Clean target directories
clean_target_directories(packages)
# Move libraries to their new locations
move_libraries(packages)
# Delete ones without a pyproject.toml
for partner in Path("langchain/libs/partners").iterdir():
if partner.is_dir() and not (partner / "pyproject.toml").exists():
print(f"Removing {partner} as it does not have a pyproject.toml")
shutil.rmtree(partner)
print("Library sync completed successfully!")

View File

@@ -13,7 +13,7 @@ on:
description: "Python version to use"
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -22,25 +22,22 @@ jobs:
working-directory: ${{ inputs.working-directory }}
runs-on: ubuntu-latest
timeout-minutes: 20
name: "poetry run pytest -m compile tests/integration_tests #${{ inputs.python-version }}"
name: "uv run pytest -m compile tests/integration_tests #${{ inputs.python-version }}"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python ${{ inputs.python-version }} + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ inputs.python-version }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: compile-integration
- name: Install integration dependencies
shell: bash
run: poetry install --with=test_integration,test
run: uv sync --group test --group test_integration
- name: Check integration tests compile
shell: bash
run: poetry run pytest -m compile tests/integration_tests
run: uv run pytest -m compile tests/integration_tests
- name: Ensure the tests did not create any additional files
shell: bash

View File

@@ -12,7 +12,7 @@ on:
description: "Python version to use"
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -24,22 +24,19 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python ${{ inputs.python-version }} + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ inputs.python-version }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: core
- name: Install dependencies
shell: bash
run: poetry install --with test,test_integration
run: uv sync --group test --group test_integration
- name: Install deps outside pyproject
if: ${{ startsWith(inputs.working-directory, 'libs/community/') }}
shell: bash
run: poetry run pip install "boto3<2" "google-cloud-aiplatform<2"
run: VIRTUAL_ENV=.venv uv pip install "boto3<2" "google-cloud-aiplatform<2"
- name: Run integration tests
shell: bash

View File

@@ -13,12 +13,13 @@ on:
description: "Python version to use"
env:
POETRY_VERSION: "1.8.4"
WORKDIR: ${{ inputs.working-directory == '' && '.' || inputs.working-directory }}
# This env var allows us to get inline annotations when ruff has complaints.
RUFF_OUTPUT_FORMAT: github
UV_FROZEN: "true"
jobs:
build:
name: "make lint #${{ inputs.python-version }}"
@@ -27,25 +28,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python ${{ inputs.python-version }} + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ inputs.python-version }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: lint-with-extras
- name: Check Poetry File
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
poetry check
- name: Check lock file
shell: bash
working-directory: ${{ inputs.working-directory }}
run: |
poetry lock --check
- name: Install dependencies
# Also installs dev/lint/test/typing dependencies, to ensure we have
@@ -58,17 +44,7 @@ jobs:
# It doesn't matter how you change it, any change will cause a cache-bust.
working-directory: ${{ inputs.working-directory }}
run: |
poetry install --with lint,typing
- name: Get .mypy_cache to speed up mypy
uses: actions/cache@v4
env:
SEGMENT_DOWNLOAD_TIMEOUT_MIN: "2"
with:
path: |
${{ env.WORKDIR }}/.mypy_cache
key: mypy-lint-${{ runner.os }}-${{ runner.arch }}-py${{ inputs.python-version }}-${{ inputs.working-directory }}-${{ hashFiles(format('{0}/poetry.lock', inputs.working-directory)) }}
uv sync --group lint --group typing
- name: Analysing the code with our lint
working-directory: ${{ inputs.working-directory }}
@@ -87,21 +63,12 @@ jobs:
if: ${{ ! startsWith(inputs.working-directory, 'libs/partners/') }}
working-directory: ${{ inputs.working-directory }}
run: |
poetry install --with test
uv sync --group test
- name: Install unit+integration test dependencies
if: ${{ startsWith(inputs.working-directory, 'libs/partners/') }}
working-directory: ${{ inputs.working-directory }}
run: |
poetry install --with test,test_integration
- name: Get .mypy_cache_test to speed up mypy
uses: actions/cache@v4
env:
SEGMENT_DOWNLOAD_TIMEOUT_MIN: "2"
with:
path: |
${{ env.WORKDIR }}/.mypy_cache_test
key: mypy-test-${{ runner.os }}-${{ runner.arch }}-py${{ inputs.python-version }}-${{ inputs.working-directory }}-${{ hashFiles(format('{0}/poetry.lock', inputs.working-directory)) }}
uv sync --group test --group test_integration
- name: Analysing the code with our lint
working-directory: ${{ inputs.working-directory }}

View File

@@ -21,7 +21,7 @@ on:
env:
PYTHON_VERSION: "3.11"
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -36,13 +36,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: release
# We want to keep this build stage *separate* from the release stage,
# so that there's no sharing of permissions between them.
@@ -56,7 +53,7 @@ jobs:
# > from the publish job.
# https://github.com/pypa/gh-action-pypi-publish#non-goals
- name: Build project for distribution
run: poetry build
run: uv build
working-directory: ${{ inputs.working-directory }}
- name: Upload build
@@ -67,11 +64,18 @@ jobs:
- name: Check Version
id: check-version
shell: bash
shell: python
working-directory: ${{ inputs.working-directory }}
run: |
echo pkg-name="$(poetry version | cut -d ' ' -f 1)" >> $GITHUB_OUTPUT
echo version="$(poetry version --short)" >> $GITHUB_OUTPUT
import os
import tomllib
with open("pyproject.toml", "rb") as f:
data = tomllib.load(f)
pkg_name = data["project"]["name"]
version = data["project"]["version"]
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
f.write(f"pkg-name={pkg_name}\n")
f.write(f"version={version}\n")
release-notes:
needs:
- build
@@ -184,13 +188,11 @@ jobs:
# - The package is published, and it breaks on the missing dependency when
# used in the real world.
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python + uv
uses: "./.github/actions/uv_setup"
id: setup-python
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
- uses: actions/download-artifact@v4
with:
@@ -213,16 +215,18 @@ jobs:
# - attempt install again after 5 seconds if it fails because there is
# sometimes a delay in availability on test pypi
run: |
poetry run pip install dist/*.whl
uv venv
VIRTUAL_ENV=.venv uv pip install dist/*.whl
# Replace all dashes in the package name with underscores,
# since that's how Python imports packages with dashes in the name.
IMPORT_NAME="$(echo "$PKG_NAME" | sed s/-/_/g)"
# also remove _official suffix
IMPORT_NAME="$(echo "$PKG_NAME" | sed s/-/_/g | sed s/_official//g)"
poetry run python -c "import $IMPORT_NAME; print(dir($IMPORT_NAME))"
uv run python -c "import $IMPORT_NAME; print(dir($IMPORT_NAME))"
- name: Import test dependencies
run: poetry install --with test --no-root
run: uv sync --group test
working-directory: ${{ inputs.working-directory }}
# Overwrite the local version of the package with the built version
@@ -233,7 +237,7 @@ jobs:
PKG_NAME: ${{ needs.build.outputs.pkg-name }}
VERSION: ${{ needs.build.outputs.version }}
run: |
poetry run pip install dist/*.whl
VIRTUAL_ENV=.venv uv pip install dist/*.whl
- name: Run unit tests
run: make tests
@@ -242,15 +246,15 @@ jobs:
- name: Check for prerelease versions
working-directory: ${{ inputs.working-directory }}
run: |
poetry run python $GITHUB_WORKSPACE/.github/scripts/check_prerelease_dependencies.py pyproject.toml
uv run python $GITHUB_WORKSPACE/.github/scripts/check_prerelease_dependencies.py pyproject.toml
- name: Get minimum versions
working-directory: ${{ inputs.working-directory }}
id: min-version
run: |
poetry run pip install packaging requests
python_version="$(poetry run python --version | awk '{print $2}')"
min_versions="$(poetry run python $GITHUB_WORKSPACE/.github/scripts/get_min_versions.py pyproject.toml release $python_version)"
VIRTUAL_ENV=.venv uv pip install packaging requests
python_version="$(uv run python --version | awk '{print $2}')"
min_versions="$(uv run python $GITHUB_WORKSPACE/.github/scripts/get_min_versions.py pyproject.toml release $python_version)"
echo "min-versions=$min_versions" >> "$GITHUB_OUTPUT"
echo "min-versions=$min_versions"
@@ -259,12 +263,12 @@ jobs:
env:
MIN_VERSIONS: ${{ steps.min-version.outputs.min-versions }}
run: |
poetry run pip install --force-reinstall $MIN_VERSIONS --editable .
VIRTUAL_ENV=.venv uv pip install --force-reinstall $MIN_VERSIONS --editable .
make tests
working-directory: ${{ inputs.working-directory }}
- name: Import integration test dependencies
run: poetry install --with test,test_integration
run: uv sync --group test --group test_integration
working-directory: ${{ inputs.working-directory }}
- name: Run integration tests
@@ -305,6 +309,7 @@ jobs:
UPSTAGE_API_KEY: ${{ secrets.UPSTAGE_API_KEY }}
FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }}
XAI_API_KEY: ${{ secrets.XAI_API_KEY }}
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
run: make integration_tests
working-directory: ${{ inputs.working-directory }}
@@ -330,13 +335,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: release
- uses: actions/download-artifact@v4
with:
@@ -372,13 +374,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: release
- uses: actions/download-artifact@v4
with:

View File

@@ -13,7 +13,7 @@ on:
description: "Python version to use"
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -26,17 +26,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python ${{ inputs.python-version }} + uv
uses: "./.github/actions/uv_setup"
id: setup-python
with:
python-version: ${{ inputs.python-version }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: core
- name: Install dependencies
shell: bash
run: poetry install --with test
run: uv sync --group test --dev
- name: Run core tests
shell: bash
@@ -48,9 +45,9 @@ jobs:
id: min-version
shell: bash
run: |
poetry run pip install packaging tomli requests
python_version="$(poetry run python --version | awk '{print $2}')"
min_versions="$(poetry run python $GITHUB_WORKSPACE/.github/scripts/get_min_versions.py pyproject.toml pull_request $python_version)"
VIRTUAL_ENV=.venv uv pip install packaging tomli requests
python_version="$(uv run python --version | awk '{print $2}')"
min_versions="$(uv run python $GITHUB_WORKSPACE/.github/scripts/get_min_versions.py pyproject.toml pull_request $python_version)"
echo "min-versions=$min_versions" >> "$GITHUB_OUTPUT"
echo "min-versions=$min_versions"
@@ -59,8 +56,7 @@ jobs:
env:
MIN_VERSIONS: ${{ steps.min-version.outputs.min-versions }}
run: |
poetry run pip install uv
poetry run uv pip install $MIN_VERSIONS
VIRTUAL_ENV=.venv uv pip install $MIN_VERSIONS
make tests
working-directory: ${{ inputs.working-directory }}

View File

@@ -9,7 +9,7 @@ on:
description: "Python version to use"
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -19,25 +19,23 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python ${{ inputs.python-version }} + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ inputs.python-version }}
poetry-version: ${{ env.POETRY_VERSION }}
cache-key: core
- name: Install dependencies
shell: bash
run: poetry install --with test
run: uv sync --group test
- name: Install langchain editable
run: |
poetry run pip install langchain-experimental -e libs/core libs/langchain libs/community
VIRTUAL_ENV=.venv uv pip install langchain-experimental -e libs/core libs/langchain libs/community
- name: Check doc imports
shell: bash
run: |
poetry run python docs/scripts/check_imports.py
uv run python docs/scripts/check_imports.py
- name: Ensure the test did not create any additional files
shell: bash

View File

@@ -18,7 +18,7 @@ on:
description: "Pydantic version to test."
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -31,21 +31,18 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python ${{ inputs.python-version }} + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ inputs.python-version }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: core
- name: Install dependencies
shell: bash
run: poetry install --with test
run: uv sync --group test
- name: Overwrite pydantic version
shell: bash
run: poetry run pip install pydantic~=${{ inputs.pydantic-version }}
run: VIRTUAL_ENV=.venv uv pip install pydantic~=${{ inputs.pydantic-version }}
- name: Run core tests
shell: bash

View File

@@ -14,8 +14,8 @@ on:
description: "Release from a non-master branch (danger!)"
env:
POETRY_VERSION: "1.8.4"
PYTHON_VERSION: "3.10"
PYTHON_VERSION: "3.11"
UV_FROZEN: "true"
jobs:
build:
@@ -29,13 +29,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: release
# We want to keep this build stage *separate* from the release stage,
# so that there's no sharing of permissions between them.
@@ -49,7 +46,7 @@ jobs:
# > from the publish job.
# https://github.com/pypa/gh-action-pypi-publish#non-goals
- name: Build project for distribution
run: poetry build
run: uv build
working-directory: ${{ inputs.working-directory }}
- name: Upload build
@@ -60,11 +57,18 @@ jobs:
- name: Check Version
id: check-version
shell: bash
shell: python
working-directory: ${{ inputs.working-directory }}
run: |
echo pkg-name="$(poetry version | cut -d ' ' -f 1)" >> $GITHUB_OUTPUT
echo version="$(poetry version --short)" >> $GITHUB_OUTPUT
import os
import tomllib
with open("pyproject.toml", "rb") as f:
data = tomllib.load(f)
pkg_name = data["project"]["name"]
version = data["project"]["version"]
with open(os.environ["GITHUB_OUTPUT"], "a") as f:
f.write(f"pkg-name={pkg_name}\n")
f.write(f"version={version}\n")
publish:
needs:

View File

@@ -5,7 +5,6 @@ on:
schedule:
- cron: '0 13 * * *'
env:
POETRY_VERSION: "1.8.4"
PYTHON_VERSION: "3.11"
jobs:
@@ -46,20 +45,18 @@ jobs:
fi
done
- name: Set up Python ${{ env.PYTHON_VERSION }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./langchain/.github/actions/poetry_setup"
- name: Setup python ${{ env.PYTHON_VERSION }}
uses: actions/setup-python@v5
id: setup-python
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
cache-key: api-docs
working-directory: langchain
- name: Install initial py deps
working-directory: langchain
run: |
python -m pip install -U uv
python -m uv pip install --upgrade --no-cache-dir pip setuptools pyyaml
- name: Move libs with script
run: python langchain/.github/scripts/prep_api_docs_build.py
env:
@@ -72,7 +69,7 @@ jobs:
- name: Install dependencies
working-directory: langchain
run: |
python -m uv pip install $(ls ./libs/partners | xargs -I {} echo "./libs/partners/{}")
python -m uv pip install $(ls ./libs/partners | xargs -I {} echo "./libs/partners/{}") --overrides ./docs/vercel_overrides.txt
python -m uv pip install libs/core libs/langchain libs/text-splitters libs/community libs/experimental libs/standard-tests
python -m uv pip install -r docs/api_reference/requirements.txt

View File

@@ -18,7 +18,7 @@ concurrency:
cancel-in-progress: true
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -127,24 +127,19 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.job-configs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python ${{ matrix.job-configs.python-version }} + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ matrix.job-configs.python-version }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ matrix.job-configs.working-directory }}
cache-key: extended
- name: Install dependencies
- name: Install dependencies and run extended tests
shell: bash
run: |
echo "Running extended tests, installing dependencies with poetry..."
poetry install --with test
poetry run pip install uv
poetry run uv pip install -r extended_testing_deps.txt
- name: Run extended tests
run: make extended_tests
echo "Running extended tests, installing dependencies with uv..."
uv venv
uv sync --group test
VIRTUAL_ENV=.venv uv pip install -r extended_testing_deps.txt
VIRTUAL_ENV=.venv make extended_tests
- name: Ensure the tests did not create any additional files
shell: bash

View File

@@ -15,7 +15,7 @@ on:
- cron: '0 13 * * *'
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
jobs:
build:
@@ -25,13 +25,10 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
- name: Set up Python + uv
uses: "./.github/actions/uv_setup"
with:
python-version: ${{ github.event.inputs.python_version || '3.11' }}
poetry-version: ${{ env.POETRY_VERSION }}
working-directory: ${{ inputs.working-directory }}
cache-key: run-notebooks
- name: 'Authenticate to Google Cloud'
id: 'auth'
@@ -48,17 +45,17 @@ jobs:
- name: Install dependencies
run: |
poetry install --with dev,test
uv sync --group dev --group test
- name: Pre-download files
run: |
poetry run python docs/scripts/cache_data.py
uv run python docs/scripts/cache_data.py
curl -s https://raw.githubusercontent.com/lerocha/chinook-database/master/ChinookDatabase/DataSources/Chinook_Sqlite.sql | sqlite3 docs/docs/how_to/Chinook.db
cp docs/docs/how_to/Chinook.db docs/docs/tutorials/Chinook.db
- name: Prepare notebooks
run: |
poetry run python docs/scripts/prepare_notebooks_for_ci.py --comment-install-cells --working-directory ${{ github.event.inputs.working-directory || 'all' }}
uv run python docs/scripts/prepare_notebooks_for_ci.py --comment-install-cells --working-directory ${{ github.event.inputs.working-directory || 'all' }}
- name: Run notebooks
env:

View File

@@ -14,7 +14,9 @@ on:
env:
POETRY_VERSION: "1.8.4"
UV_FROZEN: "true"
DEFAULT_LIBS: '["libs/partners/openai", "libs/partners/anthropic", "libs/partners/fireworks", "libs/partners/groq", "libs/partners/mistralai", "libs/partners/google-vertexai", "libs/partners/google-genai", "libs/partners/aws"]'
POETRY_LIBS: ("libs/partners/google-vertexai" "libs/partners/google-genai" "libs/partners/aws")
jobs:
compute-matrix:
@@ -79,7 +81,8 @@ jobs:
mv langchain-google/libs/vertexai langchain/libs/partners/google-vertexai
mv langchain-aws/libs/aws langchain/libs/partners/aws
- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }} with poetry
if: contains(env.POETRY_LIBS, matrix.working-directory)
uses: "./langchain/.github/actions/poetry_setup"
with:
python-version: ${{ matrix.python-version }}
@@ -87,6 +90,12 @@ jobs:
working-directory: langchain/${{ matrix.working-directory }}
cache-key: scheduled
- name: Set up Python ${{ matrix.python-version }} + uv
if: "!contains(env.POETRY_LIBS, matrix.working-directory)"
uses: "./langchain/.github/actions/uv_setup"
with:
python-version: ${{ matrix.python-version }}
- name: 'Authenticate to Google Cloud'
id: 'auth'
uses: google-github-actions/auth@v2
@@ -100,12 +109,20 @@ jobs:
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
- name: Install dependencies
- name: Install dependencies (poetry)
if: contains(env.POETRY_LIBS, matrix.working-directory)
run: |
echo "Running scheduled tests, installing dependencies with poetry..."
cd langchain/${{ matrix.working-directory }}
poetry install --with=test_integration,test
- name: Install dependencies (uv)
if: "!contains(env.POETRY_LIBS, matrix.working-directory)"
run: |
echo "Running scheduled tests, installing dependencies with uv..."
cd langchain/${{ matrix.working-directory }}
uv sync --group test --group test_integration
- name: Run integration tests
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
@@ -117,6 +134,7 @@ jobs:
AZURE_OPENAI_LEGACY_CHAT_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_LEGACY_CHAT_DEPLOYMENT_NAME }}
AZURE_OPENAI_LLM_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_LLM_DEPLOYMENT_NAME }}
AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT_NAME }}
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }}
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
HUGGINGFACEHUB_API_TOKEN: ${{ secrets.HUGGINGFACEHUB_API_TOKEN }}

View File

@@ -1,5 +1,8 @@
.PHONY: all clean help docs_build docs_clean docs_linkcheck api_docs_build api_docs_clean api_docs_linkcheck spell_check spell_fix lint lint_package lint_tests format format_diff
.EXPORT_ALL_VARIABLES:
UV_FROZEN = true
## help: Show this help info.
help: Makefile
@printf "\n\033[1mUsage: make <TARGETS> ...\033[0m\n\n\033[1mTargets:\033[0m\n\n"
@@ -25,20 +28,20 @@ docs_clean:
## docs_linkcheck: Run linkchecker on the documentation.
docs_linkcheck:
poetry run linkchecker _dist/docs/ --ignore-url node_modules
uv run --no-group test linkchecker _dist/docs/ --ignore-url node_modules
## api_docs_build: Build the API Reference documentation.
api_docs_build:
poetry run python docs/api_reference/create_api_rst.py
cd docs/api_reference && poetry run make html
poetry run python docs/api_reference/scripts/custom_formatter.py docs/api_reference/_build/html/
uv run --no-group test python docs/api_reference/create_api_rst.py
cd docs/api_reference && uv run --no-group test make html
uv run --no-group test python docs/api_reference/scripts/custom_formatter.py docs/api_reference/_build/html/
API_PKG ?= text-splitters
api_docs_quick_preview:
poetry run python docs/api_reference/create_api_rst.py $(API_PKG)
cd docs/api_reference && poetry run make html
poetry run python docs/api_reference/scripts/custom_formatter.py docs/api_reference/_build/html/
uv run --no-group test python docs/api_reference/create_api_rst.py $(API_PKG)
cd docs/api_reference && uv run make html
uv run --no-group test python docs/api_reference/scripts/custom_formatter.py docs/api_reference/_build/html/
open docs/api_reference/_build/html/reference.html
## api_docs_clean: Clean the API Reference documentation build artifacts.
@@ -50,15 +53,15 @@ api_docs_clean:
## api_docs_linkcheck: Run linkchecker on the API Reference documentation.
api_docs_linkcheck:
poetry run linkchecker docs/api_reference/_build/html/index.html
uv run --no-group test linkchecker docs/api_reference/_build/html/index.html
## spell_check: Run codespell on the project.
spell_check:
poetry run codespell --toml pyproject.toml
uv run --no-group test codespell --toml pyproject.toml
## spell_fix: Run codespell on the project and fix the errors.
spell_fix:
poetry run codespell --toml pyproject.toml -w
uv run --no-group test codespell --toml pyproject.toml -w
######################
# LINTING AND FORMATTING
@@ -66,9 +69,9 @@ spell_fix:
## lint: Run linting on the project.
lint lint_package lint_tests:
poetry run ruff check docs cookbook
poetry run ruff format docs cookbook cookbook --diff
poetry run ruff check --select I docs cookbook
uv run --group lint ruff check docs cookbook
uv run --group lint ruff format docs cookbook cookbook --diff
uv run --group lint ruff check --select I docs cookbook
git --no-pager grep 'from langchain import' docs cookbook | grep -vE 'from langchain import (hub)' && echo "Error: no importing langchain from root in docs, except for hub" && exit 1 || exit 0
git --no-pager grep 'api.python.langchain.com' -- docs/docs ':!docs/docs/additional_resources/arxiv_references.mdx' ':!docs/docs/integrations/document_loaders/sitemap.ipynb' || exit 0 && \
@@ -77,5 +80,5 @@ lint lint_package lint_tests:
## format: Format the project files.
format format_diff:
poetry run ruff format docs cookbook
poetry run ruff check --select I --fix docs cookbook
uv run --group lint ruff format docs cookbook
uv run --group lint ruff check --select I --fix docs cookbook

View File

@@ -52,7 +52,7 @@ For these applications, LangChain simplifies the entire application lifecycle:
- **Integration packages** (e.g. **`langchain-openai`**, **`langchain-anthropic`**, etc.): Important integrations have been split into lightweight packages that are co-maintained by the LangChain team and the integration developers.
- **`langchain`**: Chains, agents, and retrieval strategies that make up an application's cognitive architecture.
- **`langchain-community`**: Third-party integrations that are community maintained.
- **[LangGraph](https://langchain-ai.github.io/langgraph)**: Build robust and stateful multi-actor applications with LLMs by modeling steps as edges and nodes in a graph. Integrates smoothly with LangChain, but can be used without it. To learn more about LangGraph, check out our first LangChain Academy course, *Introduction to LangGraph*, available [here](https://academy.langchain.com/courses/intro-to-langgraph).
- **[LangGraph](https://langchain-ai.github.io/langgraph)**: LangGraph powers production-grade agents, trusted by Linkedin, Uber, Klarna, GitLab, and many more. Build robust and stateful multi-actor applications with LLMs by modeling steps as edges and nodes in a graph. Integrates smoothly with LangChain, but can be used without it. To learn more about LangGraph, check out our first LangChain Academy course, *Introduction to LangGraph*, available [here](https://academy.langchain.com/courses/intro-to-langgraph).
### Productionization:

View File

@@ -50,7 +50,7 @@ Notebook | Description
[press_releases.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/press_releases.ipynb) | Retrieve and query company press release data powered by [Kay.ai](https://kay.ai).
[program_aided_language_model.i...](https://github.com/langchain-ai/langchain/tree/master/cookbook/program_aided_language_model.ipynb) | Implement program-aided language models as described in the provided research paper.
[qa_citations.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/qa_citations.ipynb) | Different ways to get a model to cite its sources.
[rag_upstage_layout_analysis_groundedness_check.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/rag_upstage_layout_analysis_groundedness_check.ipynb) | End-to-end RAG example using Upstage Layout Analysis and Groundedness Check.
[rag_upstage_document_parse_groundedness_check.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/rag_upstage_document_parse_groundedness_check.ipynb) | End-to-end RAG example using Upstage Document Parse and Groundedness Check.
[retrieval_in_sql.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/retrieval_in_sql.ipynb) | Perform retrieval-augmented-generation (rag) on a PostgreSQL database using pgvector.
[sales_agent_with_context.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/sales_agent_with_context.ipynb) | Implement a context-aware ai sales agent, salesgpt, that can have natural sales conversations, interact with other systems, and use a product knowledge base to discuss a company's offerings.
[self_query_hotel_search.ipynb](https://github.com/langchain-ai/langchain/tree/master/cookbook/self_query_hotel_search.ipynb) | Build a hotel room search feature with self-querying retrieval, using a specific hotel recommendation dataset.

View File

@@ -31,8 +31,8 @@
"source": [
"# Optional\n",
"import os\n",
"# os.environ['LANGCHAIN_TRACING_V2'] = 'true' # enables tracing\n",
"# os.environ['LANGCHAIN_API_KEY'] = <your-api-key>"
"# os.environ['LANGSMITH_TRACING'] = 'true' # enables tracing\n",
"# os.environ['LANGSMITH_API_KEY'] = <your-api-key>"
]
},
{

View File

@@ -86,15 +86,15 @@
"\n",
"Environment Variables:\n",
"- USER_AGENT: Specifies the user agent string to be used.\n",
"- LANGCHAIN_TRACING_V2: Enables or disables tracing for LangChain.\n",
"- LANGCHAIN_API_KEY: API key for accessing LangChain services.\n",
"- LANGSMITH_TRACING: Enables or disables tracing for LangChain.\n",
"- LANGSMITH_API_KEY: API key for accessing LangChain services.\n",
"- TAVILY_API_KEY: API key for accessing Tavily services.\n",
"\"\"\"\n",
"import os\n",
"\n",
"os.environ[\"USER_AGENT\"] = \"myagent\"\n",
"os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n",
"os.environ[\"LANGCHAIN_API_KEY\"] = \"xxxx\"\n",
"os.environ[\"LANGSMITH_TRACING\"] = \"true\"\n",
"os.environ[\"LANGSMITH_API_KEY\"] = \"xxxx\"\n",
"os.environ[\"TAVILY_API_KEY\"] = \"tvly-xxxx\""
]
},

View File

@@ -124,8 +124,8 @@
"# Optional-- If you want to enable Langsmith -- good for debugging\n",
"import os\n",
"\n",
"os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n",
"os.environ[\"LANGCHAIN_API_KEY\"] = getpass.getpass()"
"os.environ[\"LANGSMITH_TRACING\"] = \"true\"\n",
"os.environ[\"LANGSMITH_API_KEY\"] = getpass.getpass()"
]
},
{
@@ -156,7 +156,7 @@
"metadata": {},
"outputs": [],
"source": [
"# Ensure you have an HF_TOKEN in your development enviornment:\n",
"# Ensure you have an HF_TOKEN in your development environment:\n",
"# access tokens can be created or copied from the Hugging Face platform (https://huggingface.co/docs/hub/en/security-tokens)\n",
"\n",
"# Load MongoDB's embedded_movies dataset from Hugging Face\n",

View File

@@ -71,9 +71,9 @@
"# Optional: LangSmith API keys\n",
"import os\n",
"\n",
"os.environ[\"LANGCHAIN_TRACING_V2\"] = \"true\"\n",
"os.environ[\"LANGCHAIN_ENDPOINT\"] = \"https://api.smith.langchain.com\"\n",
"os.environ[\"LANGCHAIN_API_KEY\"] = \"api_key\""
"os.environ[\"LANGSMITH_TRACING\"] = \"true\"\n",
"os.environ[\"LANGSMITH_ENDPOINT\"] = \"https://api.smith.langchain.com\"\n",
"os.environ[\"LANGSMITH_API_KEY\"] = \"api_key\""
]
},
{

View File

@@ -29,7 +29,7 @@
"source": [
"import os\n",
"\n",
"os.environ[\"LANGCHAIN_PROJECT\"] = \"movie-qa\""
"os.environ[\"LANGSMITH_PROJECT\"] = \"movie-qa\""
]
},
{

View File

@@ -4,8 +4,8 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# RAG using Upstage Layout Analysis and Groundedness Check\n",
"This example illustrates RAG using [Upstage](https://python.langchain.com/docs/integrations/providers/upstage/) Layout Analysis and Groundedness Check."
"# RAG using Upstage Document Parse and Groundedness Check\n",
"This example illustrates RAG using [Upstage](https://python.langchain.com/docs/integrations/providers/upstage/) Document Parse and Groundedness Check."
]
},
{
@@ -23,16 +23,16 @@
"from langchain_core.runnables.base import RunnableSerializable\n",
"from langchain_upstage import (\n",
" ChatUpstage,\n",
" UpstageDocumentParseLoader,\n",
" UpstageEmbeddings,\n",
" UpstageGroundednessCheck,\n",
" UpstageLayoutAnalysisLoader,\n",
")\n",
"\n",
"model = ChatUpstage()\n",
"\n",
"files = [\"/PATH/TO/YOUR/FILE.pdf\", \"/PATH/TO/YOUR/FILE2.pdf\"]\n",
"\n",
"loader = UpstageLayoutAnalysisLoader(file_path=files, split=\"element\")\n",
"loader = UpstageDocumentParseLoader(file_path=files, split=\"element\")\n",
"\n",
"docs = loader.load()\n",
"\n",

View File

@@ -144,8 +144,8 @@
"outputs": [],
"source": [
"# import os\n",
"# os.environ[\"LANGCHAIN_HANDLER\"] = \"langchain\"\n",
"# os.environ[\"LANGCHAIN_SESSION\"] = \"default\" # Make sure this session actually exists."
"# os.environ[\"LANGSMITH_TRACING\"] = \"true\"\n",
"# os.environ[\"LANGSMITH_PROJECT\"] = \"default\" # Make sure this session actually exists."
]
},
{

View File

@@ -27,7 +27,7 @@ install-py-deps:
$(PYTHON) -m pip install -q --upgrade pip
$(PYTHON) -m pip install -q --upgrade uv
$(PYTHON) -m uv pip install -q --pre -r vercel_requirements.txt
$(PYTHON) -m uv pip install -q --pre $$($(PYTHON) scripts/partner_deps_list.py)
$(PYTHON) -m uv pip install -q --pre $$($(PYTHON) scripts/partner_deps_list.py) --overrides vercel_overrides.txt
generate-files:
mkdir -p $(INTERMEDIATE_DIR)

View File

@@ -528,7 +528,12 @@ def _get_package_version(package_dir: Path) -> str:
"Aborting the build."
)
exit(1)
return pyproject["tool"]["poetry"]["version"]
try:
# uses uv
return pyproject["project"]["version"]
except KeyError:
# uses poetry
return pyproject["tool"]["poetry"]["version"]
def _out_file_path(package_name: str) -> Path:

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -0,0 +1 @@
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

View File

@@ -1 +0,0 @@
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

View File

@@ -1 +0,0 @@
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

View File

@@ -1 +1 @@
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

View File

@@ -0,0 +1 @@
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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
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

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
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

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
eNqdVw9wFOUVDzJDnVqnlpFCUevOVeJIs5e9v7lLGp2QAEngciE5/gSaOb/d/S67ZHe/Zb/d+xMmto1OnVGUWetUwCIKIamZCChRMUippU5ti0ytDogFW6mOf5gprVKohSl9396FXISZTr2Z5Hbf97733vfe+/3edwPDWWxRlRjTRlXDxhaSbHih7sCwhdc5mNr3DenYVog82J7sTO1wLPX4fMW2TVpbXY1M1U9MbCDVLxG9OhuolhRkV8OzqWHPzKBI5MI7M55f79MxpagHU18tt2a9TyLgy7DhxddFHA5ZmEMGh/MmtmwO2RysQ1i2avRwDsUW50XCDHIQJOFkZCMRUczkloqpn2MfZklBWTAlSeCNA0U0qUoynO3YxFKRxmVVGRPKIZE44I6jJGPnWAyaKlrIKnAZYnGio2oyC2Dp0gRvkhy2sMwh09RUCXmhFJ0uVrPYABsTEVZxFrYdi4k0ldrM7Rej5Yhpq7raB/YgRFAHIURtK5jTCWyxsIazyGAP1NFs6v++wTwV/7dkmCLLF/uTLGIUdLBocTliyZQrlLJpEJvLIF3VVARLqq1UcTLxpDacz3NrKhYLCqzpfl8V57OIhllBaIHaWPf1V3FT6pSD0t5OvShlNZOBEAwJcyK2cxgSkMMilyUFqLAFlZTBfEbDXitxIDNsehfzLxJbYQXlNGT09FjIVO4q98xK7evvBolOZKwxUY9p82HC66qhMk0DZAH4NpGFNA1raZsQLS3BM2usDNIohlVqWxjpZQI4D3QWgrowP4JfYDJvp0JUicnW++yC6QWRcQwvbubu8jNTMJDuKXRiZEmKr7+/ZKTU0v/vfliWMZUs1SxplBY4kmU5/FKN69WR5QYgC6j23JoWYahScfGV9WDBe/qC93ZL1VnvU2hNDVmqDY/FgLwtxdYvtqwXBTQSMooWqOd3IgGQfYAN6x8fdcR0qemv5nKyn6GB1R7VgBNO4IhRgI1UQLwOGFCBUKDtYAUSyoFZ/jIjVHkwBACo5cjQCfyDxgPfUhl72NDEgBRHk6FzOQVrZsbRPKIwKCAc2KVkTYaXSfFVI6zicpAlXAZ0aMNJ8E4JssgVCdSLQW4x0Km0uA2+GV9aWMEGVRl5AXok1gPUswfVtKnXA1eLoWi3hQGT9F7OALwBWTmGjAypwM7E9v6PeL6gUKQXyhnIskhOY5QoATxlJjMJpaqoYa/qkAGdTgFQWf0nRGAEFTyJ6YhwbCVdgNbydiGjkMxMRRCbQz2MCarKrBqOphW5QcYZBC0BQia7EkZdYLrUojkWbdEjlouIZVNNhewwlyUwdJdFSsS1QFug2t/dP6xgBH1ANw4qQMvurqnjbjebMsBOQIOEzQn3mZ4+1QSaBeZDNh6B/jWKDOiO9GJs8kiD8g4Vd7l7yiZJ9VpKjNES1fIskiuXRxg38h6VumNJCKKhpbq9AHPZ4AL+SNAv7MnzlOFFg8nHM3p1h0xvfX/5gomkXjDCl2a+O1TcvKtch1B3ZwJJyc4pJhkTuDuRpUfDe8vllmPAMMPucGP7le5Ki5PuQv6A4A8/O8UwLRiSu9Oj6henbIbBWOAlAjbcp4RdE/nRsNFjK+5goCZQ83OYkCZ0K753CPbZDh0YhGLgw68Nl64b25NLJqr4bsXswSYojHsgwbAbDHBJoJKgEAxzgVhtpKY2FOEWJ1KjjSU/qavW4dkUYz2YfvzCiboPS4pj9GJ5pPGqFT9QvI3wLH4YdDxccgjFfCkqd3QV31G8aPEtTXuL7cUTqwcZap/n1j3glT7Xl8/JkiPLSjanC/G+cEgVsSNlxkpbgOaZGwiI16m7oyYc2VVamUj+CJxV4AMCLwTG8zxMQ6wB1UNCvf+l2x51ByOCIOy7UsEmvcBQ7nBY8D6/KNewsA5VY74nzYTj8fjLV1eaMBUClVg0ND5Vi+LyaAJBne67UqFkYgesjuYn1HlVdo/fBi9pKRzLRIWIGA7JASkiRkVJykQEURDDESwLNeGXGElJYIZV0ySWzVMsOWzoucerdJRnSKsPBSKhKBy1DihU0hwZdzpiE2GHoHUcMLZGkLy7cRHfiCQF851eA7rDTV1tDYmWxpFOiLKRkF4VP/LOtOnptJRJi3p9a7Axv7xPzwSWZ/KrRWnV0mi+KdLn0BZNTKRXK3bfgmzziub2ZCqU4wM1wXgkVCNEInzAL/gD/gCfSC7zk7g/6iSiZkEGfq/J5pP5xeuinfFc10qcCOYWN2sd+VhGbli1bJ2/IZVoMmO9/uULU3o8KLSTBS2h0FpBJDTbGmtsShSslEM6c3AaZCv11XXsBg7kSOtLEOEBIjwDSLw2OAGQOrjIsRzU+6fyYR3XDD8LkoZWqOM6WTIxfMNFpBMmRH0bMfDxRyEHDhBzfauQXhAutDQvKYTaE2JzYrXcVFiZWpJsWhTMGwvXtixNJ5S4Qa1UV6wsCYFojBdKeYgK4ZjXhpOhf8moXljFlyOeT5rF3z/DBqEG3HOHOrEFCHJHJI04MlC7hYeg5h0NXe5YTI6GauIROZaRIlEkIX4BkOaEtcv8MMjmwjDSoMeykrtXCdX7asPhkK+O01F9LAp48n4l/WioODhfvWbGrQ9eW+F9pmsd3b1/Em7sP79734kP8zHjzrkHN1zfGrzmDmR/7RNR/vydo5VLdt324usL/nNhz9ZKY279tesePhJfuTJ3ZtqTrwnXvD+Pvjyy85Kuj14/dP7j3JY3Dp0885hJDyZu/akzXvVn86359r/v37d+Zf974yPz4k8tT9LGw8tO1z5x/4Mfv/69TW212//4rd+uWPHWkW3KwZmt/0I3tF28+28bycZPOq5r++Z38mcrKs6dfPfo08G+Q9cOvFHX4T4/ym1oe6ziD8px32ujs44GPjDtypdWPJxaM7528OYb2no3m5UfxPelL7zy+YmqSvxc18f/PPnZQevA6l0vnPtN5daev6bXbP36p32nu0/OerTmgW1bwn9J5u1vzPjhA8u3nrs9cOj3182rCHaGZ91xbMVDF+Zsuym4f86OOSH3Q7l53cCjJ77rDqxsfW/hmVUNMzb97pft/qcfnLFirDLwsDiW2DIWHdA2vCFt2Pzj1P6Zc5dwm+d/9dAnn/ZuSH7lYvuRV/Zn75kbPt7+7qrKjSfvOnX/m7nW7rcWDZ87lRNmt74dDPxaOzZvrO1Yf/bxN+fd/RmauSc6PtJ96my64xkUe/z8Pfknjk676dstw7f8ZPrFbGD81GPy+5s+WvRBeOvP/vHIc3vDf5+x8cLNfa9v/8GT7a/ePvvMR/dle25Z3uJPNQxFt9+ED5+W71xzQthy+Fc3Hrj3/K0VFZcuTa84cjZ/7O3pFRX/BZlc67Q=
eNqdVw1wVNUVjvWn1nYUbJEOZeC5Y4ep5m32/ycxOvkjCRDys4kkqKR337u7+9j33n15977dbABbkdFpwWmfYFtr6QwYElz5BxFR6IxVBltrRfwpdBS1Uhhg6mh1rC2VnvvehmwgM51xZ/bn3XvuOeee833nnF05msMmVYh+xRZFZ9hEEoMHaq8cNfGAhSlbNaJhliHycEd7ovsJy1SO3ZphzKDVVVXIULzEwDpSvBLRqnL+KimDWBX8NlTsqBlOErlw/JpTyzwaphSlMfVUC3cv80gEbOkMHjx9xBKQiQWkC3jQwCYTEBNgH9xiip4WLIpNwfGEKxTASSLIiKEkopivmwqmXoG/uKYMyoEqSQJrAgiicVGSEpjFiKkgVcgpMiZUQEligTmBkhTLcx9UJWkisyCkiCkkLUWVuQMLFrSJBsljE8sCMgxVkZDjimu0WclhHXSMeVgpmJhZJl9SFcq42Uu9FYjBFE0ZAn3gIojDInjNMljQCBwxsYpzSOc/qKUy6r1H55bcz9YUF+Tx4m/JJHpBA42mkCemTIVCKZo6YUIKaYqqINhSWKZSkImzyuB+jlkjY3KnQJvm9VQKHpOomCeEFijDmmdFpTAhT3lI7RzqeCkrqRS4oEtYSGKWxxCAPE4KOVKADJuQSRnUp1TsQEmANZ3RO7n9JGEZnlBBRXo6bSIjc2e5ZZ5qz4p7YUUjMlb5UtpgYoiImqIrjiSmBoQe90OGNMT9WuZhBcM5vZQSvZ9KcB3ERcsfuVjZTxlTyVQM7h0/mMDIlDICyXHfvxJgnPgZJuHwVRyML/PwZBcmM9dhKhoHGQUMqMhUGPx0PXCOuBhzseGYhYwh3dVAHUNMYW68Oh0TfKUUAgpQ0tM8dR5qJftLeJvMiXEoAXaUtKLDJccgzNnHkAJk0wB+CnAZMg47usQEUCteJGOlwwDAnlIOSo3AB+QcbEtlxGWAHwCppcoAGiGDVSNlqQ5HdQrkAmKXtMnwML48qYeVQh7ihss4hlR1nDcTnHRp2oayGNZNjneFusfgm5cqE2ewThVeNwC4EocBdfQZyGTUgcFkPrh6WzknSPZiBOAJ6oSly0iXCvxO/Oz/8ecSAZfZVNCRaZK8yquRBMyQ+ZpBKFWSKnZwABHQ6AQKlOX/IkgSVlLoLAGhDCqgHBUcScNKQjgy/QUAoaMN6YX2lFunx6R5a0hzclaWWdMtVXXpegm4+kBTCbt57rRrAMsTwNvhrgpc2LNihUPuAUuB6HHTJfpcAuRLvb13wkUdEpXfkSSXQg3iK0iWFe4dUjvKWZpCKsXctI60S3TwUEq8wDDTwo57sIKRNnaKm8EaqEJQ7flZn9e3YjSDEcCXvlsxZTgDpdzeNrFFbuedCSoalE7Ce4u9NT2kGFCaoVoihotAPN2tmnYxi7EhIhVwOeKesneUdZ8qXt62lMqzyC98+XaR11PRKb/2nnZwoq61qqMAvVwX/N5w3BveMShSTnQVuqXIS7I9Yjj7z5VvGEjKghKxNCfYI+7hbeUyhNqb2pDUnpigksfS3oRMLRLaXb5uWjo0QGyPNnRcbq60OW4u6PX7vdGdExTTgi7Zm5xEPFu+wcsK3NmdWOznoDshL59JvGUziRd4TfEzE2xCDy6IEgHT9gbftrGwqlhPs4w97I9GopvHWs8DI3COWXTlMOQQv3J4tDTZbGyfP57+6cONkE/7QHfGqhR8cWEeTDcBXyAMH9WhQHUwJjS3dW9pKNnpnjR9O7t53YdGKzaNwWVUylh6FsvFhkmBcsAdfETuP/RUEeYpQrFY8sre0it2uTOd2Nq420WlSMw00pUhx6x9wEFMfmgwL0uWLGdyec0XHwoFlSS2pNSe0hFodNwMOCRq1B4OB2KxbaWtsaQV4bI+0e8Tff79gyJwBKvQ7SCizmdpsuRnfT7fvssFGMlCSbZHQz7ndbBcwoQuDtMAGB9XE4rH489PLjSmKggisUhw/0Qpisu98Qc0uu9ygZKKJ2B3y+CYuKjI9rFb4KHf78eBWEiKBmRJlv3ReCjlC6SwFI/5fVJUiiSfdUuJ6LRxg5hMpFiyeN+3j1VqaJAztDboDwcjcNUa6BmSaskYynYj4ZegNQK0KJUgeXvDXLEBwRgjJhwE2qONfQvr2lobignwsoGQrIIfOX7Flf39Uqo/qdUuXZCPyWpvz9weaWD+YqyaEdS1qENpvSunN7bG6htbfIbGugbnZzqaRH80GAmFw8FwTPR7fV6/1y/mc3jxQrUl0BuV+huw7ifdUkc6kjX7pVBzbHFTV5scSdYjvSeT7F4QDPdHEgW5xS/540P1db2paFNrz1BLWKprCeYXk0hfMsD0tE4603AbxDK1VTV82odqT2tLHBGBIyJniL/aP8aQGhgaeQxqvRPraI3QAn9B2nW1UCMkeDAxfEMJT0BLrF1IdHxsHcTAghZUO7c53pHtCXSpCzoVVh/LpecuzM/vsuYVFqqL7rLaItIinA501Xc3N9eVBSEcDYq+UhwivlDMgeG461/Rq729YjnlxXbD/a81qhOqw0w9ksAmMMguSiqxZGgJJh6BnHfV9dl7YqlUNOQPhMMpnxyS5JhYD8V2TNvFAjHM+8koUgFjOcnenQnWeqpDoaCnRtBQbSwCfHL+kd0/4k4KL33t6tmrr61wXlfC+8KFNWvbV//VN+Wlj778TvLV3LEXvzg7/wfiuVnz+npPz3prtb1p59ZtlU8+ck901fLPPXOyc9quO/Av30cHZgd//fEdnquuemhNRXZzeqv98pyTH+884Z311Jsr/vPF3f/+7/tnEx+9/tnR3b96p2HmjfvP3//K70bv8L0z4ydLMta6x5rO+DvSZ9nTvd6jJ4emLP5T54O92vJdr7Xetq7l7/l/NpnPLEw9nth/ZOWGB9Y837hqyq7ZBze0v/RxVP7Qe9/2Padnbp2660jjtRDZqzfTFwrF219ce3jPJ5sffOvz+Plzr/3DPGy+t7H42sZky7xPazd6an/x4S/fPTJD3PDTb69+tPGmkVv2zD157/UD12+7bfWPp542Dy8xB/XNc974AN937fKZNz7x/nWDb8xm7fsOTp1zYC+Z/tvbXnjs5B/bGk/9vKV45njX0TWHsq+eOPh27OtHH+3aN/KXm5+Oy8W1nxhf7r3pqVeP7DghrD/z0EBf19uHzry+/tOdS74xbfNNTx69tfJQQfthxw1Tb97++042fdk1kpVd/v5n3ytW/IZEm2cteCb25FMnWz89noi/ebRnxon3ps2snfb6+vXTfH+Y8WGC7a87PrDhz6tOq2fO6vrOn639Zs+FG+678bsNf7OnH/JMP2d+8HLKf754YdfD228PfUs/dfvepu93P/xW78D5zlsT3fTQqcffzNXdXN34IyfXV1ZY9UtJ5KqKiv8BeQIZMg==

View File

@@ -1 +1 @@
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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
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

View File

@@ -1 +1 @@
eNqdVmtwE9cVNmMCCWVK2wkhJXTYqnToEK+8K8mSZVdpbRkbG/BLELApEVe7V94r74t9yJIZZ1onaToJIVkIpaRJedlW62LM0zxaU5gMhJAUhhToOAFKwnRImqQpzcBkEob07EoGueRPuz/2ce55fPd855y73Zkk1nSiyOO2E9nAGuIM+NCt7oyGV5pYN57sk7AhKHxPY0Nk0TZTIyNzBMNQ9bLiYqQSt6JiGRE3p0jFSbaYE5BRDO+qiB03PTGFT79dOH6VS8K6jtqw7iqjlq1ycQrEkg34cLUoJiWgJKYMAVMoRkRipClDoYium5jSMdI4gQIkGsG6LW/DBkXkuKJJyA5hiwQsqhSS9Q6sUaYOt7x1909kCq7svTZOpSGcjDFv24mK0k6ZKmV0KBRPdIPInEGpBHMQSYnneyly7JAGCEVR6cia8wpgRsZ3XUWUS1NEbO9GT+sGllxdRdSYTXYIGGx5wlPzkKYRHXAvUbT2fEsbuKtrOUgkhceiLWpTDdqn0BKRia0pg4yFp4o0QIHFqKEoYpSDdzurcSTqGFZ1Q8NIyhMAHhV4NUzNjsO4GVvmWAoK4WzZKpeRVh0QcVN2+LfD3X63FWQkOQoRhw9XV1fOSY7P/9UelnmscxpRcxq5BUqBaqQQxSMDxZCObRoSSozSMKdovO525bYPJQlV63hWNShBzSA4+5mrFOf9v0JUjVKcV025+gKibdcEcqWPSQhkk8htLme7OREQiNLZDNgtQjTM20m4HXl5nq4SS2DOAOWu5V0ZASMeUD/fIyi6Ye0Y2z2DiOMw8I1lTuEhpDXQ1knUIorHcREZuB+KScZOPq3+doxVGokkifuyVtZOpKoi4ZxaLU5AeW3PFR9tI7l7ud+uNhr6UTasvQ0AoqK2uDENbS5TrLvE42Z2pmjdQEQWoW1pEQGePtVZ/0P+goq4dnBC50aI1Zc13pGvo+hW70LENUTGuLSzbvUiTfL79uTLNVM2iIStTLjx7nC5xTvhvG6Wcft2jXGsp2XO6nWKf/8YY2xoaZpTwIe1hdkxmh8Ry22GYG0LBDy/1bCuwtDCT/SBmWHq3T3ABX7zRCY3vLY2zB8l8VLBtJ4q4MUaXmRCk3k8VAMUlofx+CjWX8aUlLEeqmbhou3hXJhFX0nDrkUajK04UDF3lPYMJ5hyO+b7w19J+LBNOOzGhg+Tg8YpVdExnUNlbV9KN2fHNl1btSdbXbSitSGZdDphrWGH+Y7OVAfPmTwvJDskJtjp85IYNrn43pwJNJUdBgDRkm5t87GBHbmV0dz3w14ZmmVohj2UomG8YJFIBPLp3HNnh271lDAMc+BuBUNpx3DKZHyMcx3O19CwBKTZse+48QWDwT9+tdKoKy+oBD2lh8Zq6TgfDeuR9AN3K+RcbGMlfXtqVJ0mvDUyCz6iXqaE8XvZWMDnYXgWefxBFiEG8V7kK/EyyHPQnhIcuLHZVBXNoHXMwUlppK2RIgml7EYLedkSrx+2Wg7nCieaPI6YsSrF3oReTqkaFhXED4ar6TDiBExHnAK0MlUt9RULa8P9EUAZhuOK4LVvjyuMRrl4NCaFfA3eysTKZHOy1TANf1MkFVliCtHG5AKuc4EebAnWVfrEaM2jdZqvgmYDnqCf9bKsh2bdjJt1s/S8arfbCLL+isoWvmk+DiSqOtNmUyrKVnaaiXQNL0pysh1VNlZ61Vi6giUrmxa3JpYsrp0rkBZ3si3QEmglTeG6itrG+tRiyQjOi3bWkDbYDTKEUHE5BcUJ01EP5VqEhhahsw3iHW2QcjhF7RyE3GPHYTk1D34yGmQxXU5F7GRieMLYj8CIDtUrMh55EXJgJgkfqoo11daExZWxdDIo4pJo6wIxVlG3NEZIurq1rmppuqPd2xjXUaStIy8JwAbN5PLgZ3ylThnegf5/ohpaSud3PN2gZv+mMrKiyyQe74tgDTrI6udExeRhsmu4Dzhvrmix9pbyfjjzvDFPqd8TZHw8XQkzc9Tb7fnQYx8LGSRCjSU5a4/gDbnKfD6vq5ySUKjUD/3k/HP9rC97ch0bd3Xms/cWOFeh2HxU3sZ8Y/jTqedffnWScHbWhd11v+9PTLko9J7zT9XeLKh/7rX2X3/c13Sr656e+xa+enT3pSvDAe9vlh958MSM5glb33vsbPVTnz79ybGXnnn/6IWbh99ZMO36ulvXHo8WXYpfe+++6oHu8w/dfyt8fWGjdH9n7aHMU3P/uct8bvbrH5UdfubKge8lTjbt2/3WZ+oCRO+bvO4H3376zKzVmYnm3ObNT7wYmriaHfrw1FD9K1d+NK/F9/mPE8aaDfd+cG328SNrE9+8fKr26sEbTJnVvbfm4i93PNQ74cnZzRsv173S/YUSOLDp58fWnxx647W/X7k5dEa/HmjYGt3/yeun//zRY1//d+eHAx9MmjOdXhOe/q+aH4a+xk32DZZ//K2DU89tXMteHhITZw8PTE8+/NlfNq9//9EXHhm8vGbZw98hN6pvrF/8Vnr3O1NXT5h8vvrMkLnigXtGLgxcxlM2xW4c7f3ijRWpB549vtL81T/G/W3mptomUjRwceTslhdaD83Zc2L5X0OlDX2nZf3QeOGRYebB+fuubcwsOTuAZnx/eObLQ+qRNVN6Zp8+V/D8YM20m7tnhDZcnDRjf73ahB5fW31088HBLRuKPp/Q6/7TgfETZ6vLru46Nel38/cePynP3cKMpF76xax31+376YqZNycWFHz5ZWHBu+cvFe4sLCj4DwOaluc=
eNqdVntwE8cdBtxOyWMYhtKQtDPNRaWB6fjkO0mWLBuFGNnYBuQHcmJMHprV3cpa+e72uN3Tw64LhjJJGtpyJCmlzUwDtqXWGAIx4REHyh+8kjYhKWEyNhmSENIHTDN02kLplKF7khzkwl+9GZ3udn+P7/f69tbnktAgCGvTR5BGoQEkyl6ItT5nwDUmJPSHWRXSOJYHW1vC7QOmgca/F6dUJ9UVFUBHTqxDDSCnhNWKpFghxQGtYM+6AvNmBqNYzkzMuN7rUCEhoAsSRzX3RK9DwsyXRtmLoxObXBwkIUfjkANRpCCa4SjmECEm5AgEhhTnGBIDQWKvd0HKIS2GDRXYLuylOFR0DmgkBQ3OJOxWsu98UuPYVbg3xbgMc6dBKNt6CsbdnKlzNIU5GRGKNIlyOoIS84RjpVbK83rAYAgVBacK6jJmmAF9yFHOOQysQDsakiEUqo6+cm5KkKk4ZLoykrlGYBiIMNwd2Ogu1bSBO/qeYisqlqFiL3XplPdgXkUayktCorOcwkgBFpPoddCMntdOMJMRIsWhCmzR0ldbrORRhkQykG5HZSuGCwnGrAs4wMmAgigg0A4/gaOcASVsyMRp29QNVmuDonwNex3FktzJZt1kLkvKViwkg27bQixJZEoAhBpI67IT56CIFlLSVnRhrxXFWPZAxtHXl0/HGhMZULY76ks0T5XqF2IrVcfRBJSovQJkGdl4gdJaGlcMKATa1jWg/o8NG6FkZ50aJswjYCsQqJNathuoMlOAmoatKziFvlwcApkN2PlpswfjmFBr99SheRVIEmRlhpqEZZYAa1dXD9LLORnGFEDhMOshDeZH0hruhlDngYKSMFvQsvYAXVeQlG/RCrvmI8We4+2Ab98etpuMZ2OoUWtfCwNR21TRmmHTrXGis9LvrNyT5gkFSFPYtPIKYHiyen5/rHRDB1I3M8IXmcPKFpR3l8pgYg2FgNQSnmLSzqU1BAzV6xktXTdMjSIVWrlg6+3uipu33Lmdouj07Z1imGQ0yRrKF+JQ6YbNDSzmAodZY1FIgdNmKWcJSzl1YBB4YIpPSI0ML2Hm2tou7J5MqwK1Lhq3Bnxe8deT47ghy9SoSdYPshLC35/KFaluR8vyW9WfN1jHymkdbo+b5Zzg55YBjXMJrkp2q/b4q11eriHUPhIsumm/Y/X2thuM5GIsmvrJbslJcVPrhvJw8I59ctjuExaNDZ/xDA/TOiaQL6KyRlbxKwskzzfVjRaaksdGF9BQT96tdTjfMKmedEqWTFmOJ1Oq4O/xuFEUmlJsX1GFMYPthgHiVWINeFze3cWdyZINs1gFXhR4QXwjzbMJgQpSEctn/l48aYg1WCkIwsHbBSjuhuxMynmE/HWkVMJgxMYIkvm+Zcbj9/vfvLPQpCk3E/G7fG9MlSKwFI3oUsnB2wWKJgZElYykJ8V5JFvj89lLxO91i5IXuvzACzweyeXyylFfFaiSREEWo4JwqEAkPLWrqWOD8gRK7FylGWu8XAVpez4DbrHS7WWh1rBTSFJMGYbNaB22gyA1nG5ABQP51eBSPggYs/PhfANaubrO5tpQU3A4zFAG2eGG4JaJ6WWRiBSLRNWAc/kSoTludrS1LYt1kKjaGPdLzSAazaxeQYOgNdHhW9OsOTuUFYLEiz6311NZ6fN6edEpOEWnyKN0S3SpAMVEHK9IC7ElETHSnpQbW+VYm78RVooNYrvkjFTVCcKSNjG9wmdmGlyJlk5fV6yqvvKxplCPqhir2hp8uogUukaqXb0yFgp1sWgAjQcqajjWnIzOSaA4IjwbEd4eELFanByQGnbm2jkIOKeyaA3XyD5JWjQlU8OF7WRC9s8IPMzOmUAz1uD4iywHZhLJgQSIYM/jiXTC5fOYq4K4dnW61sDJUMPKns7lUMCyN5huAqsznWZ9SRLclS5eKObBK3iq8m14C/r/iWr/Kr504vkWvfDtldMw0VAslg1Dg02QNSwp2JTZgWDALKv5ytpOa19VLObzRN1VPljl80hQ4Jcwqp209iU/DNqnSQ4orMeSkjUadwcc1R6P21HDqSBQ5WXzlP9C688Wjt/j00cffH7mtPxVxn43b27ashifE2YfT/XdfSG2c8/Ftb/Z/0r9+/KlLff+eEb/wy1zJOvk5rl/+OBKqmL+73720fxH75t1bSz1/Wun+o7dv/CuB8ra/s7tUy90fz259lwkEfz4ykYNf5E8/ZcLT9888tszn6d+bt498cj2mQvOzqud8N4/d9t37puVOaolXusc2brzbOzwpf6Hnwst2Kk8u3VuN2x/+d0zcNHHx946+8ruprv+sXnvM8+KJ67eGL/umXPz0RN/HA3XD1x7c8mpd0Ob+geyO6dde/r60dC68Zlf3bYue+DI6U8P1efe+9PmwMUrL9TkFj1wdcPLcsXF5Mjjj2zufQdcXfyDHbvW5soPBql/0bezW6vLnzg9djx0zhO8oZ/fsf3t6ol/9//q8pDr7Q83Br94i/6kj7snEKjbFLiKXp83fZ05qC6c8df3aNkLcuM9Jxq+iX5xr9D6yTt1r1f1P5/ZeOzoY58tyGz4ZMdS/7KTJz/d1e6Z/r58+YB2/pd9Hz257ZL7swbuKxPrXtsza2jO1m/9VJ01tvg/bef8n58X/tXxYOu8Idc3qi9/8LevvbR/YfihMzv/+eF3n/nz7BtldmXKpi1cHPtRC3v+L7QVisE=

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More