Compare commits

..

114 Commits

Author SHA1 Message Date
Eugene Yurtsev
0319ccd273 core[patch]: only support pydantic >= 2.9 for now (#26176)
For now we'll only support pydantic ^ 2.9. We'll relax the constraint
next week once we work around some issues with pydantic 2.7 / 2.8.
2024-09-06 18:13:17 -04:00
Eugene Yurtsev
6e2a72c218 core[patch]: Add missing cache for create_model (#26173)
It makes a big difference for performance.
2024-09-06 17:59:18 -04:00
Bagatur
9f482f4284 cherry langsmith cache fix (#26169) 2024-09-06 17:47:47 -04:00
Erick Friis
15466d89a2 infra: core remove 3.8 (#26172) 2024-09-06 14:47:16 -07:00
Eugene Yurtsev
61087b0c0d core[patch]: Fix changes to pydantic schema due to pydantic 2.8.2 -> 2.9 changes (#26166)
Minor non functional change in pydantic schema generation
2024-09-06 17:24:10 -04:00
Bagatur
b2ba4f4072 core[patch]: fix deprecated pydantic code (#26161) 2024-09-06 17:14:17 -04:00
Bagatur
b2c8f2de4c core[patch]: fix ChatPromptValueConcrete typing (#26106)
Thank you for contributing to LangChain!

- [ ] **PR title**: "package: description"
- Where "package" is whichever of langchain, community, core,
experimental, etc. is being modified. Use "docs: ..." for purely docs
changes, "templates: ..." for template 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.
2024-09-06 17:13:57 -04:00
Bagatur
6df9360e32 core[patch]: remove v1_repr (#26165)
Co-authored-by: Erick Friis <erick@langchain.dev>
2024-09-06 17:00:52 -04:00
Erick Friis
b664b3364c multiple: merge master into v0.3rc branch (#26163)
Signed-off-by: ChengZi <chen.zhang@zilliz.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
Co-authored-by: Bagatur <22008038+baskaryan@users.noreply.github.com>
Co-authored-by: Tomaz Bratanic <bratanic.tomaz@gmail.com>
Co-authored-by: ZhangShenao <15201440436@163.com>
Co-authored-by: Friso H. Kingma <fhkingma@gmail.com>
Co-authored-by: Chester Curme <chester.curme@gmail.com>
Co-authored-by: ChengZi <chen.zhang@zilliz.com>
2024-09-06 13:42:29 -07:00
Bagatur
bccc546a25 v0.3 dev releases (#26096)
branch for cutting dev releases

---------

Co-authored-by: Chester Curme <chester.curme@gmail.com>
Co-authored-by: Erick Friis <erick@langchain.dev>
2024-09-06 13:35:19 -07:00
Erick Friis
6405e7fa07 infra: ignore docs build in v0.3rc branch (#25990) 2024-09-06 13:24:13 -07:00
Erick Friis
ae24f7364d multiple: version bumps (#26159) 2024-09-06 12:37:17 -07:00
Erick Friis
81f8c2f33d infra: add pydantic to min version testing (#26152) 2024-09-06 12:09:56 -07:00
ccurme
c27703a10f core[patch]: resolve warnings (#26157)
Resolve a batch of warnings
2024-09-06 15:00:53 -04:00
ccurme
1b77063c88 openai[patch]: set protected namespaces on embeddings (#26155) 2024-09-06 13:00:41 -04:00
ccurme
b74546a458 core[patch]: add google genai to serialization (#26154) 2024-09-06 12:54:16 -04:00
Bagatur
8a3a9c8968 core[patch]: concrete prompt value test (#26128) 2024-09-05 20:49:05 -04:00
Erick Friis
776d01db49 infra: remove fail fast in v0.3rc branch (#26127) 2024-09-05 17:32:17 -07:00
Eugene Yurtsev
40b43b0bfb core[patch]: Remove some usage of .copy() in favor of .model_copy() (#26126)
Address under place where deprecated functionality is used.
2024-09-05 18:34:43 -04:00
Eugene Yurtsev
6fd4ac4283 core[patch]: Replace @validator with @model_validator in length based example selector (#26124)
Resolves another warning from usage of deprecated functionality in
pydantic 2
2024-09-05 18:26:43 -04:00
Eugene Yurtsev
f4e7cb394f core[patch]: Ignore pydantic deprecation warnings in validate_arguments (#26122)
For now, we'll use the deprecation functionality which is present until
pydantic 3.
2024-09-05 18:23:48 -04:00
Eugene Yurtsev
1ecaffab8a core[patch]: Fix regression in core (#26121)
Limited to unit testing code -- did not cause any actual issues
2024-09-05 17:41:36 -04:00
ccurme
5bbd5364f1 core[patch]: call RunnableConfigurableFields.model_rebuild() (#26118)
To fix a test in `langchain`
2024-09-05 16:59:52 -04:00
Eugene Yurtsev
e02b093d81 community[patch]: Fix more issues (#26116)
This PR resolves more type checking issues and fixes some bugs.
2024-09-05 16:31:21 -04:00
Eugene Yurtsev
0cc6584889 community[patch]: Resolve more linting issues (#26115)
Resolve a bunch of errors caught with mypy
2024-09-05 15:59:30 -04:00
Eugene Yurtsev
6e1b0d0228 community[patch]: Skip unit test that depends on langchain-aws and fix pydantic settings (#26111)
* Skip unit test that depends on langchain-aws
* fix pydantic settings
2024-09-05 15:08:34 -04:00
Eugene Yurtsev
a111098230 community[patch]: Remove usage of deprecated pydantic config option (#26107)
Remove usage of deprecated pydantic config option
2024-09-05 15:05:00 -04:00
ccurme
9e7222618b core: reduce warnings (#26108) 2024-09-05 15:04:41 -04:00
Harrison Chase
8516a03a02 langchain-community[major]: Upgrade community to pydantic 2 (#26011)
This PR upgrades langchain-community to pydantic 2.


* Most of this PR was auto-generated using code mods with gritql
(https://github.com/eyurtsev/migrate-pydantic/tree/main)
* Subsequently, some code was fixed manually due to accommodate
differences between pydantic 1 and 2

Breaking Changes:

- Use TEXTEMBED_API_KEY and TEXTEMBEB_API_URL for env variables for text
embed integrations:
cbea780492

Other changes:

- Added pydantic_settings as a required dependency for community. This
may be removed if we have enough time to convert the dependency into an
optional one.

---------

Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
Co-authored-by: Bagatur <baskaryan@gmail.com>
2024-09-05 14:07:10 -04:00
ccurme
1ad66e70dc text-splitters[major]: update core dep + drop support for python 3.8 (#26102) 2024-09-05 13:41:28 -04:00
Bagatur
76564edd3a openai[patch]: update configurable model dumps (#26101) 2024-09-05 13:26:40 -04:00
Eugene Yurtsev
1c51e1693d core[patch]: Fix issue with adapter utility for pydantic repr (#26099)
This repr will be deleted prior to release -- it's temporarily here to
make it easy to separate code changes in langchain vs. code changes
stemming from breaking changes in pydantic
2024-09-05 12:27:01 -04:00
Eugene Yurtsev
a267da6a3a core[minor]: Add type overload for secret_from_env factory (#26091)
Add type overload
2024-09-05 11:52:19 -04:00
Bagatur
8da2ace99d openai[patch]: update snapshots (#26098) 2024-09-05 11:41:14 -04:00
ccurme
e358846b39 core[patch]: add bedrock to load.mapping (#26094) 2024-09-05 10:56:46 -04:00
Eugene Yurtsev
3c598d25a6 core[minor]: Add get_input_jsonschema, get_output_jsonschema, get_config_jsonschema (#26034)
This PR adds methods to directly get the json schema for inputs,
outputs, and config.
Currently, it's delegating to the underlying pydantic implementation,
but this may be changed in the future to be independent of pydantic.
2024-09-05 10:36:42 -04:00
ccurme
e5aa0f938b mongo[major]: upgrade pydantic (#26053) 2024-09-05 09:05:41 -04:00
Bagatur
79c46319dd couchbase[patch]: rm pydantic usage (#26068) 2024-09-04 16:29:14 -07:00
ccurme
c5d4dfefc0 prompty[major]: upgrade pydantic (#26056) 2024-09-04 19:26:18 -04:00
ccurme
6e853501ec voyageai[major]: upgrade pydantic (#26070) 2024-09-04 18:59:13 -04:00
Bagatur
fd1f3ca213 exa[major]: use pydantic v2 (#26069) 2024-09-04 15:02:05 -07:00
Bagatur
567a4ce5aa box[major]: use pydantic v2 (#26067) 2024-09-04 14:51:53 -07:00
ccurme
923ce84aa7 robocorp[major]: upgrade pydantic (#26062) 2024-09-04 17:10:15 -04:00
Eugene Yurtsev
9379613132 langchain[major]: Upgrade langchain to be pydantic 2 compatible (#26050)
Upgrading the langchain package to be pydantic 2 compatible.

Had to remove some parts of unit tests in parsers that were relying on
spying on methods since that fails with pydantic 2. The unit tests don't
seem particularly good, so can be re-written at a future date.

Depends on: https://github.com/langchain-ai/langchain/pull/26057

Most of this PR was done using gritql for code mods, followed by some
fixes done manually to account for changes made by pydantic
2024-09-04 16:59:07 -04:00
Bagatur
c72a76237f cherry-pick 88e9e6b (#26063) 2024-09-04 13:50:42 -07:00
Bagatur
f9cafcbcb0 pinecone[patch]: rm pydantic lint script (#26052) 2024-09-04 13:49:09 -07:00
Bagatur
1fce5543bc poetry lock 2024-09-04 13:44:51 -07:00
Bagatur
88e9e6bf55 core,standard-tests[patch]: add Ser/Des test and update serialization mapping (#26042) 2024-09-04 13:38:03 -07:00
Bagatur
7f0dd4b182 fmt 2024-09-04 13:31:29 -07:00
Bagatur
5557b86a54 fmt 2024-09-04 13:31:29 -07:00
Bagatur
caf4ae3a45 fmt 2024-09-04 13:31:28 -07:00
Bagatur
c88b75ca6a fmt 2024-09-04 13:30:02 -07:00
Bagatur
e409a85a28 fmt 2024-09-04 13:29:24 -07:00
Bagatur
40634d441a make 2024-09-04 13:29:24 -07:00
Bagatur
1d2a503ab8 standard-tests[patch]: add Ser/Des test 2024-09-04 13:29:20 -07:00
ccurme
b924c61440 qdrant[major]: drop support for python 3.8 (#26061) 2024-09-04 16:22:54 -04:00
Eugene Yurtsev
efa10c8ef8 core[minor]: Add message chunks to AnyMessage (#26057)
Adds the chunk variant of each Message to AnyMessage.

Required for this PR:
https://github.com/langchain-ai/langchain/pull/26050/files
2024-09-04 15:36:22 -04:00
ccurme
0a6c67ce6a nomic: drop support for python 3.8 (#26055) 2024-09-04 15:30:00 -04:00
ccurme
ed771f2d2b huggingface[major]: upgrade pydantic (#26048) 2024-09-04 15:08:43 -04:00
ccurme
63ba12d8e0 milvus: drop support for python 3.8 (#26051)
to be consistent with core
2024-09-04 14:54:45 -04:00
Bagatur
f785cf029b pinecone[major]: Update to pydantic v2 (#26039) 2024-09-04 11:28:54 -07:00
ccurme
be7cd0756f ollama[major]: upgrade pydantic (#26044) 2024-09-04 13:54:52 -04:00
ccurme
51c6899850 groq[major]: upgrade pydantic (#26036) 2024-09-04 13:41:40 -04:00
ccurme
163d6fe8ef anthropic: update pydantic (#26000)
Migrated with gritql: https://github.com/eyurtsev/migrate-pydantic
2024-09-04 13:35:51 -04:00
ccurme
7cee7fbfad mistralai: update pydantic (#25995)
Migrated with gritql: https://github.com/eyurtsev/migrate-pydantic
2024-09-04 13:26:17 -04:00
ccurme
4799ad95d0 core[patch]: remove warnings from protected namespaces on RunnableSerializable (#26040) 2024-09-04 13:10:08 -04:00
Bagatur
88065d794b fmt 2024-09-04 09:52:01 -07:00
Bagatur
b27bfa6717 pinecone[major]: Update to pydantic v2 2024-09-04 09:50:39 -07:00
Bagatur
5adeaf0732 openai[major]: switch to pydantic v2 (#26001) 2024-09-04 09:18:29 -07:00
Bagatur
f9d91e19c5 fireworks[major]: switch to pydantic v2 (#26004) 2024-09-04 09:18:10 -07:00
Bagatur
4c7afb0d6c Update libs/partners/openai/langchain_openai/llms/base.py 2024-09-03 23:36:19 -07:00
Bagatur
c1ff61669d Update libs/partners/openai/langchain_openai/llms/base.py 2024-09-03 23:36:14 -07:00
Bagatur
54d6808c1e Update libs/partners/openai/langchain_openai/llms/azure.py 2024-09-03 23:36:08 -07:00
Bagatur
78468de2e5 Update libs/partners/openai/langchain_openai/llms/azure.py 2024-09-03 23:36:02 -07:00
Bagatur
76572f963b Update libs/partners/openai/langchain_openai/embeddings/base.py 2024-09-03 23:35:56 -07:00
Bagatur
c0448f27ba Update libs/partners/openai/langchain_openai/embeddings/base.py 2024-09-03 23:35:51 -07:00
Bagatur
179aaa4007 Update libs/partners/openai/langchain_openai/embeddings/azure.py 2024-09-03 23:35:43 -07:00
Bagatur
d072d592a1 Update libs/partners/openai/langchain_openai/embeddings/azure.py 2024-09-03 23:35:35 -07:00
Bagatur
78c454c130 Update libs/partners/openai/langchain_openai/chat_models/base.py 2024-09-03 23:35:30 -07:00
Bagatur
5199555c0d Update libs/partners/openai/langchain_openai/chat_models/base.py 2024-09-03 23:35:26 -07:00
Bagatur
5e31cd91a7 Update libs/partners/openai/langchain_openai/chat_models/azure.py 2024-09-03 23:35:21 -07:00
Bagatur
49a1f5dd47 Update libs/partners/openai/langchain_openai/chat_models/azure.py 2024-09-03 23:35:15 -07:00
Bagatur
d0cc9b022a Update libs/partners/fireworks/langchain_fireworks/chat_models.py 2024-09-03 23:30:56 -07:00
Bagatur
a91bd2737a Update libs/partners/fireworks/langchain_fireworks/chat_models.py 2024-09-03 23:30:49 -07:00
Bagatur
5ad2b8ce80 Merge branch 'v0.3rc' into bagatur/fireworks_0.3 2024-09-03 23:29:07 -07:00
Bagatur
b78764599b Merge branch 'v0.3rc' into bagatur/openai_attempt_2 2024-09-03 23:28:50 -07:00
Bagatur
2888e34f53 infra: remove pydantic v1 tests (#26006) 2024-09-03 23:27:52 -07:00
Bagatur
dd4418a503 rm requires 2024-09-03 23:26:13 -07:00
Bagatur
a976f2071b Merge branch 'v0.3rc' into bagatur/rm_pydantic_v1_ci 2024-09-03 19:06:22 -07:00
Eugene Yurtsev
5f98975be0 core[patch]: Fix injected args in tool signature (#25991)
- Fix injected args in tool signature
- Fix another unit test that was using the wrong namespace import in
pydantic
2024-09-03 21:53:50 -04:00
Bagatur
0529c991ce rm 2024-09-03 18:02:12 -07:00
Bagatur
954abcce59 infra: remove pydantic v1 tests 2024-09-03 18:01:34 -07:00
Bagatur
6ad515d34e Merge branch 'v0.3rc' into bagatur/fireworks_0.3 2024-09-03 17:51:46 -07:00
Bagatur
99348e1614 Merge branch 'v0.3rc' into bagatur/openai_attempt_2 2024-09-03 17:51:27 -07:00
Bagatur
2c742cc20d standard-tests[major]: use pydantic v2 (#26005) 2024-09-03 17:50:45 -07:00
Bagatur
02f87203f7 standard-tests[major]: use pydantic v2 2024-09-03 17:48:20 -07:00
Bagatur
56163481dd fmt 2024-09-03 17:46:41 -07:00
Bagatur
6aac2eeab5 fmt 2024-09-03 17:42:22 -07:00
Bagatur
559d8a4d13 fireworks[major]: switch to pydantic v2 2024-09-03 17:41:28 -07:00
Bagatur
ec9e8eb71c fmt 2024-09-03 17:24:24 -07:00
Bagatur
9399df7777 fmt 2024-09-03 16:57:42 -07:00
Bagatur
5fc1104d00 fmt 2024-09-03 16:51:14 -07:00
Bagatur
6777106fbe fmt 2024-09-03 16:50:17 -07:00
Bagatur
5f5287c3b0 fmt 2024-09-03 16:48:53 -07:00
Bagatur
615f8b0d47 openai[major]: switch to pydantic v2 2024-09-03 16:33:35 -07:00
Bagatur
9a9ab65030 merge master correctly (#25999) 2024-09-03 14:57:29 -07:00
Bagatur
241b6d2355 Revert "merge master (#25997)" (#25998) 2024-09-03 14:55:28 -07:00
Bagatur
91e09ffee5 merge master (#25997)
Co-authored-by: Dan O'Donovan <dan.odonovan@gmail.com>
Co-authored-by: Tom Daniel Grande <tomdgrande@gmail.com>
Co-authored-by: Grande <Tom.Daniel.Grande@statsbygg.no>
Co-authored-by: Erick Friis <erick@langchain.dev>
Co-authored-by: Eugene Yurtsev <eyurtsev@gmail.com>
2024-09-03 14:51:26 -07:00
Eugene Yurtsev
8e4bae351e core[major]: Drop python 3.8 support (#25996)
Drop python 3.8 support as EOL is 2024 October
2024-09-03 14:47:27 -07:00
Erick Friis
0da201c1d5 core: fix lint 0.3rc (#25993) 2024-09-03 17:13:52 -04:00
Erick Friis
29413a22e1 infra: also run lint/test on rc (#25992) 2024-09-03 14:02:49 -07:00
Eugene Yurtsev
ae5a574aa5 core[major]: Upgrade langchain-core to pydantic 2 (#25986)
This PR upgrades core to pydantic 2.

It involves a combination of manual changes together with automated code
mods using gritql.

Changes and known issues:

1. Current models override __repr__ to be consistent with pydantic 1
(this will be removed in a follow up PR)
Related:
https://github.com/langchain-ai/langchain/pull/25986/files#diff-e5bd296179b7a72fcd4ea5cfa28b145beaf787da057e6d122aa76ee0bb8132c9R74
2. Issue with decorator for BaseChatModel
(https://github.com/langchain-ai/langchain/pull/25986/files#diff-932bf3b314b268754ef640a5b8f52da96f9024fb81dd388dcd166b5713ecdf66R202)
-- cc @baskaryan
3. `name` attribute in Base Runnable does not have a default -- was
raising a pydantic warning due to override. We need to see if there's a
way to fix to avoid making a breaking change for folks with custom
runnables.
(https://github.com/langchain-ai/langchain/pull/25986/files#diff-836773d27f8565f4dd45e9d6cf828920f89991a880c098b7511e0d3bb78a8a0dR238)
4. Likely can remove hard-coded RunnableBranch name
(https://github.com/langchain-ai/langchain/pull/25986/files#diff-72894b94f70b1bfc908eb4d53f5ff90bb33bf8a4240a5e34cae48ddc62ac313aR147)
5. `model_*` namespace is reserved in pydantic. We'll need to specify
`protected_namespaces`
6. create_model does not have a cached path yet
7. get_input_schema() in many places has been updated to be explicit
about whether parameters are required or optional
8. injected tool args aren't picked up properly (losing type annotation)

For posterity the following gritql migrations were used:

```
engine marzano(0.1)
language python

or {
    `from $IMPORT import $...` where {
        $IMPORT <: contains `pydantic_v1`,
        $IMPORT => `pydantic`
    },
    `$X.update_forward_refs` => `$X.model_rebuild`,
  // This pattern still needs fixing as it fails (populate_by_name vs.
  // allow_populate_by_name)
  class_definition($name, $body) as $C where {
      $name <: `Config`,
      $body <: block($statements),
      $t = "",
      $statements <: some bubble($t) assignment(left=$x, right=$y) as $A where {    
        or {
            $x <: `allow_population_by_field_name` where {
                $t += `populate_by_name=$y,`
            },
            $t += `$x=$y,`
        }
      },
      $C => `model_config = ConfigDict($t)`,
      add_import(source="pydantic", name="ConfigDict")
  }
}

```



```
engine marzano(0.1)
language python

`@root_validator(pre=True)` as $decorator where {
    $decorator <: before function_definition($body, $return_type),
    $decorator => `@model_validator(mode="before")\n@classmethod`,
    add_import(source="pydantic", name="model_validator"),
    $return_type => `Any`
}
```

```
engine marzano(0.1)
language python

`@root_validator(pre=False, skip_on_failure=True)` as $decorator where {
    $decorator <: before function_definition($body, $parameters, $return_type) where {
        $body <: contains bubble or {
            `values["$Q"]` => `self.$Q`,
            `values.get("$Q")` => `(self.$Q or None)`,
            `values.get($Q, $...)` as $V where {
                $Q <: contains `"$QName"`,
                $V => `self.$QName`,
            },
            `return $Q` => `return self`
        }
    },
    $decorator => `@model_validator(mode="after")`,
    // Silly work around a bug in grit
    // Adding Self to pydantic and then will replace it with one from typing
    add_import(source="pydantic", name="model_validator"),
    $parameters => `self`,
    $return_type => `Self`
}

```

```
grit apply --language python '`Self` where { add_import(source="typing_extensions", name="Self")}'
```
2024-09-03 16:30:44 -04:00
Erick Friis
5a0e82c31c infra: fix 0.3rc ci check (#25988) 2024-09-03 12:20:08 -07:00
Erick Friis
8590b421c4 infra: ignore core dependents for 0.3rc (#25980) 2024-09-03 11:06:45 -07:00
1454 changed files with 92121 additions and 51215 deletions

View File

@@ -96,21 +96,25 @@ body:
attributes:
label: System Info
description: |
Please share your system info with us. Do NOT skip this step and please don't trim
the output. Most users don't include enough information here and it makes it harder
for us to help you.
Please share your system info with us.
Run the following command in your terminal and paste the output here:
"pip freeze | grep langchain"
platform (windows / linux / mac)
python version
OR if you're on a recent version of langchain-core you can paste the output of:
python -m langchain_core.sys_info
or if you have an existing python interpreter running:
from langchain_core import sys_info
sys_info.print_sys_info()
alternatively, put the entire output of `pip freeze` here.
placeholder: |
"pip freeze | grep langchain"
platform
python version
Alternatively, if you're on a recent version of langchain-core you can paste the output of:
python -m langchain_core.sys_info
These will only surface LangChain packages, don't forget to include any other relevant
packages you're using (if you're not sure what's relevant, you can paste the entire output of `pip freeze`).
validations:
required: true

View File

@@ -1,7 +1,7 @@
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, "templates: ..." for template changes, "infra: ..." for CI changes.
- Where "package" is whichever of langchain, community, core, experimental, etc. is being modified. Use "docs: ..." for purely docs changes, "templates: ..." for template changes, "infra: ..." for CI changes.
- Example: "community: add foobar LLM"

View File

@@ -2,12 +2,10 @@ import glob
import json
import os
import sys
import tomllib
from collections import defaultdict
from typing import Dict, List, Set
from pathlib import Path
import tomllib
from get_min_versions import get_min_version_from_toml
LANGCHAIN_DIRS = [
@@ -15,13 +13,12 @@ LANGCHAIN_DIRS = [
"libs/text-splitters",
"libs/langchain",
"libs/community",
"libs/experimental",
]
# when set to True, we are ignoring core dependents
# in order to be able to get CI to pass for each individual
# package that depends on core
# e.g. if you touch core, we don't then add textsplitters/etc to CI
IGNORE_CORE_DEPENDENTS = False
# for 0.3rc, we are ignoring core dependents
# in order to be able to get CI to pass for individual PRs.
IGNORE_CORE_DEPENDENTS = True
# ignored partners are removed from dependents
# but still run if directly edited
@@ -106,101 +103,44 @@ def add_dependents(dirs_to_eval: Set[str], dependents: dict) -> List[str]:
def _get_configs_for_single_dir(job: str, dir_: str) -> List[Dict[str, str]]:
if job == "test-pydantic":
return _get_pydantic_test_configs(dir_)
if dir_ == "libs/core":
py_versions = ["3.9", "3.10", "3.11", "3.12"]
return [
{"working-directory": dir_, "python-version": f"3.{v}"}
for v in range(9, 13)
]
min_python = "3.9"
max_python = "3.12"
# custom logic for specific directories
elif dir_ == "libs/partners/milvus":
if dir_ == "libs/partners/milvus":
# milvus poetry doesn't allow 3.12 because they
# declare deps in funny way
py_versions = ["3.9", "3.11"]
max_python = "3.11"
elif dir_ in ["libs/community", "libs/langchain"] and job == "extended-tests":
if dir_ in ["libs/community", "libs/langchain"] and job == "extended-tests":
# community extended test resolution in 3.12 is slow
# even in uv
py_versions = ["3.9", "3.11"]
max_python = "3.11"
elif dir_ == "libs/community" and job == "compile-integration-tests":
if dir_ == "libs/community" and job == "compile-integration-tests":
# community integration deps are slow in 3.12
py_versions = ["3.9", "3.11"]
else:
py_versions = ["3.9", "3.12"]
max_python = "3.11"
return [{"working-directory": dir_, "python-version": py_v} for py_v in py_versions]
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"]:
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)
for package in dir_poetry_lock_data["package"]:
if package["name"] == "pydantic":
dir_max_pydantic_minor = package["version"].split(".")[1]
break
core_min_pydantic_version = get_min_version_from_toml(
"./libs/core/pyproject.toml", "release", python_version, include=["pydantic"]
)["pydantic"]
core_min_pydantic_minor = (
core_min_pydantic_version.split(".")[1]
if "." in core_min_pydantic_version
else "0"
)
dir_min_pydantic_version = get_min_version_from_toml(
f"./{dir_}/pyproject.toml", "release", python_version, include=["pydantic"]
).get("pydantic", "0.0.0")
dir_min_pydantic_minor = (
dir_min_pydantic_version.split(".")[1]
if "." in dir_min_pydantic_version
else "0"
)
custom_mins = {
# depends on pydantic-settings 2.4 which requires pydantic 2.7
"libs/community": 7,
}
max_pydantic_minor = min(
int(dir_max_pydantic_minor),
int(core_max_pydantic_minor),
)
min_pydantic_minor = max(
int(dir_min_pydantic_minor),
int(core_min_pydantic_minor),
custom_mins.get(dir_, 0),
)
configs = [
{
"working-directory": dir_,
"pydantic-version": f"2.{v}.0",
"python-version": python_version,
}
for v in range(min_pydantic_minor, max_pydantic_minor + 1)
return [
{"working-directory": dir_, "python-version": min_python},
{"working-directory": dir_, "python-version": max_python},
]
return configs
def _get_configs_for_multi_dirs(
job: str, dirs_to_run: Dict[str, Set[str]], dependents: dict
job: str, dirs_to_run: List[str], dependents: dict
) -> List[Dict[str, str]]:
if job == "lint":
dirs = add_dependents(
dirs_to_run["lint"] | dirs_to_run["test"] | dirs_to_run["extended-test"],
dependents,
)
elif job in ["test", "compile-integration-tests", "dependencies", "test-pydantic"]:
elif job in ["test", "compile-integration-tests", "dependencies"]:
dirs = add_dependents(
dirs_to_run["test"] | dirs_to_run["extended-test"], dependents
)
@@ -229,7 +169,6 @@ if __name__ == "__main__":
dirs_to_run["lint"] = all_package_dirs()
dirs_to_run["test"] = all_package_dirs()
dirs_to_run["extended-test"] = set(LANGCHAIN_DIRS)
for file in files:
if any(
file.startswith(dir_)
@@ -247,7 +186,6 @@ if __name__ == "__main__":
if any(file.startswith(dir_) for dir_ in LANGCHAIN_DIRS):
# add that dir and all dirs after in LANGCHAIN_DIRS
# for extended testing
found = False
for dir_ in LANGCHAIN_DIRS:
if dir_ == "libs/core" and IGNORE_CORE_DEPENDENTS:
@@ -293,6 +231,7 @@ if __name__ == "__main__":
# we now have dirs_by_job
# todo: clean this up
map_job_to_configs = {
job: _get_configs_for_multi_dirs(job, dirs_to_run, dependents)
for job in [
@@ -301,7 +240,6 @@ if __name__ == "__main__":
"extended-tests",
"compile-integration-tests",
"dependencies",
"test-pydantic",
]
}
map_job_to_configs["test-doc-imports"] = (

View File

@@ -1,5 +1,4 @@
import sys
from typing import Optional
if sys.version_info >= (3, 11):
import tomllib
@@ -8,9 +7,6 @@ else:
import tomli as tomllib
from packaging.version import parse as parse_version
from packaging.specifiers import SpecifierSet
from packaging.version import Version
import re
MIN_VERSION_LIBS = [
@@ -19,16 +15,10 @@ MIN_VERSION_LIBS = [
"langchain",
"langchain-text-splitters",
"SQLAlchemy",
"pydantic",
]
# some libs only get checked on release because of simultaneous changes in
# multiple libs
SKIP_IF_PULL_REQUEST = [
"langchain-core",
"langchain-text-splitters",
"langchain",
"langchain-community",
]
SKIP_IF_PULL_REQUEST = ["langchain-core"]
def get_min_version(version: str) -> str:
@@ -56,13 +46,7 @@ def get_min_version(version: str) -> str:
raise ValueError(f"Unrecognized version format: {version}")
def get_min_version_from_toml(
toml_path: str,
versions_for: str,
python_version: str,
*,
include: Optional[list] = None,
):
def get_min_version_from_toml(toml_path: str, versions_for: str):
# Parse the TOML file
with open(toml_path, "rb") as file:
toml_data = tomllib.load(file)
@@ -74,26 +58,18 @@ def get_min_version_from_toml(
min_versions = {}
# Iterate over the libs in MIN_VERSION_LIBS
for lib in set(MIN_VERSION_LIBS + (include or [])):
for lib in MIN_VERSION_LIBS:
if versions_for == "pull_request" and lib in SKIP_IF_PULL_REQUEST:
# some libs only get checked on release because of simultaneous
# changes in multiple libs
# changes
continue
# Check if the lib is present in the dependencies
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"]
# Use parse_version to get the minimum supported version from version_string
min_version = get_min_version(version_string)
@@ -104,31 +80,13 @@ def get_min_version_from_toml(
return min_versions
def check_python_version(version_string, constraint_string):
"""
Check if the given Python version matches the given constraints.
:param version_string: A string representing the Python version (e.g. "3.8.5").
:param constraint_string: A string representing the package's Python version constraints (e.g. ">=3.6, <4.0").
:return: True if the version matches the constraints, False otherwise.
"""
try:
version = Version(version_string)
constraints = SpecifierSet(constraint_string)
return version in constraints
except Exception as e:
print(f"Error: {e}")
return False
if __name__ == "__main__":
# Get the TOML file path from the command line argument
toml_file = sys.argv[1]
versions_for = sys.argv[2]
python_version = sys.argv[3]
assert versions_for in ["release", "pull_request"]
# Call the function to get the minimum versions
min_versions = get_min_version_from_toml(toml_file, versions_for, python_version)
min_versions = get_min_version_from_toml(toml_file, versions_for)
print(" ".join([f"{lib}=={version}" for lib, version in min_versions.items()]))

View File

@@ -58,7 +58,6 @@ jobs:
AZURE_OPENAI_API_BASE: ${{ secrets.AZURE_OPENAI_API_BASE }}
AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_CHAT_DEPLOYMENT_NAME }}
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 }}
MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }}
@@ -68,7 +67,6 @@ jobs:
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
GOOGLE_SEARCH_API_KEY: ${{ secrets.GOOGLE_SEARCH_API_KEY }}
GOOGLE_CSE_ID: ${{ secrets.GOOGLE_CSE_ID }}
HUGGINGFACEHUB_API_TOKEN: ${{ secrets.HUGGINGFACEHUB_API_TOKEN }}
EXA_API_KEY: ${{ secrets.EXA_API_KEY }}
NOMIC_API_KEY: ${{ secrets.NOMIC_API_KEY }}
WATSONX_APIKEY: ${{ secrets.WATSONX_APIKEY }}

View File

@@ -7,6 +7,10 @@ on:
required: true
type: string
description: "From which folder this pipeline executes"
langchain-location:
required: false
type: string
description: "Relative path to the langchain library folder"
python-version:
required: true
type: string
@@ -59,6 +63,14 @@ jobs:
run: |
poetry install --with lint,typing
- name: Install langchain editable
working-directory: ${{ inputs.working-directory }}
if: ${{ inputs.langchain-location }}
env:
LANGCHAIN_LOCATION: ${{ inputs.langchain-location }}
run: |
poetry run pip install -e "$LANGCHAIN_LOCATION"
- name: Get .mypy_cache to speed up mypy
uses: actions/cache@v4
env:

View File

@@ -85,7 +85,7 @@ jobs:
path: langchain
sparse-checkout: | # this only grabs files for relevant dir
${{ inputs.working-directory }}
ref: ${{ github.ref }} # this scopes to just ref'd branch
ref: master # this scopes to just master branch
fetch-depth: 0 # this fetches entire commit history
- name: Check Tags
id: check-tags
@@ -164,7 +164,6 @@ jobs:
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_setup"
id: setup-python
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
@@ -232,8 +231,7 @@ jobs:
id: min-version
run: |
poetry run pip install packaging
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)"
min_versions="$(poetry run python $GITHUB_WORKSPACE/.github/scripts/get_min_versions.py pyproject.toml release)"
echo "min-versions=$min_versions" >> "$GITHUB_OUTPUT"
echo "min-versions=$min_versions"
@@ -269,14 +267,12 @@ jobs:
AZURE_OPENAI_API_BASE: ${{ secrets.AZURE_OPENAI_API_BASE }}
AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_CHAT_DEPLOYMENT_NAME }}
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 }}
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}
GOOGLE_SEARCH_API_KEY: ${{ secrets.GOOGLE_SEARCH_API_KEY }}
GOOGLE_CSE_ID: ${{ secrets.GOOGLE_CSE_ID }}
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
HUGGINGFACEHUB_API_TOKEN: ${{ secrets.HUGGINGFACEHUB_API_TOKEN }}
EXA_API_KEY: ${{ secrets.EXA_API_KEY }}
NOMIC_API_KEY: ${{ secrets.NOMIC_API_KEY }}
WATSONX_APIKEY: ${{ secrets.WATSONX_APIKEY }}
@@ -294,6 +290,7 @@ jobs:
VOYAGE_API_KEY: ${{ secrets.VOYAGE_API_KEY }}
UPSTAGE_API_KEY: ${{ secrets.UPSTAGE_API_KEY }}
FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }}
UNSTRUCTURED_API_KEY: ${{ secrets.UNSTRUCTURED_API_KEY }}
run: make integration_tests
working-directory: ${{ inputs.working-directory }}

View File

@@ -7,6 +7,10 @@ on:
required: true
type: string
description: "From which folder this pipeline executes"
langchain-location:
required: false
type: string
description: "Relative path to the langchain library folder"
python-version:
required: true
type: string
@@ -27,41 +31,29 @@ jobs:
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_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
- name: Install langchain editable
working-directory: ${{ inputs.working-directory }}
if: ${{ inputs.langchain-location }}
env:
LANGCHAIN_LOCATION: ${{ inputs.langchain-location }}
run: |
poetry run pip install -e "$LANGCHAIN_LOCATION"
- name: Run core tests
shell: bash
run: |
make test
- name: Get minimum versions
working-directory: ${{ inputs.working-directory }}
id: min-version
shell: bash
run: |
poetry run pip install packaging tomli
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)"
echo "min-versions=$min_versions" >> "$GITHUB_OUTPUT"
echo "min-versions=$min_versions"
- name: Run unit tests with minimum dependency versions
if: ${{ steps.min-version.outputs.min-versions != '' }}
env:
MIN_VERSIONS: ${{ steps.min-version.outputs.min-versions }}
run: |
poetry run pip install $MIN_VERSIONS
make tests
working-directory: ${{ inputs.working-directory }}
- name: Ensure the tests did not create any additional files
shell: bash
run: |
@@ -74,3 +66,20 @@ jobs:
# and `set -e` above will cause the step to fail.
echo "$STATUS" | grep 'nothing to commit, working tree clean'
- name: Get minimum versions
working-directory: ${{ inputs.working-directory }}
id: min-version
run: |
poetry run pip install packaging tomli
min_versions="$(poetry run python $GITHUB_WORKSPACE/.github/scripts/get_min_versions.py pyproject.toml pull_request)"
echo "min-versions=$min_versions" >> "$GITHUB_OUTPUT"
echo "min-versions=$min_versions"
- name: Run unit tests with minimum dependency versions
if: ${{ steps.min-version.outputs.min-versions != '' }}
env:
MIN_VERSIONS: ${{ steps.min-version.outputs.min-versions }}
run: |
poetry run pip install --force-reinstall $MIN_VERSIONS --editable .
make tests
working-directory: ${{ inputs.working-directory }}

View File

@@ -31,7 +31,7 @@ jobs:
- name: Install langchain editable
run: |
poetry run pip install langchain-experimental -e libs/core libs/langchain libs/community
poetry run pip install -e libs/core libs/langchain libs/community libs/experimental
- name: Check doc imports
shell: bash

View File

@@ -1,64 +0,0 @@
name: test pydantic intermediate versions
on:
workflow_call:
inputs:
working-directory:
required: true
type: string
description: "From which folder this pipeline executes"
python-version:
required: false
type: string
description: "Python version to use"
default: "3.11"
pydantic-version:
required: true
type: string
description: "Pydantic version to test."
env:
POETRY_VERSION: "1.7.1"
jobs:
build:
defaults:
run:
working-directory: ${{ inputs.working-directory }}
runs-on: ubuntu-latest
name: "make test # pydantic: ~=${{ inputs.pydantic-version }}, python: ${{ inputs.python-version }}, "
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ inputs.python-version }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_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
- name: Overwrite pydantic version
shell: bash
run: poetry run pip install pydantic~=${{ inputs.pydantic-version }}
- name: Run core tests
shell: bash
run: |
make test
- name: Ensure the tests did not create any additional files
shell: bash
run: |
set -eu
STATUS="$(git status)"
echo "$STATUS"
# grep will exit non-zero if the target message isn't found,
# and `set -e` above will cause the step to fail.
echo "$STATUS" | grep 'nothing to commit, working tree clean'

View File

@@ -1,153 +0,0 @@
name: API docs build
on:
workflow_dispatch:
schedule:
- cron: '0 13 * * *'
env:
POETRY_VERSION: "1.8.1"
PYTHON_VERSION: "3.11"
jobs:
build:
runs-on: ubuntu-latest
permissions: write-all
steps:
- uses: actions/checkout@v4
with:
path: langchain
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-api-docs-html
path: langchain-api-docs-html
token: ${{ secrets.TOKEN_GITHUB_API_DOCS_HTML }}
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-google
path: langchain-google
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-datastax
path: langchain-datastax
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-nvidia
path: langchain-nvidia
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-cohere
path: langchain-cohere
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-elastic
path: langchain-elastic
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-postgres
path: langchain-postgres
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-aws
path: langchain-aws
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-weaviate
path: langchain-weaviate
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-ai21
path: langchain-ai21
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-together
path: langchain-together
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-experimental
path: langchain-experimental
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-milvus
path: langchain-milvus
- uses: actions/checkout@v4
with:
repository: langchain-ai/langchain-unstructured
path: langchain-unstructured
- name: Set Git config
working-directory: langchain
run: |
git config --local user.email "actions@github.com"
git config --local user.name "Github Actions"
- name: Move libs
run: |
rm -rf \
langchain/libs/partners/google-genai \
langchain/libs/partners/google-vertexai \
langchain/libs/partners/astradb \
langchain/libs/partners/nvidia-trt \
langchain/libs/partners/nvidia-ai-endpoints \
langchain/libs/partners/cohere \
langchain/libs/partners/elasticsearch \
langchain/libs/partners/upstage \
langchain/libs/partners/ai21 \
langchain/libs/partners/together \
langchain/libs/standard-tests \
langchain/libs/experimental \
langchain/libs/partners/milvus \
langchain/libs/partners/unstructured
mv langchain-google/libs/genai langchain/libs/partners/google-genai
mv langchain-google/libs/vertexai langchain/libs/partners/google-vertexai
mv langchain-google/libs/community langchain/libs/partners/google-community
# mv langchain-datastax/libs/astradb langchain/libs/partners/astradb
# mv langchain-nvidia/libs/ai-endpoints langchain/libs/partners/nvidia-ai-endpoints
mv langchain-cohere/libs/cohere langchain/libs/partners/cohere
mv langchain-elastic/libs/elasticsearch langchain/libs/partners/elasticsearch
mv langchain-postgres langchain/libs/partners/postgres
mv langchain-aws/libs/aws langchain/libs/partners/aws
mv langchain-weaviate/libs/weaviate langchain/libs/partners/weaviate
mv langchain-ai21/libs/ai21 langchain/libs/partners/ai21
mv langchain-together/libs/together langchain/libs/partners/together
mv langchain-experimental/libs/experimental langchain/libs/experimental
mv langchain-milvus/libs/milvus langchain/libs/partners/milvus
mv langchain-unstructured/libs/unstructured langchain/libs/partners/unstructured
- name: Rm old html
run:
rm -rf langchain-api-docs-html/api_reference_build/html
- name: Set up Python ${{ env.PYTHON_VERSION }} + Poetry ${{ env.POETRY_VERSION }}
uses: "./langchain/.github/actions/poetry_setup"
with:
python-version: ${{ env.PYTHON_VERSION }}
poetry-version: ${{ env.POETRY_VERSION }}
cache-key: api-docs
working-directory: langchain
- name: Install dependencies
working-directory: langchain
run: |
python -m pip install -U uv
python -m uv pip install --upgrade --no-cache-dir pip setuptools
# skip airbyte and ibm due to pandas dependency issue
python -m uv pip install $(ls ./libs/partners | grep -vE "airbyte|ibm" | xargs -I {} echo "./libs/partners/{}")
python -m uv pip install libs/core libs/langchain libs/text-splitters libs/community libs/experimental
python -m uv pip install -r docs/api_reference/requirements.txt
- name: Build docs
working-directory: langchain
run: |
python docs/api_reference/create_api_rst.py
python -m sphinx -T -E -b html -d ../langchain-api-docs-html/_build/doctrees -c docs/api_reference docs/api_reference ../langchain-api-docs-html/api_reference_build/html -j auto
python docs/api_reference/scripts/custom_formatter.py ../langchain-api-docs-html/api_reference_build/html
# Default index page is blank so we copy in the actual home page.
cp ../langchain-api-docs-html/api_reference_build/html/{reference,index}.html
rm -rf ../langchain-api-docs-html/_build/
# https://github.com/marketplace/actions/add-commit
- uses: EndBug/add-and-commit@v9
with:
cwd: langchain-api-docs-html
message: 'Update API docs build'

View File

@@ -31,7 +31,6 @@ jobs:
uses: Ana06/get-changed-files@v2.2.0
- id: set-matrix
run: |
python -m pip install packaging
python .github/scripts/check_diff.py ${{ steps.files.outputs.all }} >> $GITHUB_OUTPUT
outputs:
lint: ${{ steps.set-matrix.outputs.lint }}
@@ -40,7 +39,6 @@ jobs:
compile-integration-tests: ${{ steps.set-matrix.outputs.compile-integration-tests }}
dependencies: ${{ steps.set-matrix.outputs.dependencies }}
test-doc-imports: ${{ steps.set-matrix.outputs.test-doc-imports }}
test-pydantic: ${{ steps.set-matrix.outputs.test-pydantic }}
lint:
name: cd ${{ matrix.job-configs.working-directory }}
needs: [ build ]
@@ -69,20 +67,6 @@ jobs:
python-version: ${{ matrix.job-configs.python-version }}
secrets: inherit
test-pydantic:
name: cd ${{ matrix.job-configs.working-directory }}
needs: [ build ]
if: ${{ needs.build.outputs.test-pydantic != '[]' }}
strategy:
matrix:
job-configs: ${{ fromJson(needs.build.outputs.test-pydantic) }}
fail-fast: false
uses: ./.github/workflows/_test_pydantic.yml
with:
working-directory: ${{ matrix.job-configs.working-directory }}
pydantic-version: ${{ matrix.job-configs.pydantic-version }}
secrets: inherit
test-doc-imports:
needs: [ build ]
if: ${{ needs.build.outputs.test-doc-imports != '[]' }}
@@ -157,7 +141,7 @@ jobs:
echo "$STATUS" | grep 'nothing to commit, working tree clean'
ci_success:
name: "CI Success"
needs: [build, lint, test, compile-integration-tests, extended-tests, test-doc-imports, test-pydantic]
needs: [build, lint, test, compile-integration-tests, extended-tests, test-doc-imports]
if: |
always()
runs-on: ubuntu-latest

View File

@@ -3,8 +3,9 @@ name: CI / cd . / make spell_check
on:
push:
branches: [master, v0.1, v0.2]
branches: [master, v0.1]
pull_request:
branches: [master, v0.1]
permissions:
contents: read

View File

@@ -1,63 +0,0 @@
name: Run notebooks
on:
workflow_dispatch:
inputs:
python_version:
description: 'Python version'
required: false
default: '3.11'
working-directory:
description: 'Working directory or subset (e.g., docs/docs/tutorials/llm_chain.ipynb)'
required: false
default: 'all'
schedule:
- cron: '0 13 * * *'
env:
POETRY_VERSION: "1.7.1"
jobs:
build:
runs-on: ubuntu-latest
name: "Test docs"
steps:
- uses: actions/checkout@v4
- name: Set up Python + Poetry ${{ env.POETRY_VERSION }}
uses: "./.github/actions/poetry_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: Install dependencies
run: |
pip install -e libs/core
pip install -e libs/langchain
pip install -e libs/community
pip install --upgrade langchain-experimental
pip install -e libs//partners/anthropic
pip install -e libs//partners/chroma
pip install -e libs//partners/openai
pip install -e libs//partners/mistralai
pip install jupyter langgraph click pypdf vcrpy
- name: Pre-download tiktoken files
run: |
python docs/scripts/download_tiktoken.py
- name: Prepare notebooks
run: |
python docs/scripts/prepare_notebooks_for_ci.py --comment-install-cells
- name: Run notebooks
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }}
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
TAVILY_API_KEY: ${{ secrets.TAVILY_API_KEY }}
run: |
./docs/scripts/execute_notebooks.sh ${{ github.event.inputs.working-directory || 'all' }}

View File

@@ -86,12 +86,10 @@ jobs:
AZURE_OPENAI_API_BASE: ${{ secrets.AZURE_OPENAI_API_BASE }}
AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_CHAT_DEPLOYMENT_NAME }}
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 }}
FIREWORKS_API_KEY: ${{ secrets.FIREWORKS_API_KEY }}
GROQ_API_KEY: ${{ secrets.GROQ_API_KEY }}
HUGGINGFACEHUB_API_TOKEN: ${{ secrets.HUGGINGFACEHUB_API_TOKEN }}
MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }}
COHERE_API_KEY: ${{ secrets.COHERE_API_KEY }}
NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }}

View File

@@ -36,6 +36,7 @@ api_docs_build:
API_PKG ?= text-splitters
api_docs_quick_preview:
poetry run pip install "pydantic<2"
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/

View File

@@ -38,8 +38,8 @@ conda install langchain -c conda-forge
For these applications, LangChain simplifies the entire application lifecycle:
- **Open-source libraries**: Build your applications using LangChain's open-source [building blocks](https://python.langchain.com/docs/concepts/#langchain-expression-language-lcel), [components](https://python.langchain.com/docs/concepts/), and [third-party integrations](https://python.langchain.com/docs/integrations/platforms/).
Use [LangGraph](https://langchain-ai.github.io/langgraph/) to build stateful agents with first-class streaming and human-in-the-loop support.
- **Open-source libraries**: Build your applications using LangChain's open-source [building blocks](https://python.langchain.com/v0.2/docs/concepts#langchain-expression-language-lcel), [components](https://python.langchain.com/v0.2/docs/concepts), and [third-party integrations](https://python.langchain.com/v0.2/docs/integrations/platforms/).
Use [LangGraph](/docs/concepts/#langgraph) to build stateful agents with first-class streaming and human-in-the-loop support.
- **Productionization**: Inspect, monitor, and evaluate your apps with [LangSmith](https://docs.smith.langchain.com/) so that you can constantly optimize and deploy with confidence.
- **Deployment**: Turn your LangGraph applications into production-ready APIs and Assistants with [LangGraph Cloud](https://langchain-ai.github.io/langgraph/cloud/).
@@ -49,7 +49,7 @@ For these applications, LangChain simplifies the entire application lifecycle:
- **`langchain-community`**: Third party integrations.
- Some integrations have been further split into **partner packages** that only rely on **`langchain-core`**. Examples include **`langchain_openai`** and **`langchain_anthropic`**.
- **`langchain`**: Chains, agents, and retrieval strategies that make up an application's cognitive architecture.
- **[`LangGraph`](https://langchain-ai.github.io/langgraph/)**: A library for building 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/)**: A library for building 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.
### Productionization:
@@ -65,20 +65,20 @@ For these applications, LangChain simplifies the entire application lifecycle:
**❓ Question answering with RAG**
- [Documentation](https://python.langchain.com/docs/tutorials/rag/)
- [Documentation](https://python.langchain.com/v0.2/docs/tutorials/rag/)
- End-to-end Example: [Chat LangChain](https://chat.langchain.com) and [repo](https://github.com/langchain-ai/chat-langchain)
**🧱 Extracting structured output**
- [Documentation](https://python.langchain.com/docs/tutorials/extraction/)
- [Documentation](https://python.langchain.com/v0.2/docs/tutorials/extraction/)
- End-to-end Example: [SQL Llama2 Template](https://github.com/langchain-ai/langchain-extract/)
**🤖 Chatbots**
- [Documentation](https://python.langchain.com/docs/tutorials/chatbot/)
- [Documentation](https://python.langchain.com/v0.2/docs/tutorials/chatbot/)
- End-to-end Example: [Web LangChain (web researcher chatbot)](https://weblangchain.vercel.app) and [repo](https://github.com/langchain-ai/weblangchain)
And much more! Head to the [Tutorials](https://python.langchain.com/docs/tutorials/) section of the docs for more.
And much more! Head to the [Tutorials](https://python.langchain.com/v0.2/docs/tutorials/) section of the docs for more.
## 🚀 How does LangChain help?
@@ -93,10 +93,10 @@ Off-the-shelf chains make it easy to get started. Components make it easy to cus
LCEL is a key part of LangChain, allowing you to build and organize chains of processes in a straightforward, declarative manner. It was designed to support taking prototypes directly into production without needing to alter any code. This means you can use LCEL to set up everything from basic "prompt + LLM" setups to intricate, multi-step workflows.
- **[Overview](https://python.langchain.com/docs/concepts/#langchain-expression-language-lcel)**: LCEL and its benefits
- **[Interface](https://python.langchain.com/docs/concepts/#runnable-interface)**: The standard Runnable interface for LCEL objects
- **[Primitives](https://python.langchain.com/docs/how_to/#langchain-expression-language-lcel)**: More on the primitives LCEL includes
- **[Cheatsheet](https://python.langchain.com/docs/how_to/lcel_cheatsheet/)**: Quick overview of the most common usage patterns
- **[Overview](https://python.langchain.com/v0.2/docs/concepts/#langchain-expression-language-lcel)**: LCEL and its benefits
- **[Interface](https://python.langchain.com/v0.2/docs/concepts/#runnable-interface)**: The standard Runnable interface for LCEL objects
- **[Primitives](https://python.langchain.com/v0.2/docs/how_to/#langchain-expression-language-lcel)**: More on the primitives LCEL includes
- **[Cheatsheet](https://python.langchain.com/v0.2/docs/how_to/lcel_cheatsheet/)**: Quick overview of the most common usage patterns
## Components
@@ -104,24 +104,24 @@ Components fall into the following **modules**:
**📃 Model I/O**
This includes [prompt management](https://python.langchain.com/docs/concepts/#prompt-templates), [prompt optimization](https://python.langchain.com/docs/concepts/#example-selectors), a generic interface for [chat models](https://python.langchain.com/docs/concepts/#chat-models) and [LLMs](https://python.langchain.com/docs/concepts/#llms), and common utilities for working with [model outputs](https://python.langchain.com/docs/concepts/#output-parsers).
This includes [prompt management](https://python.langchain.com/v0.2/docs/concepts/#prompt-templates), [prompt optimization](https://python.langchain.com/v0.2/docs/concepts/#example-selectors), a generic interface for [chat models](https://python.langchain.com/v0.2/docs/concepts/#chat-models) and [LLMs](https://python.langchain.com/v0.2/docs/concepts/#llms), and common utilities for working with [model outputs](https://python.langchain.com/v0.2/docs/concepts/#output-parsers).
**📚 Retrieval**
Retrieval Augmented Generation involves [loading data](https://python.langchain.com/docs/concepts/#document-loaders) from a variety of sources, [preparing it](https://python.langchain.com/docs/concepts/#text-splitters), then [searching over (a.k.a. retrieving from)](https://python.langchain.com/docs/concepts/#retrievers) it for use in the generation step.
Retrieval Augmented Generation involves [loading data](https://python.langchain.com/v0.2/docs/concepts/#document-loaders) from a variety of sources, [preparing it](https://python.langchain.com/v0.2/docs/concepts/#text-splitters), then [searching over (a.k.a. retrieving from)](https://python.langchain.com/v0.2/docs/concepts/#retrievers) it for use in the generation step.
**🤖 Agents**
Agents allow an LLM autonomy over how a task is accomplished. Agents make decisions about which Actions to take, then take that Action, observe the result, and repeat until the task is complete. LangChain provides a [standard interface for agents](https://python.langchain.com/docs/concepts/#agents), along with [LangGraph](https://github.com/langchain-ai/langgraph) for building custom agents.
Agents allow an LLM autonomy over how a task is accomplished. Agents make decisions about which Actions to take, then take that Action, observe the result, and repeat until the task is complete. LangChain provides a [standard interface for agents](https://python.langchain.com/v0.2/docs/concepts/#agents), along with [LangGraph](https://github.com/langchain-ai/langgraph) for building custom agents.
## 📖 Documentation
Please see [here](https://python.langchain.com) for full documentation, which includes:
- [Introduction](https://python.langchain.com/docs/introduction/): Overview of the framework and the structure of the docs.
- [Introduction](https://python.langchain.com/v0.2/docs/introduction/): Overview of the framework and the structure of the docs.
- [Tutorials](https://python.langchain.com/docs/use_cases/): If you're looking to build something specific or are more of a hands-on learner, check out our tutorials. This is the best place to get started.
- [How-to guides](https://python.langchain.com/docs/how_to/): Answers to “How do I….?” type questions. These guides are goal-oriented and concrete; they're meant to help you complete a specific task.
- [Conceptual guide](https://python.langchain.com/docs/concepts/): Conceptual explanations of the key parts of the framework.
- [How-to guides](https://python.langchain.com/v0.2/docs/how_to/): Answers to “How do I….?” type questions. These guides are goal-oriented and concrete; they're meant to help you complete a specific task.
- [Conceptual guide](https://python.langchain.com/v0.2/docs/concepts/): Conceptual explanations of the key parts of the framework.
- [API Reference](https://api.python.langchain.com): Thorough documentation of every class and method.
## 🌐 Ecosystem
@@ -134,7 +134,7 @@ Please see [here](https://python.langchain.com) for full documentation, which in
As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
For detailed information on how to contribute, see [here](https://python.langchain.com/docs/contributing/).
For detailed information on how to contribute, see [here](https://python.langchain.com/v0.2/docs/contributing/).
## 🌟 Contributors

View File

@@ -90,8 +90,7 @@
"import os\n",
"from getpass import getpass\n",
"\n",
"if \"OPENAI_API_KEY\" not in os.environ:\n",
" os.environ[\"OPENAI_API_KEY\"] = getpass()\n",
"os.environ[\"OPENAI_API_KEY\"] = getpass()\n",
"# Please manually enter OpenAI Key"
]
},

View File

@@ -33,8 +33,8 @@ install-py-deps:
python3 -m venv .venv
$(PYTHON) -m pip install --upgrade pip
$(PYTHON) -m pip install --upgrade uv
$(PYTHON) -m uv pip install --pre -r vercel_requirements.txt
$(PYTHON) -m uv pip install --pre --editable $(PARTNER_DEPS_LIST)
$(PYTHON) -m uv pip install -r vercel_requirements.txt
$(PYTHON) -m uv pip install --editable $(PARTNER_DEPS_LIST)
generate-files:
mkdir -p $(INTERMEDIATE_DIR)
@@ -46,7 +46,7 @@ generate-files:
$(PYTHON) scripts/partner_pkg_table.py $(INTERMEDIATE_DIR)
curl https://raw.githubusercontent.com/langchain-ai/langserve/main/README.md | sed 's/<=/\&lt;=/g' > $(INTERMEDIATE_DIR)/langserve.md
wget -q https://raw.githubusercontent.com/langchain-ai/langserve/main/README.md -O $(INTERMEDIATE_DIR)/langserve.md
$(PYTHON) scripts/resolve_local_links.py $(INTERMEDIATE_DIR)/langserve.md https://github.com/langchain-ai/langserve/tree/main/
copy-infra:
@@ -65,7 +65,7 @@ render:
$(PYTHON) scripts/notebook_convert.py $(INTERMEDIATE_DIR) $(OUTPUT_NEW_DOCS_DIR)
md-sync:
rsync -avmq --include="*/" --include="*.mdx" --include="*.md" --include="*.png" --include="*/_category_.yml" --exclude="*" $(INTERMEDIATE_DIR)/ $(OUTPUT_NEW_DOCS_DIR)
rsync -avm --include="*/" --include="*.mdx" --include="*.md" --include="*.png" --include="*/_category_.yml" --exclude="*" $(INTERMEDIATE_DIR)/ $(OUTPUT_NEW_DOCS_DIR)
append-related:
$(PYTHON) scripts/append_related_links.py $(OUTPUT_NEW_DOCS_DIR)
@@ -82,10 +82,14 @@ vercel-build: install-vercel-deps build generate-references
mv $(OUTPUT_NEW_DOCS_DIR) docs
rm -rf build
mkdir static/api_reference
git clone --depth=1 https://github.com/langchain-ai/langchain-api-docs-html.git
mv langchain-api-docs-html/api_reference_build/html/* static/api_reference/
rm -rf langchain-api-docs-html
git clone --depth=1 https://github.com/baskaryan/langchain-api-docs-build.git
mv langchain-api-docs-build/api_reference_build/html/* static/api_reference/
rm -rf langchain-api-docs-build
NODE_OPTIONS="--max-old-space-size=5000" yarn run docusaurus build
mv build v0.2
mkdir build
mv v0.2 build
mv build/v0.2/404.html build
start:
cd $(OUTPUT_NEW_DIR) && yarn && yarn start --port=$(PORT)

View File

@@ -26,6 +26,7 @@ from sphinx.util.docutils import SphinxDirective
_DIR = Path(__file__).parent.absolute()
sys.path.insert(0, os.path.abspath("."))
sys.path.insert(0, os.path.abspath("../../libs/langchain"))
sys.path.insert(0, os.path.abspath("../../libs/experimental"))
with (_DIR.parents[1] / "libs" / "langchain" / "pyproject.toml").open("r") as f:
data = toml.load(f)

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
autodoc_pydantic>=2,<3
sphinx>=8,<9
autodoc_pydantic>=1,<2
sphinx<=7
myst-parser>=3
sphinx-autobuild>=2024
pydata-sphinx-theme>=0.15
@@ -8,4 +8,4 @@ myst-nb>=1.1.1
pyyaml
sphinx-design
sphinx-copybutton
beautifulsoup4
beautifulsoup4

View File

@@ -17,10 +17,7 @@ def process_toc_h3_elements(html_content: str) -> str:
# Process each element
for element in toc_h3_elements:
try:
element = element.a.code.span
except Exception:
continue
element = element.a.code.span
# Get the text content of the element
content = element.get_text()

View File

@@ -15,7 +15,7 @@
:member-order: groupwise
:show-inheritance: True
:special-members: __call__
:exclude-members: construct, copy, dict, from_orm, parse_file, parse_obj, parse_raw, schema, schema_json, update_forward_refs, validate, json, is_lc_serializable, to_json, to_json_not_implemented, lc_secrets, lc_attributes, lc_id, get_lc_namespace, model_construct, model_copy, model_dump, model_dump_json, model_parametrized_name, model_post_init, model_rebuild, model_validate, model_validate_json, model_validate_strings, model_extra, model_fields_set, model_json_schema
:exclude-members: construct, copy, dict, from_orm, parse_file, parse_obj, parse_raw, schema, schema_json, update_forward_refs, validate, json, is_lc_serializable, to_json, to_json_not_implemented, lc_secrets, lc_attributes, lc_id, get_lc_namespace
{% block attributes %}

View File

@@ -15,7 +15,7 @@
:member-order: groupwise
:show-inheritance: True
:special-members: __call__
:exclude-members: construct, copy, dict, from_orm, parse_file, parse_obj, parse_raw, schema, schema_json, update_forward_refs, validate, json, is_lc_serializable, to_json_not_implemented, lc_secrets, lc_attributes, lc_id, get_lc_namespace, astream_log, transform, atransform, get_output_schema, get_prompts, config_schema, map, pick, pipe, InputType, OutputType, config_specs, output_schema, get_input_schema, get_graph, get_name, input_schema, name, assign, as_tool, get_config_jsonschema, get_input_jsonschema, get_output_jsonschema, model_construct, model_copy, model_dump, model_dump_json, model_parametrized_name, model_post_init, model_rebuild, model_validate, model_validate_json, model_validate_strings, to_json, model_extra, model_fields_set, model_json_schema, predict, apredict, predict_messages, apredict_messages, generate, generate_prompt, agenerate, agenerate_prompt, call_as_llm
:exclude-members: construct, copy, dict, from_orm, parse_file, parse_obj, parse_raw, schema, schema_json, update_forward_refs, validate, json, is_lc_serializable, to_json_not_implemented, lc_secrets, lc_attributes, lc_id, get_lc_namespace, astream_log, transform, atransform, get_output_schema, get_prompts, config_schema, map, pick, pipe, with_listeners, with_alisteners, with_config, with_fallbacks, with_types, with_retry, InputType, OutputType, config_specs, output_schema, get_input_schema, get_graph, get_name, input_schema, name, bind, assign, as_tool
.. NOTE:: {{objname}} implements the standard :py:class:`Runnable Interface <langchain_core.runnables.base.Runnable>`. 🏃

View File

@@ -1 +0,0 @@
eNqFVW1sU1UYBrcfhgQlEhMlRg8NEBN229vbj63DKGNzOnRu0IqAWebpuaftZbf3XM85d1u3LIQh0YREcxMTEzXRSGmxzI0JBAySaBCjBH/rMEr4YdQoGn+YqInO99y1MGTB/mhOz/u8X8/7vKeT1WHKhcWc5VOWIynHRMIP4U9WOX3eo0K+UClSWWBmub8vnTnkcWtufUFKV7RHIti1wtiRBc5ci4QJK0aGo5EiFQLnqShnmVm6tPy38VARjw5KNkQdEWpHUd2It6BQAwU3z46HOLMpnEKeoDwEVsKgFEeqq4K1NjQxoDyYSW11Q2zsmVSLaYI5DpWaARF1w0gpR8mYXY/p4GIQU+Jhyy4NCoo5KQxyKjxbisE94KwcTCoIt1zVswJ3oAUcok7ecihiYClaY9REOcYRdOhyWoBGrGHagjAhHsdSnRwTSe4JCcB6hjB6WtCcZweOI+CDSsxDDgWEZOAgRihHAcGKboSzzJMI4nHoG9Fh+IYQPY4Lt6LAPNtEWYpwozxw5KWwasBSkEFBCrSIoYPxkAvToFxaAbfjoQAZnP7T6uJIqiSbsSHkuQGLJTegTkhuOfnQxATcKTVYnJqK3HrQgUVQlt1DiQTowES1QLEJmnqlXGBC+rM3qWQGiKOu1KhDmAkJ/PfyY5bbgkyas4HOGlFzDWTo14YodTVsA9+VBS//GHZd2yJY2SNqjFN1tWiqlpvNNSUqDbTmSP9UR6OOSH8JRO0gPRyLh41jo5qQ2HJsUKVmYyip4gb2M4sNLiZDEEerL4xfWXCeXoxhwj/ci0lf+oaQimn/MObFZPz44nvuOaAv6lc7+29OVzdeTxcLR6Ph1tkbAouSQ/zDOWwLOnuN5GsuNdiNmKYnNT063WDJBmnLgn8onmo9Alp1QX10fwVCSk9MlmEi9OJn1fp6vtP3RGOa3y67q9wF0/HPdnOrBRmtKE1dpHYPRZPterRdb0OP9WamOutpMksOYzbDQfo5GMijjeFXScFzhqhZ61xy7HOh622pZbNhH6VWf5tgWOqnX47ruj634ZZIDgtiOSpjOZZKpf4nLjBDpX9C9afpKc1ozSx0mYjvnkNLeS48cPV6KqoeqGjdLZDX62mg0S3RS9ejt+2u1YvWLNP/EM6DejS9Q+R6jQQpxLaYu2h/b7JrqMtJnBzViM08U5PwylMtEMSo9OdQnEQTRipptMbNeLYtnkglcjgWTyaTuqEn4/HsoWEL+7VoOIryjOVtOtPZrXVieHK0dCAbv9q166mO3p7OqZ3adpZlwF8GA88Oc2glTTnI0a8FqWHBOa2A+/aOXf6JNpIi2QSNJUjMMHI5om2BvWkI6JpAyup1CP5N9lUWXqRPvnjg4O3Lgk/Tky9/s/Xc5lUH3jovzu6TX6/45ezOI6OREP78jrW52OrY8edWlkZ6rI+PNl3+80rLD6tv6776+tjIuvvPXKEPP3Lnr6/NnBoYO3l5+sD+gQ2XtpfXbJo811Jq2nbymYO2e8/6bd2b3yA9masb7869f+HLf/rH55tf3PHVSyuvkA/61vxtf3e0+c0H86WP/vrx7Q3pWDqDm1dVP71w8fS9Wy8fOL2+OZza9OpPM8fe/v7dncRYtXFy70Ntj8/O/3x6ei/UPT/ftOz8H/et+B3O/wLqW+ZT

View File

@@ -1 +0,0 @@
eNqFVX1sU1UU3yBREIiJX4kY4VLY0GSve6/tuo8/MKVjfIxtyAYOcJbb927Xt76++3jvvm2lzAjjDwN+PWUQoghhXWeaMjYYERE1zkxZ+HCJBDIiQqKJMRElUYMxmnle18KQBftHc3vP75x7zu/8zumO3laiGzJV89OyyoiORQY/DGtHr062mMRgO5NRwsJUSqypq2/oNnV5rCDMmGZUFBdjTXZilYV1qsmiU6TR4lahOEoMAzcTIxGkUuxK/t9xRxS3BxiNENVwVCCBd3mKkCOHgptNcYdOFQInh2kQ3QFWkUIqKrOv2sKYGSgaQyqOkuccHU22M5WIYhtFBZsS4dycQVWVMM4FwXmXq9yOwShVsuFtVxvOcKusxAIGwboYDujEMBVmBFrA2XaQiCHqsmaXb4N9aAKHiNosqwRRsETlrURCIaojKFbTSRhqkltJEcKiaOqY2SdVQkw3DQbA7AtOtM4gIVPJOLaBD4pRE6kEEIyCg9FGdJTh2mYe4SA1GYJ4OlCASCt8Q4iVqga3RpiaioSCBOFceuCox5x2AbINCRhimEQxVBB3aNAYojM5Q3PckUFmTv8pdXIkOyWF0ggytQyLMS1DncF0WW12dHTAnS0MWSeSTW42aNMkKA22EJEBtKmjN0ywBPJ6MxGmBrMG7hHMUSCOaIwjqkgleMA60rxV1oqQREIK0JkS7b5mFGmlIoRoHFaA7+SEl9WPNU2RRWzbi+02prPC4exc7jWnbH1xIDuVWR/6cnkUr4mBvlXEO90ep6u/nTMYllUFBMopGFJKahn7x5MNGhYjEIfLzo6VnHDum4yhhtVTg8W6+rtC2kxbPViPej3HJ9/rpgr6Ilavf829z2WNd55zOwXBWTpwV2AjpopWTwgrBhm4TfJtlxTMhpvjvRwv9OVYUkDaLGx1l/BlH4BWNVAf6UxCSGYaOxLQEXLuTG92Ug/XVee6+V3eI4lK6I71SZUuFyFXKaonGrJnDwneCl6o8HjQ8pqGtD/7TMOUzRho0EH6IWjIslzze8WwqUaIlPJP2fYxx52y7GFTYB4Zl11T0Cz7p5Xw8Dw/VnhfpA4DIqv2iwl3eXn5/8QFZgizBu36OL6cc5U2TFRZ4tk4hqbynNh12XySdj6Q0aL7IO/kk0Oj+6Knzsfj2ZjKJs3JknUazgFecOvrlpWuEr2Vonc58QXXR6pWY6n2RDsnKtSUOAYLn3AZQbQzawy5giVBF1/mFjwCCXqDJWUlPC9K7qDXzQtC0OPqbpWxlRKcAmqmtFkhR/1VnB/DyuHqM7Kxeis31PpqVvrTjdxaGqTAXwMGnlWqkmQ90UGOVirzNAy4TpLgvta3wRosE8vFoFfkyyTscvOuEm4pzE1OQLcFkrC3Q+aPZXtyYiMN5y+Zv3tGXuYz/cW3qqun+2Z/9dmqM8NnBy/emHXr0tKH/yh85iEH+fb1G6P7pQMjg86ea03JP4fqr+8bX/jDzr7huf4ratXlby5vad9Y+1PfhqsPvrSkL33he27uxU+7Dx/e8/Pe0c2PBV6pGSk4kQ7zK6rnRZTT57k5X3YuOpfobGmoqVpndj7wFC5Ynz5Yd81aNX9425MlS26+W3le6dpGN885crNr6MK8Ga8W0LbruxY1mkOHpsX3Lvz97YX9czw7l00729/4xdewh0+9kx59fvXQJX91y4G6zYFZvxSMR45pgx0zbzniZ55eUTRv1+fCP3t9obpnH89r2tMZmfneE4FDC94PzC7sUh8dKcRp6+TV8BuvBXZX/rr/5IJ0eZzygZc3HRzdss/sPra4tvGF4x/5Rv7aVxP68bfFQNT4+PS8g+n+7afy8/L+BTWeI00=

View File

@@ -1 +0,0 @@
eNqNVktv20YQRi75HQtdlATiU9Tzpjh2GzgvVA6KICiIDTmStloumd2lHjF8aPq46y80rl0EaZtTb7n01EN/QX5NZ5emIhvuAxBAzrczs/P4ZqjX5wuQiuXixjsmNEiaaBTU5vW5hJclKP3dWQZ6lqenTx6Pj96Ukn2YaV2ooefRgrmaLhhfu0meeQqoTGanL/J0/fHGzeMGHsdzWDeGpKEXfO3oo3ud3mj8xXwf7pYvHz/rr9LO4aGG1TjyH84f9Rot0sAbpbVYzqgmTBE9A7IEig9JmCDjA6OV0VUsQZVcK9QNEanujlMo9MyY03RBRQKp0WYi4WUKcZpnlAlj8fwrhGF1LVxrU6GWIBGdUK5g50DSZZzkWCqhrzllGZ2Cqg9OzmdAU6zvD2+fKpDOaIpWm9+LNRZUOBcFVl7otvH32yhJMH5nXyR5ysR088v0FStaJIUJpxrOquPNmzvenbd7uRBgO7V5OwcoHMrZAn7dq+JyHoCY6tnmTdgN39XY0bqAzXtaFJwl1Fh6X6tc/Ix1LLDf8O2Z0lSX6vUp3g5//XmegVKYy4+PD+skvv8PX1evPw26fng2BokM2/wkpkysTu9hJpsPB5K1SNgjYyhI6IcRCbpDP8Af+ezh0T8kZ4n1DUYpsTYfb949rsnyb1xpTHLO82VcFrGttaF2YyhKzluNusOVVDcOSdDYcuv5cUMzzQEv+XLHMRXkQCK/mEpyvKOUHBXqqVgul+5FFGZAzGSgzpYxjeMmz6uiNYfkuCloBvjSvOS02SJNCdNKp7mH+U9yKRg1eJKXQsu1OXgqmIaUjLFxoEg+IaMMJHbEqCFlUKXdc3t9I1lPThCGboTz0tSvYpYaFxcW3oNcxSMxBQ7KWmOIXLMMYijyZIaaQS/sRZ2w3/Z3j40L00DHHzjYT38w9P3miYmylBLztSlyqjR2IMUo0yv+goFv/e1oXHXZH0YdE5KGrIgTY9lxu7U8QbnruwHKTMUpNWUJbJFEyrY1xh2jbY1LIdbGF0uqynpekoqr3boQvW606kYe+vSCoO0WYlpVPzVJB77vmzSXTKRxVpiEItevgbkFum6nBlKYSjB2vWALMWki2H+0b9wWSDlVSoizF9Z7EFpvW5iZcMOB2+9XaMKKOMsQ82s9g1itCpmVGcMKmHr0TbUSnpemtOZsAsAVZ3PYLecncKemJtJkxjivNNvbFCvQaHY6Nk1cERpxWFWa4RXQakYWTGFZ5PipqRQDN9rFrF5lvMCGzk2KQddea+SMGX4OycAi5cIw3L5OSyRQ1Ye+tbZA1QcMu3tygjOIgyVxlH13MOj1/aCHg767y80eOGl9mvjPcxzsNcHJgwT5aV4uj36LfJrMFnk6HhGHmKGgIjVMNmS6djtc0dkSrlTUU1Q4k/oCb2ZDuLQ+TFTOi7VjnuTg/8fmknqDHeXI6a10kWUQkXuIbh0+w2UJ0pD/iRFr7T2Oe1IDuTXCnW4W5m2yV006XyNrQvLH+wOXjHG/oTWuJks75ZJbtQPzkcGxHF6Oltw3fz2EPaKcjJgscqlt3LfRHQDJMDBysVTqJe9e6mkfP3ZRu3NdU6uVbj9zsSl+Y9h2o8HJ3wjDCKE=

View File

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

View File

@@ -1 +0,0 @@
eNqFVVtsFFUYLjQEHwjXJvqiHDcIATrb2QvdbuVib0CF2tpWuQXXszNnd6ednTPMOdN2aUoCKAaqwTEEgiY8yHZXNxWoLSGKoIlNNMELGqLUEEN4gBhM0BBF5AH/M7tLCzS4D5uz5//+2/f9/9ld2S5iMY0aUwY1gxMLKxx+MGdX1iLbbML4a5kk4Qmqplua29qP2pY29kyCc5NVV1RgU/NigycsamqKV6HJii5fRZIwhuOEpaNUTf0y9fteTxL3RDjtJAbzVCOf7A+WI08RBTdbej0W1QmcPDYjlgesCoVSDC6uEhrSkihKo097+srROBQzpjEO2R/AryW6TlEt4FEjX8SQoSkEcYqShHCUorYXNSKVGos4gk5trOspZBCiCghkR9hIwZHqTFxYhJnUcG0YMS1p6gTFLQikGXEvWku7EbaICAoR4QpwKk6tur/OSVrqTmDOUBIS4yQB+FbBB1WJLoyKjm2VSAGJUcMgXPIDX7LfHxYx3MLyjAlXAee4S9NTEUawpSQiULCtcxbpAGfhoBKmWJopFBXgGpTHIWLENYMgCpakth26j1ELgX6mRRIgk9ZFyoEexbYwFydBgWUzDsBCBi96iZGYrbuO3eDjslAkEhusm1jIHR8xTAhHqc0RxLOAAkS64BtCNBom3LIEtXUVRYngOF8eOFopr2hAE5AIUxIkiaGDXo8Js0YsrrmT0+txke7pgVYnRhIl6ZR2Itt0WUyZLnWMWyCapw/k8ohZ1yyiCnILQbdOgNJoB1E4QLf2ZRMEq7Ax+9MJyrgz9NAOHAfiiMklYihUhQTOR/HtmlmOVBLTgc6cInR1l8zJdRJiSlgHvjN5L+cENk1dU7CwVwgZBwuDI4laHjbnxHxJsEkGd07VFOuoaEnByhpI9gaCXv+JHgk2RTN02DlJx1BSxnTtpycaTKx0Qhyp8Bw4mbzzsYkYypyBJqw0t90XUjDtDGArWRkcnnhv2QbMF3GydS0PpysYx9MFvD6fNzR0X2CWMhRnIIZ1RobukXzPJQe7EZDkSkn2HSuypMNo84RzNOQLf5BfX0Z2ZyAkt9muNChCvvk6W3h83m9eV1Tz15K56XpQxzmz2tLKkT+E2oiJxO4hX2W17KsO+tGapvbBukKa9knFGGq3YPRjIEhDUfyskrCNTqLm6iaVfcwz3pZYNh32kUuFlxfEEj+ddFCW5bGFj0RasCCaITKmA+Fw+H/iAjOEOyOiP0kOS/5Qe77LZcHNY2gyz/zzXagnI+qBihY8AjleTxGNHomevJ6gf3OuULSkqc5ncI7Ivhcbarv4ho6e+hhes622pTbVpqnm+pM9kqJTW5U4/IcRyR2IHu6MoYAcCIZUfywmK1gNh6pilWQZVn3hUDQoV/nl0NEuDTs5n9eH4pTGdXK8brVUh+HJkdrcsXGy9ZteqGlqrBvcKLXSKAX+2jHwbFCDZNqIBePo5NzUsOAWyYB7a80mZ6RKCSvRyqgfk6pQQPYvk2phb4oDdG9A0uJ1cP8rd2byL9Lov/P7HytxP6Xr93/7/JfPlb0eIcuvf5jWpgXW1cz+4a1nh+ZmDq/zBz+Zx25c3PNj96GyaRumn71Zeu3NJy7La7c8fv3UjdPJc9l9kSM3r1ddWrWyCa/8ovaac7Bs7z8HX/UN7JjyyoJ921/eOGNxy6w3MrfC5zuG3xld/+mSfmvLATKtf+HQ3KWXvrpNW38bOXD8yh9HPp4zf/fhtiMz7uxcX3bz7b+vXpxTcWFkntMqlx5WLnz3+/mGedOHm++896Sx7fbI7CZlhXNo1EQzT17d+2fnY33kyp7LVbfONJzdYcXrnxr+6d2Zo1NPLV7Sf+CvVUt/PnRuFjR5925pyefLN6zwTykp+Q/z/kl9

View File

@@ -1 +0,0 @@
eNqFVX1sE2UY3wTE8I8wM4mJH6+XTWKy6/qxdusSldExRDI3tiIwstS3d2/bW6/3Hve+t62bSxRQo0TxAtEYNU7oOlMHbDhCdBA1CiJgAokai4gfKPCHGgU/QgLB524tDFmwf7R37/N7vn7P73m7bribGEyhWumIonFiYInDC7PWDRtkrUkY35BNEZ6gcqa1pT28zTSUfGWCc53VV1djXXFhjScMqiuSS6Kp6m5PdYowhuOEZaJUTh+/aXa/kMK9EU6TRGNCPfK4vTVVSCii4GRNv2BQlcCTYDJiCGCVKJSicftoZQLzBQzxBEE9BMOPgRQNtTc9JAx02nGoTFQbJ6nYlInoExnVNMJFL+Rxe71BOxynVC1k0nDKycRxt6KmI4xgQ0pEDMJMlbNIFzjbDjJhkqHoNhM2uAFN4hDR4opGEAVLSukjMopRA0HfukES0J7STaoQliTTwNx+0mTEDZNxABYyuNAKRmKm6jj2gA9KUxNpBBCcggPrgf4c2u0hIBylJkcQzwA2EOmGbwixVNPhlCWoqcooShAulgeORtplN6DYkAiTEiSFoYN+QYcZEYMrDuP9goN0nv7T6tRIdkkqpUlk6g6Lad2hjnFD0eLCwACc2RpRDCLb5BaCdk6B0mgXkThAOweGEwTLoLRNmQRl3Bq7Tjs7gTiic5FoEpUhgbU93qfoVUgmMRXozEn2XB1xWrkkIbqIVeA7O+lljWJdVxUJ2/Zqe4wjBQ2Jdi3Xm3O21ERQoMatPQ3FOqpb0yB1DbldvhqXd7RXZBwrmgpaFVUMJWV1xz4x1aBjKQlxxMIaWdlJ5x1TMZRZQ81Yamm/JqTNtDWEjVSg5t2p54apgb6INRxqvT5dwXg1nc/l8bhqx64JzNKaZA3FsMrI2BWSr7jkYDd8ojsguj07iiypIG2esLb5PcG3Qas6qI+sz0JIbrJ1GZgIOXJwuLC0W1uWFad5sqQs0wjTsfY1GUoV8taidqIje/eQJ1Dv9tS7A2hJc3gkVEgTnnYYY2EDpB+DgSwuDn9YSphaksi50LRjzwtX27KXTYV95GLhxoJh2a9WpsbtdufvuyHSgAVRNDtjxhcMBv8nLjBDuDVu9ye6g6K3NjzZpb+mI4+m85y89gr1ZO16oKKKGyCv1lNEoxuip6/HHejIFYoWFdnaC88Rt+fh0PLuhse6Fre2xVem+jzJjh5fI2vc3StKKjVlkcPdT0RHEL3cyqO6On8s6CXRqOQP+GpxjEheH/H7PCQgByQpSrZ1K9jKeVweFKc0rpKdoSYxhOHKEdsd2VjDjasfbWheGhpZJbbRKAX+whh41qhGsu3EADlaOSc1LLhBsuDe1rDaGq+TglLULwf8xIu9sZgkLoK9KQroikAy9u3g/Mc8lZ28kfaXlt+z8ZYS5zMj/FLLso8Xzt3/wSOvnr/93JLn86+93Dfa1nqrIBzedcc3X/yq7vIlX7j3u86yeX/W0dOXTv9xc6LrqP7jvs/OdV3a/cCeJ1Y8+N6Xv43mT0zcxWbMydC17y+KTSxpnbv+zZmHT4yuKmvV5/j7jn6/t9nvOlw5W9hCrPL5q5eHBz+cVVZResl7UaicSctajgQP1izY/PP+82e2b/n0r1PNrm/fmDh5KDT+yuCTvyh/5zcd+OeZY0097nnBNGY/LbztueMVg7PPlh24u+b1Y4dKT219a9aajr2Ll+3A8x+/M1I+uuGrxvHNFyJb0x99XVnx7OD96Z3o8/KzP5zZaP3+4ieDG1cMoYoL72w/t/bizSUlly/PKDm+/Ok6XFpS8i/VnBjV

View File

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

View File

@@ -1 +0,0 @@
eNqFVWtsFFUUbnkkqFEUjIQfhMvK409nO/vuFh+UbbEIpbUPeYVu7s7c7U47O3c6987SpTbGAqlEfIwv0BoSZdkla4E2gJoIKlHUgIkVjbEgkEhC1KAhKgHxB56Z7kKRBvfH5u4933l95zt3e3MpYjCFaqUDisaJgSUOP5jVmzNIp0kY35RNEp6gcqahvql5p2koI/MSnOussrwc64obazxhUF2R3BJNlqc85UnCGG4jLBOjcvpk6ZVuVxJ3RTntIBpzVSKP6PWXIVcRBTdru10GVQmcXCYjhgusEoVSNG5fJRSkJFGMxua4etbZjlQmqm2QVGzKRPAJjGoa4YIXAoteb9j255SqhdAaTjqhOU4pajrKCDakRNQgzFQ5i7aDs+0gEyYZim63boOr0CgOEa1N0QiiYEkqG4iM4tRA0KhukAT0o6RIGcKSZBqY2ydNRtwwGQdgIYMbtTASN1XHcT34oDQ1kUYAwSk4sPXEQA7PNusIx6jJEcQzoH1EUvANIZZqOtyyBDVVGcUIwsXywNFIu+0GFBsSZVKCJDF00O3SYSjE4IpDcbfLQTqn/7Q6NpJdkkppBzJ1h8W07lDHuKFoba6eHrizRaEYRLbJLQRdNwZKY+1E4gBd15NLECyDtF7MJCjj1tAtYtkHxBGdC0STqAwJrD1tGxS9DMkkrgKdecmeq6NGK99BiC5gFfjOjnpZg1jXVUXCtr3cHuNAQTSCXcut5rytLQEkp3Hr/apiHeUNadC2hkS3z+/2DnYJjGNFU0GcgoqhpKzu2D8ca9Cx1AFxhMLeWNlR571jMZRZu+qwVN90U0ibaWsXNpJB//6x94apgb6IlYs03JquYLyRzuf2eNyhoZsCs7QmWbviWGVk6DrJ113ysBs+QQwKomdvkSUVpM0T1s6A6N8NWtVBfWRjFkJyk/VmYCLkqy9zhS19p35ZcZpnSqZlqmE61uElhlKGvCHURHRk7x7yBCtFT6VfRI/VNQ9ECmmaxx3GULMB0o/DQGqKw89JCVPrIHI+Mu7YR1w32rKXTYV95ELhiYJh2T+tjF8UxZH5t0UasCCKZmfM+MLh8P/EBWYItw7Y/QliWPCGmke7DPjXjKDxPEffuUI9WbseqGjubZA36imi0W3R49fjC6/JF4oWFNk6BOeo6KmuTnR0tixuaazgy6TGmvjy9TWNCjvYJUgqNWWBw2NPBEcQXdwaQRX+gOz1xn1BjyRVhCpiPtGPpbg/RPxB2eP1xXamFGzlPW4PaqO0TSX7IkuECIYnR2hyZGPlqlevqKpbGhlYJTTSGAX+mjHwrFGNZJuIAXK08k5qWHCDZMG9sWq1daBCCkuxIA544uGgT/QGhMWwN0UBXRdIxn4dnD+VZ7KjL9LRUjT7uSklzmfi8pfql3266N6jHx+r2NZ6orFp7c+tmzaIm3d81l/7Q7zP/8EbWxbu/77h6ul5NUe+3Xj2H9Y148KEygsH92y7vG/LPad+O37RbG3JXfrz7dMPz2raPPlkxfCrrpaz0x7YPnfFJ++m2nfcfdeFeQ3VfXV/hYefCqzE8/u3Hf8Dr359bdngfcFY5HLq737/1R3HQp2rntg6YWH4zJEz8Tt/DEyaPzx95taXZwz2oYd8F58ns89NWX5/tvbJCV8/uL32uzvmnqi6cj49vHe2q6r/2YFzqdLX3jqy4M0lc2q/ELZPevSRny4dXhSY+Wt16+Zv5nTuFhZ8Ho384pse2vQC2zr5/KkFv/fOmjrS/srUWM1KLTj58feuqQc/an0aqLh2bWJJ36HzQaO0pORfBzAQdg==

View File

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

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
eNqFVV9sU1UY39wD+KKMqKghcqzgg+62t+3d2i4+MDoQso0NNkRmluX03NP10tt7ruee260sC5Fh4p8IuZoYNegD61otExhiJMH/+oBBgolRM2I0IAaNYmKiSEIIfueuhSEL9qE5Pd/v+/f7ft/pjnKecsdgVv2UYQnKMRHww/F2lDl90qWO2FnKUZFherGnu7dvwuXGzIqMELbTGgph2whiS2Q4sw0SJCwXyodDOeo4eIg6xRTTC6fq/xwN5PDIoGBZajmBVhRWI1oTCtRQcPPEaIAzk8Ip4DqUB8BKGJRiCXm11rg/MDYgPZhOTXlDTOzqVIkqDrMsKpQIRFQjkYR0FIyZ1ZgWzvkxBc4bZmHQoZiTzCCnjmsKZ3ArOEsHnTqEG7bsWYLb0CwOUWvIsChiYMkZ26iO0owj6NDmNAONGHnahDAhLsdCniwdCe46AoDVDEG0yaFp1/Qdh8EHFZiLLAoIwcDBGaYc+QRLuhFOMVcgiMehb0Tz8A0h1lk23DoZ5po6SlGEa+WBIy8EZQOGhAw6JENzGDoYDdgwDcqF4XM7GvCR/uk/rc6NJEsyGcsi1/ZZLNg+dY7ghjUUGBuDO6kGg1NdklsNOjAHylJbKREAHRgrZyjWQVO7ixnmCG/6BpUcAOKoLRRqEaZDAu/toW2G3YR0mjaBzgqRc/Vl6FWylNoKNoHv0qyXdxDbtmkQLO0hOcapqloUWcuN5ooUlQJas4T3XlutjlBPAURtITUY1YKRgyOKI7BhmaBKxcRQUsn27UfnGmxMshBHqS6MV5p13j8XwxxvsguT7t7rQkqmvUnMcy3aO3PvuWuBvqhXTvbcmK5qvJYuGgyHg7Hp6wI7BYt4k2lsOnT6KslXXSqwG1FFbVHU8P4aSyZIW2S8CS0RexO0aoP66HgJQgrX2VGEidAvj5Wr67m3u6M2zR/qFhfbYTreB2u40YQiMdRLbSR3D4VbWtVwq6qhR7v6ppLVNH3zDmO6j4P00zCQ1bXhl0nGtbJUryTnHftM4FpbctlM2EehVN8mGJb86RU1VVVnHrwpksOCGJbMWIwmEon/iQvMUOEdlv0pakKJxPpmu2zW+mfQfJ6zD1y1npKsBypafhPktXpqaHRT9Pz1qFp/pVq0Yuje+3AeVMPrmb15deeax7ra9GQ7zXQazdqWtcl3RxRiMldXBLzyVPEFMSK8GaThqB6JtUTj8ZYEiUS1uE5xOE5icaKSdBxrE3kDe5VwMIyGGBsy6YHkGiWJ4clRen3ZeOX2LevbutYlpx5XNrIUA/76MPBsMYuWeikHOXoVPzUsOKclcN/YtsU7HCcJkmomJJzCNJJOE2UV7E1NQFcFUpSvg/9v8lRp9kX6/OSy5xfW+Z+Gzl0d2c/URTu3d5xrGt9X3P3L90nj2Iqzdz3X+O3iPQ8d3TW86cW7r/xz5qtV3Q0/PvJK48Cqj9fd3nX5yGh297J953Ov5ztDBzafPnF+tH7B0QtaeW3zfQtvGz97T/s365VDn5xe/mzkllNLO/Zu3fCW+tKmDy8cP3XpzqX9+IGWnZcvxgzx6vHhW0fKe36u/7o8/tpfJ1ZueLpx5Z57H2746bue1iVnXl505OzvPX989Okzuy6lXvhiyXTg4rnJ8TsunXyj9OuCurorVxrqflt9aPvf0MW/54vuGA==

View File

@@ -1 +0,0 @@
eNqFVE9oHFUYj7RYWy/qIdBi7XSJipK3O7N/kt1ACem2SUtNN82upV3R8vbNtzuTnZ2ZzrxdktYSTBpEFONDyMGDUjPZrWvMJrZasLUQ04rF9mBPXQJV8OBBUDFeCkJ9s9lNUhLinN58f3/f7/e9N1IqgGWrhv7YtKpTsDCh/MdmIyULTufBpueLOaCKITt9sXhiMm+p1ecVSk27w+fDpurFOlUsw1SJlxg5X0Hy5cC2cQZsJ2XIQ9XsWU8OD56iRhZ029MhSKI/2Cp4GkHc8tpZj2VowE+evA2Wh3uJwZHo1DUp6l7PudfdDEMGzbUQDedlQAFkG7oOFPl5RdHvj3jOlRTAMh9m3FEMm7K5dfAqmBAwKQKdGLKqZ9gXmTOq2SrIkNYwhTJxK9bmZ+UsgImwphaguJzFZrFpairBrt83wLtP13EiOmTCenfZHQfxKXXKrnQ1cPj6hjibuiB6A0Gvf3YQ2RSrusb5QBrmkIpmzX91rcPEJMvroLpSrLicPLM2xrDZVC8msfgjJbFFFDaFrVxb8NJau5XXqZoDVor2rW9Xd662C3glyds+90hhe0gnbCqNNRvmVkheSSlzVQJIbEOiNNNgSQM9QxU2KYntFy2wTb5lMFrkJWneHnG4InD7h1J9MT6NHWmoeb/pGecAV4d9222prYK/XYiDKbiqC1Jbhyh1iAGhpzcxHa23SWwoxlzCwrqd5oIcbIhfIkpez4Jcjm4oe9WzOpbF+2tqTqWofim4WO4vc4KiKFZf2DTSghxnze3oBCKRyP/U5cwAZZfd+ZAYQf72xPKUoWCyKmyUuXy16niKLh6OqGWTyFU8jWhh0+iN8YiBZLkOGqkyu8bPp0TJX+g5FMoETbNPhTMnjukZ6UjyWPdXg4hoRl5GlD8vgGoLMUhZVQhJaWhvC4fTYdkfScvBFIhhWQqmAnIklArKZLKgYlaWvJKQMYyMBpVoN4piogCK19aGlQ6cPNrVezg6fQL1GymD85fAnGfd0KEYB4uvIyvXWvMLbkGRp/d3nWSXwyRCUiESDJBwyp9OE7Sf35vGAq0siOO+DrVn7C2+phY33biz590nmmrfllfevzOwID51/pMpe2L+9N3m37fvf3N7y5X+92bb5hP389c+/yD17x83L4x9/Pj1Bzj9z9PPjb6xaC3NzA0v/vnRr2Yltm3AW+q5tG9h/npPMu7smtn69uG7O0YGKs33fhEPOVvHvWPPfnav+eXb8sFXj1/9sjwQpt91a3/tWfrZ+Ymgzpsk9tKtJydi20I7F98Z2bEwGv564sXvKxfojzd2z9tHb+3tHH6wc994NfmhLzVW2d2yOPz3N62dHPfDh1ua8G8wusTP/wHDg2Hi

View File

@@ -1 +0,0 @@
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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 +0,0 @@
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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 +0,0 @@
eNptVWtsFFUUXh4qGt8immB03NQo2JnOzM7OdtrwY7t9bWu72C3SYkydnbm7O+zM3OncmX0UMAhIIkZ0UKL4AvrYJU2tGApFXlYJ8YVRiBL7Q40xPoIiBuMjVNE72620gfmxO/ee737n3HO+c2ZdIQ1MpEB91pCiW8AUJQsvkLOuYIJuGyBrQ14DVhLK/Usj0fY+21TGFycty0BVFRWioVDQALqoUBLUKtJMhZQUrQr8bqigSNMfg3Ju/O9VXg0gJCYA8lYRD6/yShC70i288HZCmxBNQIhEEqhG3FYJESEFWaJuUURQRxlgEqKqEsVYXErCgoSVBEQMrwkYJ3LQxoiYoipWjlB0ImqIuoKSlLec8JpQBa4TlEMW0LxryokZvhuVu4nwvRpRA2Mz4DYCpnfNI3hHgzJQ3a2EYZEcJDVFV1ykjvcY/I8sE4gaXsRFFQG8gd0YOImWbbpMNBVYU0gCUcYp/spzY38SIssZnpm2N0RJApgd6BKUFT3hvJ7oUYxyQgZxVbTAII5XB8WiOIMpAAxSVJU0yE+ecnaLhqEqkujaK1YiqA+V7kdaOQNcah5070biSuiWMxLBQQTDFUtzuL46wVBcJUXvzpI4+Yqu4oKRqojjyRtF+8HpBkOUUpiELGnHyU8eHp6OgcgZaBGlSHQGpWhKSWdANDWe2zN937R1S9GAUwgtvdRdyXjRnY9iGCrw5gxilNMlZ6BYiNEZh4Fl5kgJYg5nJ52XIEwpwBk/19Ulxbti2pLmTDK0vE6oS4VzsfqG7nglZJdzOdsKx0EwleZjbFbyBRMdudCyFMkE2ADH8xxTSTIUTTEUQzbRPGxo69S0WlOml9YHfGmkPxSP1PA9tpwNUqGaeL0dyQK7lgKBFR2JcKaRZbs7a2pWUit87V0rTauxO634qFYUbWoTmzP1TV0ddelMNYGjs9OKvKTRL9Y1aslk17Ig1BC9rCWdamX5QFtzqicNu1n/Q5Cm6upzdSuaEtPCo30+ki5FyNNcJe0+w1PaUIGesJJOH+tnd5kAGbitwPo8Tpllo3X9WIfg+PuFUsv2RpovSvjW/lqsSedwvamUE2yAiAKDYGmWIxihigtU0RzR0NI+FCq5ab+sBN9sN0UdxbEM66YkX5CStp4C8mDosmI/7IodV9INH/coCbIGRIAsReUMdZBtk7OKDNfumewsEpoJPAd6im6dw0XVZ3qyGVmyZTmZzmi00MP5lBiwpfhI6YhhQtcNDojUkJscfrhkmdLdIL4rTTI0STNv4dZXJNxm7mUMaFokAhKejlbOGS/XxKzbY0t8jN/H48RX48EkqbYMonasFmpYmaiaMEygQlE+kCXxvACqoim4MMXf0uRFTr8fH95/KcCCKYBndIErlpU+Mh1hApffvcRFGk4QhEOXB01R+TBE8PsPzEQhMD0ahtXQ/ksBJYpeGg1lp9CkIjvjZXjRxYHKSpblBF6SfBwdkCV/wBcXBA6wYkBgZfGNUD0ZEqUkIKNF/TmF2s7WYEs4tK+DnC4kMmJMfpkKOkS6Eo/no8DEhXEGJRXaMh6WJshjrrZgpzNSKQmApgHNCTFaoHk/WYPH0BTb/7Lrdydt8RP1eN4tp544Nitz11PzPMVnjvVsS+tRev6GP4VjR3+6cu+xf3YurP2od2z2k7feXOMsfLssv3k7qG5r/vyoceX1a9upjVsu9Jd/ITPbE+xv/E2e6JaWtQNPzFMUe3X1y18NpBYtP7Z+ouNcSnjspch24b0XJhreqdq7fsHZFzf2/cQOnFx57abjdxaurxur2hs4/cxfxvsTh2bdE/5sLzl69/fzX/hw1/6vz/y2v3rTqm/XHyS29iZuyT7t8fAfj/6ilA1/MffAq31tvX96G3hhyexHN1uv098cPhd8cayKfOCDuVzL71/+8MrIj2PPL7ht98Rr/6zeOndfTZg4tXU+RcwfOSKMVh9fXHH66vzJ8ztgZA333akT7971V/iT5x880njHNZH8hdEb5M7Q6E1jD+85eN73RGfDwHXhHfe8VPXrprPfdqw6s+CPnqtuv2/el6dX/7p9kXP7hpMXfk6rX0e2Hbrux9ea+Pu3dU2sBVsWPde3p/VMZNt42cIbFty3sY9JnODPX+Hx/PvvHE/Pp9wjHbM9nv8AoSZdwQ==

View File

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

View File

@@ -1 +0,0 @@
eNqdVmtsFNcVhqIKqBCQtBTaRGRYVSRxdtYz+15bkCxrtizED2wTPwhy787c3R3vzNxhHvuwSyLIgySkUaZtHk1aU2BZO8YYHFDKy0WpWmqVSAmBNnIikyaqWpqQSC0tVWNSemZ2jdeFXx1pd+7j3O9895zv3Ds7+jNY1QQizx4SZB2riNOho5k7+lW81cCa/nhRwnqK8IWmxpbWfYYqjFeldF3RaqqrkSK4iIJlJLg4IlVn2GouhfRqaCsitmEKccLn359zqdchYU1DSaw5aqjNvQ6OgC9Zh47jYZmCZ21Ot1xTegpTPNYEFfOUICeIKiELiEqoRLInE0QUSVaQk5SCbERXCaD03yiLeQpXYCkqEFR1AWuUBA4Byga25+6OiAAhJATO9nE3lTBke/czIJtKbmpKvTaMYKlKCRpF0hS0sJOKURySqSShiKFrAo+prAABM3RKMrgUJREVgzuwQBRHkF7CcTgph0pEbEXA0LDq2LYFRiTCY9EaSio67SW0JMiCZSnDGAtvBalIFLHYpRMidnHQtuKZQKIGNByarmIkVQzoWILNI91QLT+Mi7HG7JUpInDWWK9Dzys2iam9W+5utC0DGUm2wcxgObZtK4OVM/r/4oAZ5JtTBaVs6XCUNwqyA2Xaa6ezaHc1K5NSST+9Diwb1qY3O1JIUfJ2uLABChCtpoZ4hxXZKXoQI9COwyKPkkkVRClksAwvG+p/mJS6cdBOimSpaXtbPZqOIL5AArTgtEdSQtKShtUESvFy087/9FqL1BRjSKnbSXmclNdJ+SpZWpWYtEQBYyKSkwYIcOZeNQXJgpYqoSXFcjOhYpmzW7BaQnZ0BR2JAjRvFQUL3ypzq9xKsDcie3OAKrlUgpF4N+Z0ANu2ZVt/CiMesnZx1uJCimi6OTzzjDiEOA6DtoEm4YGCeTDZIyhOKPmECOEchHNBxrZmzME0xgoN3DO4WFplHoYEi2XhVHdrRB4qnyO0xeXm6UGrsmjgK+vm0UYgEY5VN+WhNmWKdXmDLuZwjoY0CrII+6OtzZlFxZ4/WTmhIC4NIHT5oDSLpcXDlTZEM/fXI66xZQYkUrmUuR+pkt97pHJcNewwm/2RppvdlSen3XlcLOsKjMwA1vIyZ+63C/0XMxZjXc3THAEMcw9T5AhJC9gc/3tXF5foikurBBfKcp6osj7d4G/oTEaiHiGnhdc8uD5AupCYr+8Ii2vT9fGmZCdHswF3wOvzMKybZl2Mi3WxdOc6LtGNW8KNm4RUMNusIUMw/FtFb6vsyrR5G92bvKmN3Q3tDIoq/iifViLt9WGdxDdopC7ToMfiET7R2BLcEGXWCkKrL5BLRKLxjeFaCtgZGYFf5dvYvNYIxcV4ptHbytT5U/n1zclQe+tD4a2cHEn0xPPB+qzwoHuTEqygF/AHaKbM0M94g4z1DE9pQ4QC0VNmgYXBARC0AvcSfqxo1a+h7SiAEPFbY/3l+2lv44ZpDS8p1IEozdGoKkClBqgWrFBuxu2lWH8N46nxeKjv1rcORcp+Wm+pwZFWFclaAnS4dkrz/VzKkNOYH4zcUu2jltohlRZ/uCJonFOIhukyK3OonW4u3cx0rO5IqbRooibhPOix3ZqjtuyzPbkszxk8n8pkJSbU4/XASWZwiaPlJXCmWm6AEC1p5j4PGxouz0wJbxD2ytAsQzPscevE4KDOrM0oRNVpDXPwLaDnzXGnhHJWka3ysD6PH4JcCxcsJxo8bjHidUQCaWq1cBFjkSD+RI6GCwmLgiRAZuz/8neGZhZ8sPjYzQY6SWP4Iun32nllfllpoWIL39rENIw3FAqdurXRFJQHTEJu94mZVhquZMO6Je3YzQZliH2spA3lpsxpgTfHvwOdLh4zft4XCnkDQbePifMs70dMIs6y2B8IBRLoUCRKRxCXwnSLLUCzv66jIVwfi7zRTlcqiW5USh9i/TLRZCGRKLZgFTJjDnIiMXg4LlVcBKzmcId5NMiFuHgo4AshhvHyTJBeAwfRFNoN3RWss9b+ItteLN0Av5n98V275s2ynznwu35dbw7LHzCLT00u+XXfwTWv/2zs3EFW3Xpu+Y6j6zYv+Qp96J6V34gpr/mHPzo998d3xubfvnxefGet587Pt55ZNraKX/C7VyZfH6n64lTsrjd0+svPJl7YMPCf4xOPPHrigw/fuf+OR5/IX2JOznV+ueG9/ne9D+15Kfov5a/P9y4Yip1Y17b0bLAj8wB3dWDNq4dXd/5kwOyM7sqNPPOxd/0f/vL5+2O3z3df7T2zjPutvGj1P5fvpri/Xdv/LnXb0nnjytOsEn3ia4oj1pdedOU25w+uDjxmTFT5Zp9iB+853rxPOf3cj64s+2bb4LrhR651fv9A29nq6/eN5h+++OHFlyfX+74+2vfF92ojmw6cXVGYv/rCkUD82e1/rn/v5MaPQi84/1274NnZ2b1S0+Qflz8XWtxdHVmx07nzlc29Y6hvztJfrTCv7fr20+rYD/MLn0mfU7dPbLmwJjaoBd+8zzx/efTK7tjjCw+8eKwm2Tu8+8m3m6Ptycw/VvYOFF5sXbowZHxrVp7r/ezn5+99YPKT3W/WnG/vyl15qmbxypd29S060/HTvcl37nj794W+4fs/qbp66fjlJ9HLpy/uuRDnn5r76kTt9oV/Grm36rWv1nzKB4Sm8b2dXZef7yp+uuSthiNJO5FzZsVGjCNZyOp/ARcvjAU=

View File

@@ -1 +0,0 @@
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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 +0,0 @@
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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 +0,0 @@
eNqNVgtsFMcZNhAohYYQUkGkhrA5hRKB97x73nvZcah95mGjw2/HgFN3bnfudu3dnWUfZ5+poxZKFCl9LX2EJE3UgO1rXQKmJpASniEVKULhESmV0zakQmqDaFASaEGNGvrP3l18lpHak2zNznzz/a9v/pmt2TQ2LYXo0/Youo1NJNrwYblbsybe7GDL/t6whm2ZSIONDS2tux1TGV8u27ZhVZSVIUPxEwPrSPGLRCtL82WijOwyGBsq9mgGE0TKvHfXjS0+DVsWSmHLV8Fs2uITCdjSbfjwreqzqVEG6RJjoTRmbBkzJlZxGuk2AyDFVrDFaHREdCwxiu5BkkRVSa+ipxgDedSMTVLgKTaZXsWWKUYxGcMEB03K4O/UO/UGXc0wOG+RskysT7WwTNGTxNQQne3Kb4LhMibp6N7Io6xLMqhAk2EUi9GJDd/YAjovqPwUTadiFvmfJwH3TQQphiqUMhLxsIouqo6EGcUuoIljG47tGWzMhVvRqbcSjVmLTClTyvTopFeHnJiMDPZoScFtFeLDpheDLkKEwJVUVM1iLEeUGWQxnb46WDCoG6WdPvhsBVO1yOxh1ulKSraZZsXCVm4pjiQmjvoqmNWOmWGaCZImtjTjNKhAt+kMDbnTV+voPYrZQydkMCQiMJJGNoSPHEnBnju9xFSlXgXi9ApGHacS1C1wm5iQ7gxSGZJkcnrqY0BctAQQG4NEk1gQJzIV4lhMCuumV2FfKeMziYqpsBwLm76BJ2BGIxJW6VTKsNlyf5C1HTNBKLZQhC4RqRSxxadDLSj0zrX3DRRtymv5f+yADRK2RFPx0lykeGuy0ou2M0kTKuvJM1drP2WZ0InnqJ0xPLMk0Y1F2wN8oWUPQAknIZEJKaVAxcba/0lSLdrEzEEVO5fX3NTUsGgeaLmQDuXJQwr8lm3CSfWytxoUOJnQm5nKpyqWTfkor0UHOe1CWjKMZUMw3lm6czxF9iZHP0CnCkeR1m8iHM+NJwamIrxEwgKVEvWML/UMYETjSCLVwtQM1iBvCJRFrXH+8EBWxkiCar1fMn9QJpbt7p3cL/chkZ49Fg4DkcBb95VUv2JAD8BJFU7KCPRIHXsackd6MDZYpCppPJzb5Y4iw1AV0dNLWbdF9D35nsrSgKcuj9DjwIKWdNs90ABOVNeVNWagsesM7xcifm60j4WsKroKjZpVEfgzbHjrrxcvGEjsARI2f2m4w7nNe4sxxHKH4khsaJlEiUxRdoeQqYWEseJ504G2q2E3G2ucai6/OGGu3M/z/vD+ScRWRhfdIa8QhyZtxraZYUUCHO7L3LBISI+C3fFPu7rEZFdCq+LaE+3Vm9d01xpcRDbDjdGYUJNAUWGjFnzcToRtx0olAl317XyQsHw4EBaC5VwkzPJ+zs/7eZaz5PUaiWimkwwlNjuJWju9bnNLQ1+kmuODybgQ78KxjnTQCa3qTfH1SBe4eAzXJZukWLfWtpbYarDDn0rXyySFGqI1Qrwp3tLfkqpkwDsnrUhVa+s7tKTNb7ba12NL0+uqW9rXBWucGnnjGtzsOIbc3d0TknBbnBOL3AsHQiyX9zDECRGO/vYWtKFiPWXL7iAfCEV+BS3TgC6Gtw1DziDarYMgRHz2rWz+rt7VsG5CwwsHa0GU7tHVplLKBMJMCzaYABcQGD5UwQkVwSCzJt66J5a303pHDe5vNZFuJUGHqwqaz4oy3BRYGondUe1HqdqhlNR/6Oss7jOIhdm8V+6eDrY590ph62rHckeLJWYK6Uq/Z9Y96sm+t7+vVxIdSZLTvRoX7RfKlQR2xOSB/BZoetQMOMRqlrtbiIb25lcKwhuBWDmW51iO/x1tLiKcMxoMvahYC4vwLrIz7niphvroIasq54PlIch8ZeEubwGBEA2kaVXS14EK9+fhPhYaBlYVTYHKeP/zby7LHQzC5temAmzSAxekmxW8unLHihEmpvw0iAkaIRqNHrkzqEBVDpCIwB2ejLJwsTd8QLNemwrIU+yG1T19BTirSO74w/DRFUwmxTDiRZGLCkjko1w0yqFIOMFzIQFJUbwvtpqNIVHGbIsnQDdbu2F9dbwudrCDLVYS22DkHqVZnVi6kkwOt2ATKuOOiCpxJGiXJh4GrubqDe6BiBgVE4kwJ0kBJIjJAFsDjajA9oXuBmmvzSIVipcW3TG5vMpXIQjlvkpGQ1WREKTXe7p+dzh3k/x+2rklz8wu8X4z4O/2bbv5D/qfuPlHr66YZR2ckWn6wYcLhdk7Zl07GX8hJt0vBHdssO59qwn98ePji366ePzL5+fec33hsdN/fWjaN9oS8x4Jbx1Sbnx87aq64nh2n7/8+tnWQ+fw9cv7Xvro1D6y8mbk6TmHPo/vuNQWvvjc6vtWpBpGbzy8c9dVOfRSfKyuv/Kjksv1F5vaw4/+4s9STP/Pe3e/cyFSuSK8vm7OzlObppcYH76988LPD5x64OLJz95snL3r62e3LCjpz16+a9Xs5aOj398295EX8W/5g9qrx6aPvHtm55NLt7+75CvTzs95Z8PyTVFSe3r34i0PffZG1eO3Dgel6MITsQvKnLOX5s18vy597MSRE4tSHzTdMrs++OWJLw3FB796S1oavDD2wnF19rXtl94Ya/vnU+jl6dvnPffMgr8lnj0Vu3pz1Nj1j5lz/x1r77g26+Yrf1l+nDUynQ/u/1HmyPJrv+7edv7vi+oeu7fx9cOf6IsfO3p/+5mR0Q2ZBSfHO4KjPevDD9z3HXzozL9OpUc/eVs4kji09Gt3n77y7E+WfPPJczNflFI/Xjx3YOj5H36e3fizN2uuGK+ufHRp68FjkcGBs3uXPTXwrcBv6sef//blttsrd4if3kOrNqNk/viVwINQwv8CaSH3Yw==

View File

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

View File

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

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

@@ -1 +0,0 @@
eNq1VWtsFFUUblMhkEJMCgaJRm4XDQnpbPfR3e1WUWopL4E2to2pBJq7M3d2L525M87cKV2gEFqjAXyNGo2ikUdtmwKlFNAIocQGrQkPf0ACFa1KxWCIRMFIVAiemX0IFPyl82P3zr3nfuc753znTGtnEzFMqrHcnZRxYmCRw4tpt3Ya5DmLmPz5DpXwhCa1V1fV1G63DDo0M8G5bpYVF2OdelVqcgMrXkyLm/zFYgLzYlFTdYW4MO0xTUp+lff9ao9KTBPHiekpQ0tXewxNIbDymEmTE9VThDyiBt4ZdzbrNQthgyDMEGnWicHhj6eJIazENYPyhOpFVUxJZo6QQRTShBlHlMmaoWLXWDY0FfEEQRzMvGiBjJKALWmIaRw1Mm2le9iEFYsgTXYcYs4NGrM4eDcbiYS4lvFQBC64ZTDELEVB4MO9m7WfYaZwvJ6WIvRPgJZJjNvCK1fAT40KMSBqojCSCeGIYwDFTEIJbKKYorkragDaMritahJRnLvpbAsKNuIEfjkUyIGHJEKiMPBzvPq8PmdP0xt0ePPD2sQyadAhG7pDQcaKSVwLTUkXhCd1l69sMTfPDmh2XQYBMay6BtWgltSxREzRoHrawrPgprzjmGZxhJHuGnsdax0bgAACM1044OJUlhLzZvTVHsySVfKtlCBiyuKptGb2nBqkUiMRGVuKE5WzN5pWLRTJQXfq6xQsRclB8zgJbhA1RTP+P9cu/K2+QSmOZ0RlV4JpLoTGE7yBsoabkvSfM5rvekEqwSYoRYJeQWl3LQ6JDKAWW0FEDnsuqKOSBjGhUdE9BFJOPYEIwWpGTC2dCYIlAHqxPaGZ3O65dTTsxqJIdC4QJmoS8Ld3xVdRvQgBX0fD3dAdjLhas7sbCdEFrNAm0u00jwBDg3F7r56EIcQEZ/Q0F/u8gYg3sDPdVILD2+7Fuq5Q0RVg8QrIc0fK6eiDnsw9hbA4T9jbo9Fgl0FMHQYWaeswOfSR2doOVMmxLzrTg2tb1VOZGIdz7mufA7TtQ3MNWoQCEVRDdBTwBUqQP1zmC5UFS9G8xbU7K9Juau9Ib0+tgZkpQ4SVmax0igmLwdTprrhjPj6BBicKhckRS5p0FREMomLK3Jv+aDgSLfHvv93EXdudAZ/77B+NYBJubwuUHLj9BGa/kRREp5gfBgO+UHTI0yzclYCgUgZDMMujf7Stu87apQkduqsd5C5h7/D7ss9Q4b/6d+27o9FoKFwaCYeCgExYk5YULD0lVQHE1AQaFjhVid0OBAIHHYWYpuDoAQY2ZFnRVgrweYlTZm+d+XGz0KgBdhbB0SoTk+7l4L70KUyy5mT2aKtvT3o//fkUqGQPIRyN+kojwUBAxjE55gsQMST7cTgcCIUlMRYI766YK1RgMUGEGld9duec+iXlixdUdNQAa2LY3aKiWRJ0i0E6wPbp8np7X6kYFWNiJBQSff4SyScKT1bV9GZElxVVu9Nq7nd4fUdqenyWu3DapnE57pO3yD7KBmZPqFw35htr4/xxhcd6rrcurHtm4sZjRwpPnsg7fv+GgvPf7qj+80z94/0f7Z41wKsvXDm3ZVP/d6ySvD2p7jxb2bVx+enNdcsuvVb44HB9/uTfZved+vT9ok3jH5rKpYJLWy6re4TIxTXLiL5VzB8Tf31O371vnbOnFY2f8U6owvfupFNnx4082j97V6B0yYZXJoQ8Y49Wb3lzUcHlyOJfBtYO5059+J6zK/p+Hx6RR+p6qk7nH/7y2pWSi3/tPX01tK4iNPDG5p+Cg1yc/Gp8cHnB5M9/fOGBrsq2eU+t/fXcSxMm9lW2rV+kWL2Fa6+0Tew/OD08WP7syNLBAX/LlB+OHui6OHZSB32CXHg5QhPTTz5Wf/2q/+fge+uufRDTZ9BH1vRWVVf2b56VP3S4tu545I/kEa3/6yUnp0DSbtzIyzmxXWk+k5uT8zfUHYmM

View File

@@ -1 +0,0 @@
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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 +0,0 @@
eNptVWtsFFUULpSgEh8VRGOMYboaf5jOdGZfs1Mkpt2Wtva9Wyqr0XX2zt3daWfmTufeaXdbqxEJCVHUkYjvH6XLLja18mgEQYxRVDQIGo2mKBpf8YGvoMSoIXhnu5U2ZZJ93HvO+c7rO2c2FAaghVVkLJpQDQItGRB6wM6GggX7bYjJxrwOSRopuc6OaPeYbanTN6cJMXFNdbVsqhwyoSGrHEB69YBQDdIyqab/TQ0WYXIJpGSn3xr26BBjOQWxp4a5c9gDEHVlEHrwdFuygTWZQIakIZNEmoYGVSPFJC2kMw1GSlNxmqGRIaaZyJoqG54qxmMhDbrGOIsJ1D0jVcw8zLRaOVfLxtDyjNxFb3SkQM29SpmE9bs6Bj0J9BcTC8o6PSRlDUN6QXFNWg1iWy4Gz4kjhTSUFVqrL8oqcmmEiTM5P/+XZAAgxYUGQApNwXkxNaSaVYwCk25+4zRAAxar64z3QWiyNJ0BmJ+xcnbJpqmpQHbl1b0YGROlhFiSNeFC8bibFUtLahBnqoMGUdtc3ZmljTIYgfOHOH5XhsVEVg2NVp7VZBpP3izKD84VmDLooyBsiQROfsZ4cq4Ows6ONhl0ROdByhZIOztkSw/69869t2yDqDp0CuHOhe5KwvPufJwgcOLuecA4awBnR7ER++YZQ2JlWYAohjPK5wFCfSp0pk/H4yAZT+hrYvGMn7PXa7qvPgpU3N0eE02f0M1JdWZPrHGdnkKDTa2dGc5WeFYQvaI/4BVDAVbgeE7gBDbeqpnK2t6ot8enDdWH7Egk3hDpao73IHSH39ZJb3sDJi2wPRkTYk23c1YmkQx2Ndh3iP3pbFOsUU6B2zgx2zPQ0FHXn6j1RmJ6X5NZu5qh0dkDqrKmV2sNCd51sf7WxECgiQ93cX4xjnt9SG/PBH29XRwJ1hMxjKRg85zwBCnE8qUIg7w/xLvP5Cw3NGikSNoZEyRxpwWxSUcOPpinJSM23pCjPIRHjxRKs7e9o+U8hVfm6iknnUNrLbWK8YpMFJqMl/f6GSFQE5Bq/EGmsa17Ilxy031BCu4uzm6S0rBhlvIFkLaNPqiMhy9I9kMu2Wkn3fDpdLIwYyIM2VJUzsR6NjKzdNjm+r0zk8UiKyUb6lDRrXOoyPrBocygAmxFSQ8M6rw05PepCWiD5FTJxLSQ64YGxOrYGQt6xcmSZJZ34zRXSgKe5YVX6OirgI6Zm4yJLMJiCOiaI1lnukqXM+6MrfEJAV+QFn41XUVAsxUYtRP1SKfMxKsZ04IakpUDGZbuC6ipukobU/wurVDs5ALUeP9CBYL6IF22O4ptfW2u3IIuupvCeRC/JEmvXlhpFkiUpKB0YL4OhnMjEbw63r9QoQSQ8/p0PJGZ1WdVxZm+kR7iCb8EkkmJktIrepWkKCdlPiRBRQ4lFN4bkF4Kr2XDMkhDNlpkn1Ooj7XXtjWHX17PzqUR22HOvGAKBsKGmkzmo9CibXHGgYZsha5KC+YpVqQ25kyFgAQSPhiSAAiGkkBk6+gSmkX7n3Q5d88W3zQP5N1mGqm3FoVXPXRxWfEpp59z58hj77e/yVds/C27bO/3V595dOl3myqWL2dClUvqnFPa8ug7fT9vWTL+z69H1GemLuKko98/ffQYd+VisujpsnUtPVt8Hz372dThr0dPPP7VFPvTwcKnT54+u/tjdPzLv/jNl5+4d/TrsVORrm8u3XPT8OvvjSkPv/AHfTtMXv3jmQPll61Mb3/RuuWuttSpv/cMfpxbufTI4UbPxoqDv153cHrx/cyKve92qfySWKXy5g2Vr2/dvOxIBblHvfamG7qVa38ZndxG+t+7ZZv+2O6t+pYfz5z93Rd+4o+pS9as+jNy5/U/fT52qQLMe6wPPhzxHE4Ndg9/suK5wtv9x6Yariu/5mwbf0x8Ax5/av0zK46fvrXjbqZFf+NdztxZ0ANLj2565KRTcV852PrkiZ4fnv/0ZOvJq/799gq3UuVly2L7Oq5fXFb2H5UFMyI=

View File

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

View File

@@ -1 +0,0 @@
eNrtVV9v3EQQV8UXWa2QkND5znfn8zVGeYii0iIaFdSChNrK2qzH9jb2rru7zuUa3QOhrzyYTwAkSqqoBR4QL1CJN3jgC4RPw6x91z8hqFV5hJNO55vZmfnNzm9+PjjZBW2EkpceC2lBM27xj/nq4ETD/RqMfXhcgs1Vcnj1yq3DWouzt3NrKxMNBqwSfVMKm/cLJjOeMyH7XJUDIVN1tK2S+a8nObAE0z88/cSA9jYykLb50Z1u47xqPvD7w/5wdPn7Dc6hst4VyVUiZNY8yR6IqkcSSAtm4bhzNz+wqioEZw7j4J5R8nRTSQkt5uZ0B6DyWCF24ZEGU2Eb8MWxsczW5uAI88Ifv5+UYAzL4NsbH67AfXmyUVjv5i5vzvr5eJ1GQTCm75GSrY8mayPf93v52ButXeA4Iw6WMR6CsFoV3kZRqJm3qSHBRgUrTHNkdQ2/XHjsWle++ebdxxwdGOHZeQV/7/HnC8NvaJEJ2Xz90znvFttzF90chr5/ceGtdp6u8NNz/it7lTLwArJjHBvyozmpdwVXWh4lOIzm6fta9MhoSm5CRUb+KCDDMBqOo0lIrm7dOvxUsOYUp0oypbICnnDGc/B4V6N5JJXXWr7bXHZ9HWRm8+YwmExa2nyOM9PIgT8v/bZPl+ykEfX70/54jfYoXg7gaGPYq4Rurym2ogQaybooenSbWZ7HGI/kjbFqKjIa7VPDWQFxXcX3jXgAMVbIMtA0GroJP/dKm2ts38SFQIqiO1w5EzWTsYSysvPn0QF6XbrV6TbXM0O8PbdgaDTy16bDychf9KiQSEjJIUZeZ8YBw6XAtbMQMxHjxul5DJJtF5DQyJGnR5XOYo6g2k4TYZbOFPmFXpOrWWxtEddiFWBxi7FDATpO6uUNJWzeViuUzNyGYIKgBZsrbZeGYYAADTCN93cOw0zpHVO5tIarCmKHSchd0ba3QjKOjVUat+vl6MXin8Vk/VVigl+0moEuygGm9iqtcAIDJwrG/q8y/0WVmf4rlbkcBC+rzFvX92nHsjhnJkelmfhBMGLpcDyGcDiZhjANJuOQh5NJyCGFYcr4MJhylvjjURqMp9Pt0OfBOISQJ3w7BNSokkmRIkPdygncg9v0Ga3R25HY4BNaLP5s4s9HrfEWCozjIr2LQsdxJ3GdcV6ICltDxDXHFcOInRnTnX4suYbPt1+r1rUawW11QW9as0v6quaWp3r0TcvYVUREP1M1YRoIk4QZI5yIWpIqTVpdQRJ7TJoZuIkSy8yO6RNUA2JzwFOOkM5RCUAmEpUSDTh8QNUj7VbsWWIV6TK0MausffJBSuZYO1HyHUt2pJq1/u5oj9yrjSWGzdHI7LmDKwQagBhwLHTFS7YnyrrEDAlxUvJCOoeFCwP9O/LjZf2I7K+gLMgdudmBResStjNutMERdS+XqrbxLtPCya9jBF1Fu/l3Ie76Vxcb4w2WyIqIpl63DnSBn7uvnWqBbwzYY5itPXN38RcRsNwq

View File

@@ -13,45 +13,45 @@ From the opposite direction, scientists use `LangChain` in research and referenc
| arXiv id / Title | Authors | Published date 🔻 | LangChain Documentation|
|------------------|---------|-------------------|------------------------|
| `2403.14403v2` [Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity](http://arxiv.org/abs/2403.14403v2) | Soyeong Jeong, Jinheon Baek, Sukmin Cho, et al. | 2024&#8209;03&#8209;21 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts)
| `2403.14403v2` [Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity](http://arxiv.org/abs/2403.14403v2) | Soyeong Jeong, Jinheon Baek, Sukmin Cho, et al. | 2024&#8209;03&#8209;21 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
| `2402.03620v1` [Self-Discover: Large Language Models Self-Compose Reasoning Structures](http://arxiv.org/abs/2402.03620v1) | Pei Zhou, Jay Pujara, Xiang Ren, et al. | 2024&#8209;02&#8209;06 | `Cookbook:` [Self-Discover](https://github.com/langchain-ai/langchain/blob/master/cookbook/self-discover.ipynb)
| `2402.03367v2` [RAG-Fusion: a New Take on Retrieval-Augmented Generation](http://arxiv.org/abs/2402.03367v2) | Zackary Rackauckas | 2024&#8209;01&#8209;31 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts)
| `2402.03367v2` [RAG-Fusion: a New Take on Retrieval-Augmented Generation](http://arxiv.org/abs/2402.03367v2) | Zackary Rackauckas | 2024&#8209;01&#8209;31 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
| `2401.18059v1` [RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval](http://arxiv.org/abs/2401.18059v1) | Parth Sarthi, Salman Abdullah, Aditi Tuli, et al. | 2024&#8209;01&#8209;31 | `Cookbook:` [Raptor](https://github.com/langchain-ai/langchain/blob/master/cookbook/RAPTOR.ipynb)
| `2401.15884v2` [Corrective Retrieval Augmented Generation](http://arxiv.org/abs/2401.15884v2) | Shi-Qi Yan, Jia-Chen Gu, Yun Zhu, et al. | 2024&#8209;01&#8209;29 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts), `Cookbook:` [Langgraph Crag](https://github.com/langchain-ai/langchain/blob/master/cookbook/langgraph_crag.ipynb)
| `2401.08500v1` [Code Generation with AlphaCodium: From Prompt Engineering to Flow Engineering](http://arxiv.org/abs/2401.08500v1) | Tal Ridnik, Dedy Kredo, Itamar Friedman | 2024&#8209;01&#8209;16 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts)
| `2401.15884v2` [Corrective Retrieval Augmented Generation](http://arxiv.org/abs/2401.15884v2) | Shi-Qi Yan, Jia-Chen Gu, Yun Zhu, et al. | 2024&#8209;01&#8209;29 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts), `Cookbook:` [Langgraph Crag](https://github.com/langchain-ai/langchain/blob/master/cookbook/langgraph_crag.ipynb)
| `2401.08500v1` [Code Generation with AlphaCodium: From Prompt Engineering to Flow Engineering](http://arxiv.org/abs/2401.08500v1) | Tal Ridnik, Dedy Kredo, Itamar Friedman | 2024&#8209;01&#8209;16 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
| `2401.04088v1` [Mixtral of Experts](http://arxiv.org/abs/2401.04088v1) | Albert Q. Jiang, Alexandre Sablayrolles, Antoine Roux, et al. | 2024&#8209;01&#8209;08 | `Cookbook:` [Together Ai](https://github.com/langchain-ai/langchain/blob/master/cookbook/together_ai.ipynb)
| `2312.06648v2` [Dense X Retrieval: What Retrieval Granularity Should We Use?](http://arxiv.org/abs/2312.06648v2) | Tong Chen, Hongwei Wang, Sihao Chen, et al. | 2023&#8209;12&#8209;11 | `Template:` [propositional-retrieval](https://python.langchain.com/docs/templates/propositional-retrieval)
| `2311.09210v1` [Chain-of-Note: Enhancing Robustness in Retrieval-Augmented Language Models](http://arxiv.org/abs/2311.09210v1) | Wenhao Yu, Hongming Zhang, Xiaoman Pan, et al. | 2023&#8209;11&#8209;15 | `Template:` [chain-of-note-wiki](https://python.langchain.com/docs/templates/chain-of-note-wiki)
| `2310.11511v1` [Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection](http://arxiv.org/abs/2310.11511v1) | Akari Asai, Zeqiu Wu, Yizhong Wang, et al. | 2023&#8209;10&#8209;17 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts), `Cookbook:` [Langgraph Self Rag](https://github.com/langchain-ai/langchain/blob/master/cookbook/langgraph_self_rag.ipynb)
| `2310.06117v2` [Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models](http://arxiv.org/abs/2310.06117v2) | Huaixiu Steven Zheng, Swaroop Mishra, Xinyun Chen, et al. | 2023&#8209;10&#8209;09 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts), `Template:` [stepback-qa-prompting](https://python.langchain.com/docs/templates/stepback-qa-prompting), `Cookbook:` [Stepback-Qa](https://github.com/langchain-ai/langchain/blob/master/cookbook/stepback-qa.ipynb)
| `2310.11511v1` [Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection](http://arxiv.org/abs/2310.11511v1) | Akari Asai, Zeqiu Wu, Yizhong Wang, et al. | 2023&#8209;10&#8209;17 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts), `Cookbook:` [Langgraph Self Rag](https://github.com/langchain-ai/langchain/blob/master/cookbook/langgraph_self_rag.ipynb)
| `2310.06117v2` [Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models](http://arxiv.org/abs/2310.06117v2) | Huaixiu Steven Zheng, Swaroop Mishra, Xinyun Chen, et al. | 2023&#8209;10&#8209;09 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts), `Template:` [stepback-qa-prompting](https://python.langchain.com/docs/templates/stepback-qa-prompting), `Cookbook:` [Stepback-Qa](https://github.com/langchain-ai/langchain/blob/master/cookbook/stepback-qa.ipynb)
| `2307.15337v3` [Skeleton-of-Thought: Prompting LLMs for Efficient Parallel Generation](http://arxiv.org/abs/2307.15337v3) | Xuefei Ning, Zinan Lin, Zixuan Zhou, et al. | 2023&#8209;07&#8209;28 | `Template:` [skeleton-of-thought](https://python.langchain.com/docs/templates/skeleton-of-thought)
| `2307.09288v2` [Llama 2: Open Foundation and Fine-Tuned Chat Models](http://arxiv.org/abs/2307.09288v2) | Hugo Touvron, Louis Martin, Kevin Stone, et al. | 2023&#8209;07&#8209;18 | `Cookbook:` [Semi Structured Rag](https://github.com/langchain-ai/langchain/blob/master/cookbook/Semi_Structured_RAG.ipynb)
| `2307.03172v3` [Lost in the Middle: How Language Models Use Long Contexts](http://arxiv.org/abs/2307.03172v3) | Nelson F. Liu, Kevin Lin, John Hewitt, et al. | 2023&#8209;07&#8209;06 | `Docs:` [docs/how_to/long_context_reorder](https://python.langchain.com/docs/how_to/long_context_reorder)
| `2307.03172v3` [Lost in the Middle: How Language Models Use Long Contexts](http://arxiv.org/abs/2307.03172v3) | Nelson F. Liu, Kevin Lin, John Hewitt, et al. | 2023&#8209;07&#8209;06 | `Docs:` [docs/how_to/long_context_reorder](https://python.langchain.com/v0.2/docs/how_to/long_context_reorder)
| `2305.14283v3` [Query Rewriting for Retrieval-Augmented Large Language Models](http://arxiv.org/abs/2305.14283v3) | Xinbei Ma, Yeyun Gong, Pengcheng He, et al. | 2023&#8209;05&#8209;23 | `Template:` [rewrite-retrieve-read](https://python.langchain.com/docs/templates/rewrite-retrieve-read), `Cookbook:` [Rewrite](https://github.com/langchain-ai/langchain/blob/master/cookbook/rewrite.ipynb)
| `2305.08291v1` [Large Language Model Guided Tree-of-Thought](http://arxiv.org/abs/2305.08291v1) | Jieyi Long | 2023&#8209;05&#8209;15 | `API:` [langchain_experimental.tot](https://api.python.langchain.com/en/latest/experimental_api_reference.html#module-langchain_experimental.tot), `Cookbook:` [Tree Of Thought](https://github.com/langchain-ai/langchain/blob/master/cookbook/tree_of_thought.ipynb)
| `2305.04091v3` [Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models](http://arxiv.org/abs/2305.04091v3) | Lei Wang, Wanyu Xu, Yihuai Lan, et al. | 2023&#8209;05&#8209;06 | `Cookbook:` [Plan And Execute Agent](https://github.com/langchain-ai/langchain/blob/master/cookbook/plan_and_execute_agent.ipynb)
| `2305.02156v1` [Zero-Shot Listwise Document Reranking with a Large Language Model](http://arxiv.org/abs/2305.02156v1) | Xueguang Ma, Xinyu Zhang, Ronak Pradeep, et al. | 2023&#8209;05&#8209;03 | `Docs:` [docs/how_to/contextual_compression](https://python.langchain.com/docs/how_to/contextual_compression), `API:` [langchain...LLMListwiseRerank](https://api.python.langchain.com/en/latest/retrievers/langchain.retrievers.document_compressors.listwise_rerank.LLMListwiseRerank.html#langchain.retrievers.document_compressors.listwise_rerank.LLMListwiseRerank)
| `2305.02156v1` [Zero-Shot Listwise Document Reranking with a Large Language Model](http://arxiv.org/abs/2305.02156v1) | Xueguang Ma, Xinyu Zhang, Ronak Pradeep, et al. | 2023&#8209;05&#8209;03 | `Docs:` [docs/how_to/contextual_compression](https://python.langchain.com/v0.2/docs/how_to/contextual_compression), `API:` [langchain...LLMListwiseRerank](https://api.python.langchain.com/en/latest/retrievers/langchain.retrievers.document_compressors.listwise_rerank.LLMListwiseRerank.html#langchain.retrievers.document_compressors.listwise_rerank.LLMListwiseRerank)
| `2304.08485v2` [Visual Instruction Tuning](http://arxiv.org/abs/2304.08485v2) | Haotian Liu, Chunyuan Li, Qingyang Wu, et al. | 2023&#8209;04&#8209;17 | `Cookbook:` [Semi Structured Multi Modal Rag Llama2](https://github.com/langchain-ai/langchain/blob/master/cookbook/Semi_structured_multi_modal_RAG_LLaMA2.ipynb), [Semi Structured And Multi Modal Rag](https://github.com/langchain-ai/langchain/blob/master/cookbook/Semi_structured_and_multi_modal_RAG.ipynb)
| `2304.03442v2` [Generative Agents: Interactive Simulacra of Human Behavior](http://arxiv.org/abs/2304.03442v2) | Joon Sung Park, Joseph C. O'Brien, Carrie J. Cai, et al. | 2023&#8209;04&#8209;07 | `Cookbook:` [Generative Agents Interactive Simulacra Of Human Behavior](https://github.com/langchain-ai/langchain/blob/master/cookbook/generative_agents_interactive_simulacra_of_human_behavior.ipynb), [Multiagent Bidding](https://github.com/langchain-ai/langchain/blob/master/cookbook/multiagent_bidding.ipynb)
| `2303.17760v2` [CAMEL: Communicative Agents for "Mind" Exploration of Large Language Model Society](http://arxiv.org/abs/2303.17760v2) | Guohao Li, Hasan Abed Al Kader Hammoud, Hani Itani, et al. | 2023&#8209;03&#8209;31 | `Cookbook:` [Camel Role Playing](https://github.com/langchain-ai/langchain/blob/master/cookbook/camel_role_playing.ipynb)
| `2303.17580v4` [HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face](http://arxiv.org/abs/2303.17580v4) | Yongliang Shen, Kaitao Song, Xu Tan, et al. | 2023&#8209;03&#8209;30 | `API:` [langchain_experimental.autonomous_agents](https://api.python.langchain.com/en/latest/experimental_api_reference.html#module-langchain_experimental.autonomous_agents), `Cookbook:` [Hugginggpt](https://github.com/langchain-ai/langchain/blob/master/cookbook/hugginggpt.ipynb)
| `2301.10226v4` [A Watermark for Large Language Models](http://arxiv.org/abs/2301.10226v4) | John Kirchenbauer, Jonas Geiping, Yuxin Wen, et al. | 2023&#8209;01&#8209;24 | `API:` [langchain_community...OCIModelDeploymentTGI](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.oci_data_science_model_deployment_endpoint.OCIModelDeploymentTGI.html#langchain_community.llms.oci_data_science_model_deployment_endpoint.OCIModelDeploymentTGI), [langchain_huggingface...HuggingFaceEndpoint](https://api.python.langchain.com/en/latest/llms/langchain_huggingface.llms.huggingface_endpoint.HuggingFaceEndpoint.html#langchain_huggingface.llms.huggingface_endpoint.HuggingFaceEndpoint), [langchain_community...HuggingFaceTextGenInference](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.huggingface_text_gen_inference.HuggingFaceTextGenInference.html#langchain_community.llms.huggingface_text_gen_inference.HuggingFaceTextGenInference), [langchain_community...HuggingFaceEndpoint](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.huggingface_endpoint.HuggingFaceEndpoint.html#langchain_community.llms.huggingface_endpoint.HuggingFaceEndpoint)
| `2212.10496v1` [Precise Zero-Shot Dense Retrieval without Relevance Labels](http://arxiv.org/abs/2212.10496v1) | Luyu Gao, Xueguang Ma, Jimmy Lin, et al. | 2022&#8209;12&#8209;20 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts), `API:` [langchain...HypotheticalDocumentEmbedder](https://api.python.langchain.com/en/latest/chains/langchain.chains.hyde.base.HypotheticalDocumentEmbedder.html#langchain.chains.hyde.base.HypotheticalDocumentEmbedder), `Template:` [hyde](https://python.langchain.com/docs/templates/hyde), `Cookbook:` [Hypothetical Document Embeddings](https://github.com/langchain-ai/langchain/blob/master/cookbook/hypothetical_document_embeddings.ipynb)
| `2212.08073v1` [Constitutional AI: Harmlessness from AI Feedback](http://arxiv.org/abs/2212.08073v1) | Yuntao Bai, Saurav Kadavath, Sandipan Kundu, et al. | 2022&#8209;12&#8209;15 | `Docs:` [docs/versions/migrating_chains/constitutional_chain](https://python.langchain.com/docs/versions/migrating_chains/constitutional_chain)
| `2212.10496v1` [Precise Zero-Shot Dense Retrieval without Relevance Labels](http://arxiv.org/abs/2212.10496v1) | Luyu Gao, Xueguang Ma, Jimmy Lin, et al. | 2022&#8209;12&#8209;20 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts), `API:` [langchain...HypotheticalDocumentEmbedder](https://api.python.langchain.com/en/latest/chains/langchain.chains.hyde.base.HypotheticalDocumentEmbedder.html#langchain.chains.hyde.base.HypotheticalDocumentEmbedder), `Template:` [hyde](https://python.langchain.com/docs/templates/hyde), `Cookbook:` [Hypothetical Document Embeddings](https://github.com/langchain-ai/langchain/blob/master/cookbook/hypothetical_document_embeddings.ipynb)
| `2212.08073v1` [Constitutional AI: Harmlessness from AI Feedback](http://arxiv.org/abs/2212.08073v1) | Yuntao Bai, Saurav Kadavath, Sandipan Kundu, et al. | 2022&#8209;12&#8209;15 | `Docs:` [docs/versions/migrating_chains/constitutional_chain](https://python.langchain.com/v0.2/docs/versions/migrating_chains/constitutional_chain)
| `2212.07425v3` [Robust and Explainable Identification of Logical Fallacies in Natural Language Arguments](http://arxiv.org/abs/2212.07425v3) | Zhivar Sourati, Vishnu Priya Prasanna Venkatesh, Darshan Deshpande, et al. | 2022&#8209;12&#8209;12 | `API:` [langchain_experimental.fallacy_removal](https://api.python.langchain.com/en/latest/experimental_api_reference.html#module-langchain_experimental.fallacy_removal)
| `2211.13892v2` [Complementary Explanations for Effective In-Context Learning](http://arxiv.org/abs/2211.13892v2) | Xi Ye, Srinivasan Iyer, Asli Celikyilmaz, et al. | 2022&#8209;11&#8209;25 | `API:` [langchain_core...MaxMarginalRelevanceExampleSelector](https://api.python.langchain.com/en/latest/example_selectors/langchain_core.example_selectors.semantic_similarity.MaxMarginalRelevanceExampleSelector.html#langchain_core.example_selectors.semantic_similarity.MaxMarginalRelevanceExampleSelector)
| `2211.10435v2` [PAL: Program-aided Language Models](http://arxiv.org/abs/2211.10435v2) | Luyu Gao, Aman Madaan, Shuyan Zhou, et al. | 2022&#8209;11&#8209;18 | `API:` [langchain_experimental.pal_chain](https://api.python.langchain.com/en/latest/experimental_api_reference.html#module-langchain_experimental.pal_chain), [langchain_experimental...PALChain](https://api.python.langchain.com/en/latest/pal_chain/langchain_experimental.pal_chain.base.PALChain.html#langchain_experimental.pal_chain.base.PALChain), `Cookbook:` [Program Aided Language Model](https://github.com/langchain-ai/langchain/blob/master/cookbook/program_aided_language_model.ipynb)
| `2210.11934v2` [An Analysis of Fusion Functions for Hybrid Retrieval](http://arxiv.org/abs/2210.11934v2) | Sebastian Bruch, Siyu Gai, Amir Ingber | 2022&#8209;10&#8209;21 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts)
| `2210.03629v3` [ReAct: Synergizing Reasoning and Acting in Language Models](http://arxiv.org/abs/2210.03629v3) | Shunyu Yao, Jeffrey Zhao, Dian Yu, et al. | 2022&#8209;10&#8209;06 | `Docs:` [docs/integrations/tools/ionic_shopping](https://python.langchain.com/docs/integrations/tools/ionic_shopping), [docs/integrations/providers/cohere](https://python.langchain.com/docs/integrations/providers/cohere), [docs/concepts](https://python.langchain.com/docs/concepts), `API:` [langchain...create_react_agent](https://api.python.langchain.com/en/latest/agents/langchain.agents.react.agent.create_react_agent.html#langchain.agents.react.agent.create_react_agent), [langchain...TrajectoryEvalChain](https://api.python.langchain.com/en/latest/evaluation/langchain.evaluation.agents.trajectory_eval_chain.TrajectoryEvalChain.html#langchain.evaluation.agents.trajectory_eval_chain.TrajectoryEvalChain)
| `2209.10785v2` [Deep Lake: a Lakehouse for Deep Learning](http://arxiv.org/abs/2209.10785v2) | Sasun Hambardzumyan, Abhinav Tuli, Levon Ghukasyan, et al. | 2022&#8209;09&#8209;22 | `Docs:` [docs/integrations/providers/activeloop_deeplake](https://python.langchain.com/docs/integrations/providers/activeloop_deeplake)
| `2205.13147v4` [Matryoshka Representation Learning](http://arxiv.org/abs/2205.13147v4) | Aditya Kusupati, Gantavya Bhatt, Aniket Rege, et al. | 2022&#8209;05&#8209;26 | `Docs:` [docs/integrations/providers/snowflake](https://python.langchain.com/docs/integrations/providers/snowflake)
| `2210.11934v2` [An Analysis of Fusion Functions for Hybrid Retrieval](http://arxiv.org/abs/2210.11934v2) | Sebastian Bruch, Siyu Gai, Amir Ingber | 2022&#8209;10&#8209;21 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
| `2210.03629v3` [ReAct: Synergizing Reasoning and Acting in Language Models](http://arxiv.org/abs/2210.03629v3) | Shunyu Yao, Jeffrey Zhao, Dian Yu, et al. | 2022&#8209;10&#8209;06 | `Docs:` [docs/integrations/tools/ionic_shopping](https://python.langchain.com/v0.2/docs/integrations/tools/ionic_shopping), [docs/integrations/providers/cohere](https://python.langchain.com/v0.2/docs/integrations/providers/cohere), [docs/concepts](https://python.langchain.com/v0.2/docs/concepts), `API:` [langchain...create_react_agent](https://api.python.langchain.com/en/latest/agents/langchain.agents.react.agent.create_react_agent.html#langchain.agents.react.agent.create_react_agent), [langchain...TrajectoryEvalChain](https://api.python.langchain.com/en/latest/evaluation/langchain.evaluation.agents.trajectory_eval_chain.TrajectoryEvalChain.html#langchain.evaluation.agents.trajectory_eval_chain.TrajectoryEvalChain)
| `2209.10785v2` [Deep Lake: a Lakehouse for Deep Learning](http://arxiv.org/abs/2209.10785v2) | Sasun Hambardzumyan, Abhinav Tuli, Levon Ghukasyan, et al. | 2022&#8209;09&#8209;22 | `Docs:` [docs/integrations/providers/activeloop_deeplake](https://python.langchain.com/v0.2/docs/integrations/providers/activeloop_deeplake)
| `2205.13147v4` [Matryoshka Representation Learning](http://arxiv.org/abs/2205.13147v4) | Aditya Kusupati, Gantavya Bhatt, Aniket Rege, et al. | 2022&#8209;05&#8209;26 | `Docs:` [docs/integrations/providers/snowflake](https://python.langchain.com/v0.2/docs/integrations/providers/snowflake)
| `2205.12654v1` [Bitext Mining Using Distilled Sentence Representations for Low-Resource Languages](http://arxiv.org/abs/2205.12654v1) | Kevin Heffernan, Onur Çelebi, Holger Schwenk | 2022&#8209;05&#8209;25 | `API:` [langchain_community...LaserEmbeddings](https://api.python.langchain.com/en/latest/embeddings/langchain_community.embeddings.laser.LaserEmbeddings.html#langchain_community.embeddings.laser.LaserEmbeddings)
| `2204.00498v1` [Evaluating the Text-to-SQL Capabilities of Large Language Models](http://arxiv.org/abs/2204.00498v1) | Nitarshan Rajkumar, Raymond Li, Dzmitry Bahdanau | 2022&#8209;03&#8209;15 | `Docs:` [docs/tutorials/sql_qa](https://python.langchain.com/docs/tutorials/sql_qa), `API:` [langchain_community...SQLDatabase](https://api.python.langchain.com/en/latest/utilities/langchain_community.utilities.sql_database.SQLDatabase.html#langchain_community.utilities.sql_database.SQLDatabase), [langchain_community...SparkSQL](https://api.python.langchain.com/en/latest/utilities/langchain_community.utilities.spark_sql.SparkSQL.html#langchain_community.utilities.spark_sql.SparkSQL)
| `2204.00498v1` [Evaluating the Text-to-SQL Capabilities of Large Language Models](http://arxiv.org/abs/2204.00498v1) | Nitarshan Rajkumar, Raymond Li, Dzmitry Bahdanau | 2022&#8209;03&#8209;15 | `Docs:` [docs/tutorials/sql_qa](https://python.langchain.com/v0.2/docs/tutorials/sql_qa), `API:` [langchain_community...SQLDatabase](https://api.python.langchain.com/en/latest/utilities/langchain_community.utilities.sql_database.SQLDatabase.html#langchain_community.utilities.sql_database.SQLDatabase), [langchain_community...SparkSQL](https://api.python.langchain.com/en/latest/utilities/langchain_community.utilities.spark_sql.SparkSQL.html#langchain_community.utilities.spark_sql.SparkSQL)
| `2202.00666v5` [Locally Typical Sampling](http://arxiv.org/abs/2202.00666v5) | Clara Meister, Tiago Pimentel, Gian Wiher, et al. | 2022&#8209;02&#8209;01 | `API:` [langchain_huggingface...HuggingFaceEndpoint](https://api.python.langchain.com/en/latest/llms/langchain_huggingface.llms.huggingface_endpoint.HuggingFaceEndpoint.html#langchain_huggingface.llms.huggingface_endpoint.HuggingFaceEndpoint), [langchain_community...HuggingFaceTextGenInference](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.huggingface_text_gen_inference.HuggingFaceTextGenInference.html#langchain_community.llms.huggingface_text_gen_inference.HuggingFaceTextGenInference), [langchain_community...HuggingFaceEndpoint](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.huggingface_endpoint.HuggingFaceEndpoint.html#langchain_community.llms.huggingface_endpoint.HuggingFaceEndpoint)
| `2112.01488v3` [ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction](http://arxiv.org/abs/2112.01488v3) | Keshav Santhanam, Omar Khattab, Jon Saad-Falcon, et al. | 2021&#8209;12&#8209;02 | `Docs:` [docs/integrations/retrievers/ragatouille](https://python.langchain.com/docs/integrations/retrievers/ragatouille), [docs/integrations/providers/ragatouille](https://python.langchain.com/docs/integrations/providers/ragatouille), [docs/concepts](https://python.langchain.com/docs/concepts), [docs/integrations/providers/dspy](https://python.langchain.com/docs/integrations/providers/dspy)
| `2112.01488v3` [ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction](http://arxiv.org/abs/2112.01488v3) | Keshav Santhanam, Omar Khattab, Jon Saad-Falcon, et al. | 2021&#8209;12&#8209;02 | `Docs:` [docs/integrations/retrievers/ragatouille](https://python.langchain.com/v0.2/docs/integrations/retrievers/ragatouille), [docs/integrations/providers/ragatouille](https://python.langchain.com/v0.2/docs/integrations/providers/ragatouille), [docs/concepts](https://python.langchain.com/v0.2/docs/concepts), [docs/integrations/providers/dspy](https://python.langchain.com/v0.2/docs/integrations/providers/dspy)
| `2103.00020v1` [Learning Transferable Visual Models From Natural Language Supervision](http://arxiv.org/abs/2103.00020v1) | Alec Radford, Jong Wook Kim, Chris Hallacy, et al. | 2021&#8209;02&#8209;26 | `API:` [langchain_experimental.open_clip](https://api.python.langchain.com/en/latest/experimental_api_reference.html#module-langchain_experimental.open_clip)
| `2005.14165v4` [Language Models are Few-Shot Learners](http://arxiv.org/abs/2005.14165v4) | Tom B. Brown, Benjamin Mann, Nick Ryder, et al. | 2020&#8209;05&#8209;28 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts)
| `2005.11401v4` [Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks](http://arxiv.org/abs/2005.11401v4) | Patrick Lewis, Ethan Perez, Aleksandra Piktus, et al. | 2020&#8209;05&#8209;22 | `Docs:` [docs/concepts](https://python.langchain.com/docs/concepts)
| `2005.14165v4` [Language Models are Few-Shot Learners](http://arxiv.org/abs/2005.14165v4) | Tom B. Brown, Benjamin Mann, Nick Ryder, et al. | 2020&#8209;05&#8209;28 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
| `2005.11401v4` [Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks](http://arxiv.org/abs/2005.11401v4) | Patrick Lewis, Ethan Perez, Aleksandra Piktus, et al. | 2020&#8209;05&#8209;22 | `Docs:` [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
| `1909.05858v2` [CTRL: A Conditional Transformer Language Model for Controllable Generation](http://arxiv.org/abs/1909.05858v2) | Nitish Shirish Keskar, Bryan McCann, Lav R. Varshney, et al. | 2019&#8209;09&#8209;11 | `API:` [langchain_huggingface...HuggingFaceEndpoint](https://api.python.langchain.com/en/latest/llms/langchain_huggingface.llms.huggingface_endpoint.HuggingFaceEndpoint.html#langchain_huggingface.llms.huggingface_endpoint.HuggingFaceEndpoint), [langchain_community...HuggingFaceTextGenInference](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.huggingface_text_gen_inference.HuggingFaceTextGenInference.html#langchain_community.llms.huggingface_text_gen_inference.HuggingFaceTextGenInference), [langchain_community...HuggingFaceEndpoint](https://api.python.langchain.com/en/latest/llms/langchain_community.llms.huggingface_endpoint.HuggingFaceEndpoint.html#langchain_community.llms.huggingface_endpoint.HuggingFaceEndpoint)
## Adaptive-RAG: Learning to Adapt Retrieval-Augmented Large Language Models through Question Complexity
@@ -60,7 +60,7 @@ From the opposite direction, scientists use `LangChain` in research and referenc
- **arXiv id:** [2403.14403v2](http://arxiv.org/abs/2403.14403v2) **Published Date:** 2024-03-21
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
**Abstract:** Retrieval-Augmented Large Language Models (LLMs), which incorporate the
non-parametric knowledge from external knowledge bases into LLMs, have emerged
@@ -113,7 +113,7 @@ commonalities with human reasoning patterns.
- **arXiv id:** [2402.03367v2](http://arxiv.org/abs/2402.03367v2) **Published Date:** 2024-01-31
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
**Abstract:** Infineon has identified a need for engineers, account managers, and customers
to rapidly obtain product information. This problem is traditionally addressed
@@ -159,7 +159,7 @@ benchmark by 20% in absolute accuracy.
- **arXiv id:** [2401.15884v2](http://arxiv.org/abs/2401.15884v2) **Published Date:** 2024-01-29
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
- **Cookbook:** [langgraph_crag](https://github.com/langchain-ai/langchain/blob/master/cookbook/langgraph_crag.ipynb)
**Abstract:** Large language models (LLMs) inevitably exhibit hallucinations since the
@@ -187,7 +187,7 @@ performance of RAG-based approaches.
- **arXiv id:** [2401.08500v1](http://arxiv.org/abs/2401.08500v1) **Published Date:** 2024-01-16
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
**Abstract:** Code generation problems differ from common natural language problems - they
require matching the exact syntax of the target language, identifying happy
@@ -293,7 +293,7 @@ outside the pre-training knowledge scope.
- **arXiv id:** [2310.11511v1](http://arxiv.org/abs/2310.11511v1) **Published Date:** 2023-10-17
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
- **Cookbook:** [langgraph_self_rag](https://github.com/langchain-ai/langchain/blob/master/cookbook/langgraph_self_rag.ipynb)
**Abstract:** Despite their remarkable capabilities, large language models (LLMs) often
@@ -324,7 +324,7 @@ to these models.
- **arXiv id:** [2310.06117v2](http://arxiv.org/abs/2310.06117v2) **Published Date:** 2023-10-09
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
- **Template:** [stepback-qa-prompting](https://python.langchain.com/docs/templates/stepback-qa-prompting)
- **Cookbook:** [stepback-qa](https://github.com/langchain-ai/langchain/blob/master/cookbook/stepback-qa.ipynb)
@@ -384,7 +384,7 @@ contribute to the responsible development of LLMs.
- **arXiv id:** [2307.03172v3](http://arxiv.org/abs/2307.03172v3) **Published Date:** 2023-07-06
- **LangChain:**
- **Documentation:** [docs/how_to/long_context_reorder](https://python.langchain.com/docs/how_to/long_context_reorder)
- **Documentation:** [docs/how_to/long_context_reorder](https://python.langchain.com/v0.2/docs/how_to/long_context_reorder)
**Abstract:** While recent language models have the ability to take long contexts as input,
relatively little is known about how well they use longer context. We analyze
@@ -451,7 +451,8 @@ steps of the thought-process and explore other directions from there. To verify
the effectiveness of the proposed technique, we implemented a ToT-based solver
for the Sudoku Puzzle. Experimental results show that the ToT framework can
significantly increase the success rate of Sudoku puzzle solving. Our
implementation of the ToT-based Sudoku solver is available on [GitHub](https://github.com/jieyilong/tree-of-thought-puzzle-solver).
implementation of the ToT-based Sudoku solver is available on GitHub:
\url{https://github.com/jieyilong/tree-of-thought-puzzle-solver}.
## Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models
@@ -489,7 +490,7 @@ https://github.com/AGI-Edgerunners/Plan-and-Solve-Prompting.
- **arXiv id:** [2305.02156v1](http://arxiv.org/abs/2305.02156v1) **Published Date:** 2023-05-03
- **LangChain:**
- **Documentation:** [docs/how_to/contextual_compression](https://python.langchain.com/docs/how_to/contextual_compression)
- **Documentation:** [docs/how_to/contextual_compression](https://python.langchain.com/v0.2/docs/how_to/contextual_compression)
- **API Reference:** [langchain...LLMListwiseRerank](https://api.python.langchain.com/en/latest/retrievers/langchain.retrievers.document_compressors.listwise_rerank.LLMListwiseRerank.html#langchain.retrievers.document_compressors.listwise_rerank.LLMListwiseRerank)
**Abstract:** Supervised ranking methods based on bi-encoder or cross-encoder architectures
@@ -648,7 +649,7 @@ family, and discuss robustness and security.
- **arXiv id:** [2212.10496v1](http://arxiv.org/abs/2212.10496v1) **Published Date:** 2022-12-20
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
- **API Reference:** [langchain...HypotheticalDocumentEmbedder](https://api.python.langchain.com/en/latest/chains/langchain.chains.hyde.base.HypotheticalDocumentEmbedder.html#langchain.chains.hyde.base.HypotheticalDocumentEmbedder)
- **Template:** [hyde](https://python.langchain.com/docs/templates/hyde)
- **Cookbook:** [hypothetical_document_embeddings](https://github.com/langchain-ai/langchain/blob/master/cookbook/hypothetical_document_embeddings.ipynb)
@@ -677,7 +678,7 @@ search, QA, fact verification) and languages~(e.g. sw, ko, ja).
- **arXiv id:** [2212.08073v1](http://arxiv.org/abs/2212.08073v1) **Published Date:** 2022-12-15
- **LangChain:**
- **Documentation:** [docs/versions/migrating_chains/constitutional_chain](https://python.langchain.com/docs/versions/migrating_chains/constitutional_chain)
- **Documentation:** [docs/versions/migrating_chains/constitutional_chain](https://python.langchain.com/v0.2/docs/versions/migrating_chains/constitutional_chain)
**Abstract:** As AI systems become more capable, we would like to enlist their help to
supervise other AIs. We experiment with methods for training a harmless AI
@@ -791,7 +792,7 @@ publicly available at http://reasonwithpal.com/ .
- **arXiv id:** [2210.11934v2](http://arxiv.org/abs/2210.11934v2) **Published Date:** 2022-10-21
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
**Abstract:** We study hybrid search in text retrieval where lexical and semantic search
are fused together with the intuition that the two are complementary in how
@@ -810,7 +811,7 @@ training examples to tune its only parameter to a target domain.
- **arXiv id:** [2210.03629v3](http://arxiv.org/abs/2210.03629v3) **Published Date:** 2022-10-06
- **LangChain:**
- **Documentation:** [docs/integrations/tools/ionic_shopping](https://python.langchain.com/docs/integrations/tools/ionic_shopping), [docs/integrations/providers/cohere](https://python.langchain.com/docs/integrations/providers/cohere), [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/integrations/tools/ionic_shopping](https://python.langchain.com/v0.2/docs/integrations/tools/ionic_shopping), [docs/integrations/providers/cohere](https://python.langchain.com/v0.2/docs/integrations/providers/cohere), [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
- **API Reference:** [langchain...create_react_agent](https://api.python.langchain.com/en/latest/agents/langchain.agents.react.agent.create_react_agent.html#langchain.agents.react.agent.create_react_agent), [langchain...TrajectoryEvalChain](https://api.python.langchain.com/en/latest/evaluation/langchain.evaluation.agents.trajectory_eval_chain.TrajectoryEvalChain.html#langchain.evaluation.agents.trajectory_eval_chain.TrajectoryEvalChain)
**Abstract:** While large language models (LLMs) have demonstrated impressive capabilities
@@ -842,7 +843,7 @@ Project site with code: https://react-lm.github.io
- **arXiv id:** [2209.10785v2](http://arxiv.org/abs/2209.10785v2) **Published Date:** 2022-09-22
- **LangChain:**
- **Documentation:** [docs/integrations/providers/activeloop_deeplake](https://python.langchain.com/docs/integrations/providers/activeloop_deeplake)
- **Documentation:** [docs/integrations/providers/activeloop_deeplake](https://python.langchain.com/v0.2/docs/integrations/providers/activeloop_deeplake)
**Abstract:** Traditional data lakes provide critical data infrastructure for analytical
workloads by enabling time travel, running SQL queries, ingesting data with
@@ -867,7 +868,7 @@ TensorFlow, JAX, and integrate with numerous MLOps tools.
- **arXiv id:** [2205.13147v4](http://arxiv.org/abs/2205.13147v4) **Published Date:** 2022-05-26
- **LangChain:**
- **Documentation:** [docs/integrations/providers/snowflake](https://python.langchain.com/docs/integrations/providers/snowflake)
- **Documentation:** [docs/integrations/providers/snowflake](https://python.langchain.com/v0.2/docs/integrations/providers/snowflake)
**Abstract:** Learned representations are a central component in modern ML systems, serving
a multitude of downstream tasks. When training such representations, it is
@@ -924,7 +925,7 @@ encoders, mine bitexts, and validate the bitexts by training NMT systems.
- **arXiv id:** [2204.00498v1](http://arxiv.org/abs/2204.00498v1) **Published Date:** 2022-03-15
- **LangChain:**
- **Documentation:** [docs/tutorials/sql_qa](https://python.langchain.com/docs/tutorials/sql_qa)
- **Documentation:** [docs/tutorials/sql_qa](https://python.langchain.com/v0.2/docs/tutorials/sql_qa)
- **API Reference:** [langchain_community...SQLDatabase](https://api.python.langchain.com/en/latest/utilities/langchain_community.utilities.sql_database.SQLDatabase.html#langchain_community.utilities.sql_database.SQLDatabase), [langchain_community...SparkSQL](https://api.python.langchain.com/en/latest/utilities/langchain_community.utilities.spark_sql.SparkSQL.html#langchain_community.utilities.spark_sql.SparkSQL)
**Abstract:** We perform an empirical evaluation of Text-to-SQL capabilities of the Codex
@@ -970,7 +971,7 @@ reducing degenerate repetitions.
- **arXiv id:** [2112.01488v3](http://arxiv.org/abs/2112.01488v3) **Published Date:** 2021-12-02
- **LangChain:**
- **Documentation:** [docs/integrations/retrievers/ragatouille](https://python.langchain.com/docs/integrations/retrievers/ragatouille), [docs/integrations/providers/ragatouille](https://python.langchain.com/docs/integrations/providers/ragatouille), [docs/concepts](https://python.langchain.com/docs/concepts), [docs/integrations/providers/dspy](https://python.langchain.com/docs/integrations/providers/dspy)
- **Documentation:** [docs/integrations/retrievers/ragatouille](https://python.langchain.com/v0.2/docs/integrations/retrievers/ragatouille), [docs/integrations/providers/ragatouille](https://python.langchain.com/v0.2/docs/integrations/providers/ragatouille), [docs/concepts](https://python.langchain.com/v0.2/docs/concepts), [docs/integrations/providers/dspy](https://python.langchain.com/v0.2/docs/integrations/providers/dspy)
**Abstract:** Neural information retrieval (IR) has greatly advanced search and other
knowledge-intensive language tasks. While many neural IR methods encode queries
@@ -1021,7 +1022,7 @@ https://github.com/OpenAI/CLIP.
- **arXiv id:** [2005.14165v4](http://arxiv.org/abs/2005.14165v4) **Published Date:** 2020-05-28
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
**Abstract:** Recent work has demonstrated substantial gains on many NLP tasks and
benchmarks by pre-training on a large corpus of text followed by fine-tuning on
@@ -1054,7 +1055,7 @@ and of GPT-3 in general.
- **arXiv id:** [2005.11401v4](http://arxiv.org/abs/2005.11401v4) **Published Date:** 2020-05-22
- **LangChain:**
- **Documentation:** [docs/concepts](https://python.langchain.com/docs/concepts)
- **Documentation:** [docs/concepts](https://python.langchain.com/v0.2/docs/concepts)
**Abstract:** Large pre-trained language models have been shown to store factual knowledge
in their parameters, and achieve state-of-the-art results when fine-tuned on

View File

@@ -97,7 +97,7 @@ For guides on how to do specific tasks with LCEL, check out [the relevant how-to
### Runnable interface
<span data-heading-keywords="invoke,runnable"></span>
To make it as easy as possible to create custom chains, we've implemented a ["Runnable"](https://python.langchain.com/api_reference/core/runnables/langchain_core.runnables.base.Runnable.html#langchain_core.runnables.base.Runnable) protocol. Many LangChain components implement the `Runnable` protocol, including chat models, LLMs, output parsers, retrievers, prompt templates, and more. There are also several useful primitives for working with runnables, which you can read about below.
To make it as easy as possible to create custom chains, we've implemented a ["Runnable"](https://python.langchain.com/v0.2/api_reference/core/runnables/langchain_core.runnables.base.Runnable.html#langchain_core.runnables.base.Runnable) protocol. Many LangChain components implement the `Runnable` protocol, including chat models, LLMs, output parsers, retrievers, prompt templates, and more. There are also several useful primitives for working with runnables, which you can read about below.
This is a standard interface, which makes it easy to define custom chains as well as invoke them in a standard way.
The standard interface includes:
@@ -116,14 +116,14 @@ These also have corresponding async methods that should be used with [asyncio](h
The **input type** and **output type** varies by component:
| Component | Input Type | Output Type |
|--------------|-------------------------------------------------------|-----------------------|
| Prompt | Dictionary | PromptValue |
| ChatModel | Single string, list of chat messages or a PromptValue | ChatMessage |
| LLM | Single string, list of chat messages or a PromptValue | String |
| OutputParser | The output of an LLM or ChatModel | Depends on the parser |
| Retriever | Single string | List of Documents |
| Tool | Single string or dictionary, depending on the tool | Depends on the tool |
| Component | Input Type | Output Type |
| --- | --- | --- |
| Prompt | Dictionary | PromptValue |
| ChatModel | Single string, list of chat messages or a PromptValue | ChatMessage |
| LLM | Single string, list of chat messages or a PromptValue | String |
| OutputParser | The output of an LLM or ChatModel | Depends on the parser |
| Retriever | Single string | List of Documents |
| Tool | Single string or dictionary, depending on the tool | Depends on the tool |
All runnables expose input and output **schemas** to inspect the inputs and outputs:
@@ -236,7 +236,7 @@ This is where information like log-probs and token usage may be stored.
**`tool_calls`**
These represent a decision from a language model to call a tool. They are included as part of an `AIMessage` output.
These represent a decision from an language model to call a tool. They are included as part of an `AIMessage` output.
They can be accessed from there with the `.tool_calls` property.
This property returns a list of `ToolCall`s. A `ToolCall` is a dictionary with the following arguments:
@@ -256,8 +256,6 @@ This represents a message with role "tool", which contains the result of calling
- a `tool_call_id` field which conveys the id of the call to the tool that was called to produce this result.
- an `artifact` field which can be used to pass along arbitrary artifacts of the tool execution which are useful to track but which should not be sent to the model.
With most chat models, a `ToolMessage` can only appear in the chat history after an `AIMessage` that has a populated `tool_calls` field.
#### (Legacy) FunctionMessage
This is a legacy message type, corresponding to OpenAI's legacy function-calling API. `ToolMessage` should be used instead to correspond to the updated tool-calling API.
@@ -382,17 +380,17 @@ LangChain has lots of different types of output parsers. This is a list of outpu
| Name | Supports Streaming | Has Format Instructions | Calls LLM | Input Type | Output Type | Description |
|-----------------|--------------------|-------------------------------|-----------|----------------------------------|----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [JSON](https://python.langchain.com/api_reference/core/output_parsers/langchain_core.output_parsers.json.JsonOutputParser.html#langchain_core.output_parsers.json.JsonOutputParser) | ✅ | ✅ | | `str` \| `Message` | JSON object | Returns a JSON object as specified. You can specify a Pydantic model and it will return JSON for that model. Probably the most reliable output parser for getting structured data that does NOT use function calling. |
| [XML](https://python.langchain.com/api_reference/core/output_parsers/langchain_core.output_parsers.xml.XMLOutputParser.html#langchain_core.output_parsers.xml.XMLOutputParser) | ✅ | ✅ | | `str` \| `Message` | `dict` | Returns a dictionary of tags. Use when XML output is needed. Use with models that are good at writing XML (like Anthropic's). |
| [CSV](https://python.langchain.com/api_reference/core/output_parsers/langchain_core.output_parsers.list.CommaSeparatedListOutputParser.html#langchain_core.output_parsers.list.CommaSeparatedListOutputParser) | ✅ | ✅ | | `str` \| `Message` | `List[str]` | Returns a list of comma separated values. |
| [OutputFixing](https://python.langchain.com/api_reference/langchain/output_parsers/langchain.output_parsers.fix.OutputFixingParser.html#langchain.output_parsers.fix.OutputFixingParser) | | | ✅ | `str` \| `Message` | | Wraps another output parser. If that output parser errors, then this will pass the error message and the bad output to an LLM and ask it to fix the output. |
| [RetryWithError](https://python.langchain.com/api_reference/langchain/output_parsers/langchain.output_parsers.retry.RetryWithErrorOutputParser.html#langchain.output_parsers.retry.RetryWithErrorOutputParser) | | | ✅ | `str` \| `Message` | | Wraps another output parser. If that output parser errors, then this will pass the original inputs, the bad output, and the error message to an LLM and ask it to fix it. Compared to OutputFixingParser, this one also sends the original instructions. |
| [Pydantic](https://python.langchain.com/api_reference/core/output_parsers/langchain_core.output_parsers.pydantic.PydanticOutputParser.html#langchain_core.output_parsers.pydantic.PydanticOutputParser) | | ✅ | | `str` \| `Message` | `pydantic.BaseModel` | Takes a user defined Pydantic model and returns data in that format. |
| [YAML](https://python.langchain.com/api_reference/langchain/output_parsers/langchain.output_parsers.yaml.YamlOutputParser.html#langchain.output_parsers.yaml.YamlOutputParser) | | ✅ | | `str` \| `Message` | `pydantic.BaseModel` | Takes a user defined Pydantic model and returns data in that format. Uses YAML to encode it. |
| [PandasDataFrame](https://python.langchain.com/api_reference/langchain/output_parsers/langchain.output_parsers.pandas_dataframe.PandasDataFrameOutputParser.html#langchain.output_parsers.pandas_dataframe.PandasDataFrameOutputParser) | | ✅ | | `str` \| `Message` | `dict` | Useful for doing operations with pandas DataFrames. |
| [Enum](https://python.langchain.com/api_reference/langchain/output_parsers/langchain.output_parsers.enum.EnumOutputParser.html#langchain.output_parsers.enum.EnumOutputParser) | | ✅ | | `str` \| `Message` | `Enum` | Parses response into one of the provided enum values. |
| [Datetime](https://python.langchain.com/api_reference/langchain/output_parsers/langchain.output_parsers.datetime.DatetimeOutputParser.html#langchain.output_parsers.datetime.DatetimeOutputParser) | | ✅ | | `str` \| `Message` | `datetime.datetime` | Parses response into a datetime string. |
| [Structured](https://python.langchain.com/api_reference/langchain/output_parsers/langchain.output_parsers.structured.StructuredOutputParser.html#langchain.output_parsers.structured.StructuredOutputParser) | | ✅ | | `str` \| `Message` | `Dict[str, str]` | An output parser that returns structured information. It is less powerful than other output parsers since it only allows for fields to be strings. This can be useful when you are working with smaller LLMs. |
| [JSON](https://python.langchain.com/v0.2/api_reference/core/output_parsers/langchain_core.output_parsers.json.JsonOutputParser.html#langchain_core.output_parsers.json.JsonOutputParser) | ✅ | ✅ | | `str` \| `Message` | JSON object | Returns a JSON object as specified. You can specify a Pydantic model and it will return JSON for that model. Probably the most reliable output parser for getting structured data that does NOT use function calling. |
| [XML](https://python.langchain.com/v0.2/api_reference/core/output_parsers/langchain_core.output_parsers.xml.XMLOutputParser.html#langchain_core.output_parsers.xml.XMLOutputParser) | ✅ | ✅ | | `str` \| `Message` | `dict` | Returns a dictionary of tags. Use when XML output is needed. Use with models that are good at writing XML (like Anthropic's). |
| [CSV](https://python.langchain.com/v0.2/api_reference/core/output_parsers/langchain_core.output_parsers.list.CommaSeparatedListOutputParser.html#langchain_core.output_parsers.list.CommaSeparatedListOutputParser) | ✅ | ✅ | | `str` \| `Message` | `List[str]` | Returns a list of comma separated values. |
| [OutputFixing](https://python.langchain.com/v0.2/api_reference/langchain/output_parsers/langchain.output_parsers.fix.OutputFixingParser.html#langchain.output_parsers.fix.OutputFixingParser) | | | ✅ | `str` \| `Message` | | Wraps another output parser. If that output parser errors, then this will pass the error message and the bad output to an LLM and ask it to fix the output. |
| [RetryWithError](https://python.langchain.com/v0.2/api_reference/langchain/output_parsers/langchain.output_parsers.retry.RetryWithErrorOutputParser.html#langchain.output_parsers.retry.RetryWithErrorOutputParser) | | | ✅ | `str` \| `Message` | | Wraps another output parser. If that output parser errors, then this will pass the original inputs, the bad output, and the error message to an LLM and ask it to fix it. Compared to OutputFixingParser, this one also sends the original instructions. |
| [Pydantic](https://python.langchain.com/v0.2/api_reference/core/output_parsers/langchain_core.output_parsers.pydantic.PydanticOutputParser.html#langchain_core.output_parsers.pydantic.PydanticOutputParser) | | ✅ | | `str` \| `Message` | `pydantic.BaseModel` | Takes a user defined Pydantic model and returns data in that format. |
| [YAML](https://python.langchain.com/v0.2/api_reference/langchain/output_parsers/langchain.output_parsers.yaml.YamlOutputParser.html#langchain.output_parsers.yaml.YamlOutputParser) | | ✅ | | `str` \| `Message` | `pydantic.BaseModel` | Takes a user defined Pydantic model and returns data in that format. Uses YAML to encode it. |
| [PandasDataFrame](https://python.langchain.com/v0.2/api_reference/langchain/output_parsers/langchain.output_parsers.pandas_dataframe.PandasDataFrameOutputParser.html#langchain.output_parsers.pandas_dataframe.PandasDataFrameOutputParser) | | ✅ | | `str` \| `Message` | `dict` | Useful for doing operations with pandas DataFrames. |
| [Enum](https://python.langchain.com/v0.2/api_reference/langchain/output_parsers/langchain.output_parsers.enum.EnumOutputParser.html#langchain.output_parsers.enum.EnumOutputParser) | | ✅ | | `str` \| `Message` | `Enum` | Parses response into one of the provided enum values. |
| [Datetime](https://python.langchain.com/v0.2/api_reference/langchain/output_parsers/langchain.output_parsers.datetime.DatetimeOutputParser.html#langchain.output_parsers.datetime.DatetimeOutputParser) | | ✅ | | `str` \| `Message` | `datetime.datetime` | Parses response into a datetime string. |
| [Structured](https://python.langchain.com/v0.2/api_reference/langchain/output_parsers/langchain.output_parsers.structured.StructuredOutputParser.html#langchain.output_parsers.structured.StructuredOutputParser) | | ✅ | | `str` \| `Message` | `Dict[str, str]` | An output parser that returns structured information. It is less powerful than other output parsers since it only allows for fields to be strings. This can be useful when you are working with smaller LLMs. |
For specifics on how to use output parsers, see the [relevant how-to guides here](/docs/how_to/#output-parsers).
@@ -503,7 +501,7 @@ For specifics on how to use retrievers, see the [relevant how-to guides here](/d
For some techniques, such as [indexing and retrieval with multiple vectors per document](/docs/how_to/multi_vector/) or
[caching embeddings](/docs/how_to/caching_embeddings/), having a form of key-value (KV) storage is helpful.
LangChain includes a [`BaseStore`](https://python.langchain.com/api_reference/core/stores/langchain_core.stores.BaseStore.html) interface,
LangChain includes a [`BaseStore`](https://python.langchain.com/v0.2/api_reference/core/stores/langchain_core.stores.BaseStore.html) interface,
which allows for storage of arbitrary data. However, LangChain components that require KV-storage accept a
more specific `BaseStore[str, bytes]` instance that stores binary data (referred to as a `ByteStore`), and internally take care of
encoding and decoding data for their specific needs.
@@ -512,7 +510,7 @@ This means that as a user, you only need to think about one type of store rather
#### Interface
All [`BaseStores`](https://python.langchain.com/api_reference/core/stores/langchain_core.stores.BaseStore.html) support the following interface. Note that the interface allows
All [`BaseStores`](https://python.langchain.com/v0.2/api_reference/core/stores/langchain_core.stores.BaseStore.html) support the following interface. Note that the interface allows
for modifying **multiple** key-value pairs at once:
- `mget(key: Sequence[str]) -> List[Optional[bytes]]`: get the contents of multiple keys, returning `None` if the key does not exist
@@ -597,10 +595,10 @@ tool_call = ai_msg.tool_calls[0]
# -> ToolCall(args={...}, id=..., ...)
tool_message = tool.invoke(tool_call)
# -> ToolMessage(
# content="tool result foobar...",
# tool_call_id=...,
# name="tool_name"
# )
content="tool result foobar...",
tool_call_id=...,
name="tool_name"
)
```
If you are invoking the tool this way and want to include an [artifact](/docs/concepts/#toolmessage) for the ToolMessage, you will need to have the tool return two things.
@@ -710,15 +708,17 @@ You can subscribe to these events by using the `callbacks` argument available th
Callback handlers can either be `sync` or `async`:
* Sync callback handlers implement the [BaseCallbackHandler](https://python.langchain.com/api_reference/core/callbacks/langchain_core.callbacks.base.BaseCallbackHandler.html) interface.
* Async callback handlers implement the [AsyncCallbackHandler](https://python.langchain.com/api_reference/core/callbacks/langchain_core.callbacks.base.AsyncCallbackHandler.html) interface.
* Sync callback handlers implement the [BaseCallbackHandler](https://python.langchain.com/v0.2/api_reference/core/callbacks/langchain_core.callbacks.base.BaseCallbackHandler.html) interface.
* Async callback handlers implement the [AsyncCallbackHandler](https://python.langchain.com/v0.2/api_reference/core/callbacks/langchain_core.callbacks.base.AsyncCallbackHandler.html) interface.
During run-time LangChain configures an appropriate callback manager (e.g., [CallbackManager](https://python.langchain.com/api_reference/core/callbacks/langchain_core.callbacks.manager.CallbackManager.html) or [AsyncCallbackManager](https://python.langchain.com/api_reference/core/callbacks/langchain_core.callbacks.manager.AsyncCallbackManager.html) which will be responsible for calling the appropriate method on each "registered" callback handler when the event is triggered.
During run-time LangChain configures an appropriate callback manager (e.g., [CallbackManager](https://python.langchain.com/v0.2/api_reference/core/callbacks/langchain_core.callbacks.manager.CallbackManager.html) or [AsyncCallbackManager](https://python.langchain.com/v0.2/api_reference/core/callbacks/langchain_core.callbacks.manager.AsyncCallbackManager.html) which will be responsible for calling the appropriate method on each "registered" callback handler when the event is triggered.
#### Passing callbacks
The `callbacks` property is available on most objects throughout the API (Models, Tools, Agents, etc.) in two different places:
The callbacks are available on most objects throughout the API (Models, Tools, Agents, etc.) in two different places:
- **Request time callbacks**: Passed at the time of the request in addition to the input data.
Available on all standard `Runnable` objects. These callbacks are INHERITED by all children
of the object they are defined on. For example, `chain.invoke({"number": 25}, {"callbacks": [handler]})`.
@@ -734,10 +734,10 @@ of the object.
If you're creating a custom chain or runnable, you need to remember to propagate request time
callbacks to any child objects.
:::important Async in Python&lt;=3.10
:::important Async in Python<=3.10
Any `RunnableLambda`, a `RunnableGenerator`, or `Tool` that invokes other runnables
and is running `async` in python&lt;=3.10, will have to propagate callbacks to child
and is running `async` in python<=3.10, will have to propagate callbacks to child
objects manually. This is because LangChain cannot automatically propagate
callbacks to child objects in this case.
@@ -779,7 +779,7 @@ For models (or other components) that don't support streaming natively, this ite
you could still use the same general pattern when calling them. Using `.stream()` will also automatically call the model in streaming mode
without the need to provide additional config.
The type of each outputted chunk depends on the type of component - for example, chat models yield [`AIMessageChunks`](https://python.langchain.com/api_reference/core/messages/langchain_core.messages.ai.AIMessageChunk.html).
The type of each outputted chunk depends on the type of component - for example, chat models yield [`AIMessageChunks`](https://python.langchain.com/v0.2/api_reference/core/messages/langchain_core.messages.ai.AIMessageChunk.html).
Because this method is part of [LangChain Expression Language](/docs/concepts/#langchain-expression-language-lcel),
you can handle formatting differences from different outputs using an [output parser](/docs/concepts/#output-parsers) to transform
each yielded chunk.
@@ -827,10 +827,10 @@ including a table listing available events.
#### Callbacks
The lowest level way to stream outputs from LLMs in LangChain is via the [callbacks](/docs/concepts/#callbacks) system. You can pass a
callback handler that handles the [`on_llm_new_token`](https://python.langchain.com/api_reference/langchain/callbacks/langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.html#langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.on_llm_new_token) event into LangChain components. When that component is invoked, any
callback handler that handles the [`on_llm_new_token`](https://python.langchain.com/v0.2/api_reference/langchain/callbacks/langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.html#langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.on_llm_new_token) event into LangChain components. When that component is invoked, any
[LLM](/docs/concepts/#llms) or [chat model](/docs/concepts/#chat-models) contained in the component calls
the callback with the generated token. Within the callback, you could pipe the tokens into some other destination, e.g. a HTTP response.
You can also handle the [`on_llm_end`](https://python.langchain.com/api_reference/langchain/callbacks/langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.html#langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.on_llm_end) event to perform any necessary cleanup.
You can also handle the [`on_llm_end`](https://python.langchain.com/v0.2/api_reference/langchain/callbacks/langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.html#langchain.callbacks.streaming_aiter.AsyncIteratorCallbackHandler.on_llm_end) event to perform any necessary cleanup.
You can see [this how-to section](/docs/how_to/#callbacks) for more specifics on using callbacks.
@@ -945,7 +945,7 @@ Here's an example:
```python
from typing import Optional
from pydantic import BaseModel, Field
from langchain_core.pydantic_v1 import BaseModel, Field
class Joke(BaseModel):
@@ -1062,7 +1062,7 @@ a `tool_calls` field containing `args` that match the desired shape.
There are several acceptable formats you can use to bind tools to a model in LangChain. Here's one example:
```python
from pydantic import BaseModel, Field
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI
class ResponseFormatter(BaseModel):

View File

@@ -73,9 +73,9 @@ make docker_tests
There are also [integration tests and code-coverage](/docs/contributing/testing/) available.
### Only develop langchain_core or langchain_community
### Only develop langchain_core or langchain_experimental
If you are only developing `langchain_core` or `langchain_community`, you can simply install the dependencies for the respective projects and run tests:
If you are only developing `langchain_core` or `langchain_experimental`, you can simply install the dependencies for the respective projects and run tests:
```bash
cd libs/core
@@ -86,7 +86,7 @@ make test
Or:
```bash
cd libs/community
cd libs/experimental
poetry install --with test
make test
```

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