Bumps [nltk](https://github.com/nltk/nltk) from 3.9.4 to 3.10.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/nltk/nltk/releases">nltk's releases</a>.</em></p> <blockquote> <h2>v3.10.0-rc1</h2> <h2>What's Changed</h2> <ul> <li>CHILDES corpus reader: lazy loading (fixes <a href="https://redirect.github.com/nltk/nltk/issues/1340">#1340</a>) by <a href="https://github.com/nschneid"><code>@nschneid</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1341">nltk/nltk#1341</a></li> <li>Stanseg by <a href="https://github.com/casperlehmann"><code>@casperlehmann</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1350">nltk/nltk#1350</a></li> <li>Add optional CCG semantics computation by <a href="https://github.com/tanin47"><code>@tanin47</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1321">nltk/nltk#1321</a></li> <li>address of free software foundation updated by <a href="https://github.com/Lightyagami1"><code>@Lightyagami1</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1347">nltk/nltk#1347</a></li> <li>Added a verification for empty tokens by <a href="https://github.com/gnardari"><code>@gnardari</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1353">nltk/nltk#1353</a></li> <li>use data.load for vader lexicon by <a href="https://github.com/afgiel"><code>@afgiel</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1303">nltk/nltk#1303</a></li> <li>Ensure that proper exceptions are caught correctly by <a href="https://github.com/pombredanne"><code>@pombredanne</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1343">nltk/nltk#1343</a></li> <li>Reset CCGVar everytime we invoke lexicon.fromstring() and skip the unicode test because it fails on python2.7 by <a href="https://github.com/tanin47"><code>@tanin47</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1354">nltk/nltk#1354</a></li> <li>Add tanin as an author :) by <a href="https://github.com/tanin47"><code>@tanin47</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1355">nltk/nltk#1355</a></li> <li>framenet.py: remove unnecessary str() call that causes problems for names with Unicode characters by <a href="https://github.com/nschneid"><code>@nschneid</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1360">nltk/nltk#1360</a></li> <li>remove <code>u</code> because it doesn't work in Python 3.0 to 3.2 by <a href="https://github.com/tanin47"><code>@tanin47</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1362">nltk/nltk#1362</a></li> <li>moved the import for dispersion_plot out of the else block by <a href="https://github.com/dennisobrien"><code>@dennisobrien</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1364">nltk/nltk#1364</a></li> <li>Raise warning for infinite recursion by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1365">nltk/nltk#1365</a></li> <li>Patch None TypeError in align_blocks() by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1366">nltk/nltk#1366</a></li> <li>Safer try-except for catching infinite recursion by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1368">nltk/nltk#1368</a></li> <li>Collections refactor by <a href="https://github.com/nschneid"><code>@nschneid</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1382">nltk/nltk#1382</a></li> <li>Handles fringe cases in BLEU by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1383">nltk/nltk#1383</a></li> <li>Allow specifying substitution cost in edit distance by <a href="https://github.com/dnc1994"><code>@dnc1994</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1386">nltk/nltk#1386</a></li> <li>Pl196x fixes by <a href="https://github.com/pkasprzyk"><code>@pkasprzyk</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1359">nltk/nltk#1359</a></li> <li>Docs/ngrams by <a href="https://github.com/ColCarroll"><code>@ColCarroll</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1403">nltk/nltk#1403</a></li> <li>Fix conll.py by <a href="https://github.com/germanferrero"><code>@germanferrero</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1402">nltk/nltk#1402</a></li> <li>Aline by <a href="https://github.com/geoffbacon"><code>@geoffbacon</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1407">nltk/nltk#1407</a></li> <li>Handle empty files in a corpus by <a href="https://github.com/alexisdimi"><code>@alexisdimi</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1411">nltk/nltk#1411</a></li> <li>fixed bug: StackDecoder would throw exception if it's unable to finish… by <a href="https://github.com/hikui"><code>@hikui</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1405">nltk/nltk#1405</a></li> <li>add hikui to authors by <a href="https://github.com/hikui"><code>@hikui</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1412">nltk/nltk#1412</a></li> <li>removes download-cache pip flag from tox config by <a href="https://github.com/fievelk"><code>@fievelk</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1415">nltk/nltk#1415</a></li> <li>Added three tokenizers, one detokenizer and two tokenizer-related word/char list corpora by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1282">nltk/nltk#1282</a></li> <li>Much faster Vader sentiment tagging by <a href="https://github.com/georgeberry"><code>@georgeberry</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1409">nltk/nltk#1409</a></li> <li>Fixes doctest in is_cjk() and REPP tokenizer wrapper by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1420">nltk/nltk#1420</a></li> <li>Fixed doctest for UnicharsCorpusReader and NonbreakingPrefixesCorpusReader by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1422">nltk/nltk#1422</a></li> <li>Updated senna version in docstring by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1431">nltk/nltk#1431</a></li> <li>Removes Python 2.6 and Python 3.1-3.3 code, Improves Python 3.5 syntax by <a href="https://github.com/adamn"><code>@adamn</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1429">nltk/nltk#1429</a></li> <li>Cleanup by <a href="https://github.com/dimazest"><code>@dimazest</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1432">nltk/nltk#1432</a></li> <li>Fix zero division & log(0) in PunktTrainer._col_log_likelihood by <a href="https://github.com/mrecachinas"><code>@mrecachinas</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1247">nltk/nltk#1247</a></li> <li>Update stanford_segmenter.py by <a href="https://github.com/janissl"><code>@janissl</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1444">nltk/nltk#1444</a></li> <li>explained data format for constructor by <a href="https://github.com/drevicko"><code>@drevicko</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1450">nltk/nltk#1450</a></li> <li>Use a more efficient idiom for flattening nested lists by <a href="https://github.com/rmalouf"><code>@rmalouf</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1447">nltk/nltk#1447</a></li> <li>improved documentation of load_array() by <a href="https://github.com/drevicko"><code>@drevicko</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1452">nltk/nltk#1452</a></li> <li>changed "list or iterator" to "sequence" by <a href="https://github.com/drevicko"><code>@drevicko</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1453">nltk/nltk#1453</a></li> <li>Deal gracefully with degenerate cases. by <a href="https://github.com/drevicko"><code>@drevicko</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1454">nltk/nltk#1454</a></li> <li>deal with (hopefully) all degenerate cases by <a href="https://github.com/drevicko"><code>@drevicko</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1455">nltk/nltk#1455</a></li> <li>Enable unordered comparison for gaac clustering by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1456">nltk/nltk#1456</a></li> <li>Rewrite porter.py by <a href="https://github.com/ExplodingCabbage"><code>@ExplodingCabbage</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1261">nltk/nltk#1261</a></li> <li>Update naivebayes.py by <a href="https://github.com/andyreagan"><code>@andyreagan</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1461">nltk/nltk#1461</a></li> <li>Fixes bug where download status not returned. by <a href="https://github.com/nsfabina"><code>@nsfabina</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1468">nltk/nltk#1468</a></li> <li>Use lcon and rcon variables in conllned() when trace is False - Issue <a href="https://redirect.github.com/nltk/nltk/issues/1474">#1474</a> by <a href="https://github.com/timleslie"><code>@timleslie</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1475">nltk/nltk#1475</a></li> <li>Use shutil.copyfileobj for unzipping by <a href="https://github.com/ikorolev93"><code>@ikorolev93</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1478">nltk/nltk#1478</a></li> <li>Fixing Chen&Cherry method 6 smoothing in BLEU score by <a href="https://github.com/alvations"><code>@alvations</code></a> in <a href="https://redirect.github.com/nltk/nltk/pull/1477">nltk/nltk#1477</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/nltk/nltk/blob/develop/ChangeLog">nltk's changelog</a>.</em></p> <blockquote> <p>Version 3.10.0 2026-06-11</p> <ul> <li>Enforce the stricter <code>nltk.pathsec</code> security policy by default</li> <li>Document the new security model and migration guidance</li> <li>Harden resource loading against path traversal and SSRF/DNS-rebinding</li> <li>Harden downloader path handling and block XML entity expansion</li> <li>Close remaining corpus-reader security edge cases</li> <li>Replace unsafe <code>exec()</code> usage in the utility CLI</li> <li>Warn on unpickling user-provided pickles</li> <li>Add HuggingFace datasets integration (<code>nltk.huggingface</code>)</li> <li>Align TnT with Brants (2000) specifications</li> <li>Fix PorterStemmer irregular-form lowercasing in NLTK mode</li> <li>Fix TransitionParser sparse index dtype for scikit-learn 1.9</li> <li>Fix TextCat tie handling</li> <li>Fix WordNet object comparisons for incompatible types</li> <li>Cache WordNet max depth lazily for <code>lch_similarity()</code></li> <li>Fix CCG variable direction, substitution, and type-raising bugs</li> <li>Fix Jaro similarity for single-character and empty-string cases</li> <li>Improve CI and release-maintenance workflows</li> </ul> <p>Thanks to the following contributors to 3.10.0: 13rac1, alvations, bowiechen, devesh-2002, ekaf, elias-ba, haosenwang1018, HyperPS, ihitamandal, jancallewaert, jhnwnstd, JuanIMartinezB, Lemm1, LinZiyuu, Mr-Neutr0n, PastelStorm, scruge1, Syzygy2048, ylwango613, yzhaoinuw</p> <p>Version 3.9.4 2026-03-24</p> <ul> <li>Support Python 3.14</li> <li>Fix bug in Levenshtein distance when substitution_cost > 2</li> <li>Fix bug in Treebank detokeniser re quote ordering</li> <li>Fix bug in Jaro similarity for empty strings</li> <li>Several security enhancements</li> <li>Fix GHSA-rf74-v2fm-23pw: unbounded recursion in JSONTaggedDecoder</li> <li>Implement TextTiling vocabulary introduction method (Hearst 1997)</li> <li>Fix ALINE feature matrix errors and add comprehensive tests</li> <li>Support multiple VerbNet versions, fix longid/shortid regex for VerbNet ids</li> <li>Let downloader fallback to md5 when sha256 is unavailable</li> <li>Several other minor bugfixes and code cleanups</li> </ul> <p>Thanks to the following contributors to 3.9.4: Min-Yen Kan, Eric Kafe, Emily Voss, bowiechen, Hrudhai01, jancallewaert, Mr-Neutr0n, pollak.peter89, ylwango613,</p> <p>Version 3.9.3 2026-02-21</p> <ul> <li>Fix CVE-2025-14009: secure ZIP extraction in nltk.downloader (<a href="https://redirect.github.com/nltk/nltk/issues/3468">#3468</a>)</li> <li>Block path traversal/arbitrary reads in nltk.data for protocol-less refs (<a href="https://redirect.github.com/nltk/nltk/issues/3467">#3467</a>)</li> <li>Block path traversal/abs paths in corpus readers and FS pointers (<a href="https://redirect.github.com/nltk/nltk/issues/3479">#3479</a>, <a href="https://redirect.github.com/nltk/nltk/issues/3480">#3480</a>)</li> <li>Validate external StanfordSegmenter JARs using SHA256 (<a href="https://redirect.github.com/nltk/nltk/issues/3477">#3477</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="bd49f9011d"><code>bd49f90</code></a> allow escaped brackets in Tree.fromstring (<a href="https://redirect.github.com/nltk/nltk/issues/3694">#3694</a>)</li> <li><a href="27b8ad6cd5"><code>27b8ad6</code></a> don't crash chomsky_normal_form on terminals with siblings (<a href="https://redirect.github.com/nltk/nltk/issues/3693">#3693</a>)</li> <li><a href="52227d2afe"><code>52227d2</code></a> Use os.name for Windows path handling (<a href="https://redirect.github.com/nltk/nltk/issues/3605">#3605</a>)</li> <li><a href="06c0e2cc94"><code>06c0e2c</code></a> Avoid RIBES zero division on empty inputs (<a href="https://redirect.github.com/nltk/nltk/issues/3604">#3604</a>)</li> <li><a href="a167389c02"><code>a167389</code></a> Treat missing unzip output as stale (<a href="https://redirect.github.com/nltk/nltk/issues/3607">#3607</a>)</li> <li><a href="c94c967a33"><code>c94c967</code></a> Fix EOF empty document bug in IEER corpus reader (<a href="https://redirect.github.com/nltk/nltk/issues/3648">#3648</a>)</li> <li><a href="94a259c815"><code>94a259c</code></a> Enforce restrictive primitive type checking in pathsec wrappers (<a href="https://redirect.github.com/nltk/nltk/issues/3692">#3692</a>)</li> <li><a href="5ac475d2ab"><code>5ac475d</code></a> fix(security): isolate Stanford Java options and clean temp files (<a href="https://redirect.github.com/nltk/nltk/issues/3683">#3683</a>)</li> <li><a href="986f26e71b"><code>986f26e</code></a> ci(deps): bump the github-actions group with 3 updates (<a href="https://redirect.github.com/nltk/nltk/issues/3691">#3691</a>)</li> <li><a href="f26b375303"><code>f26b375</code></a> fix(security): prevent pickle RCE in TransitionParser model loading (CWE-502)...</li> <li>Additional commits viewable in <a href="https://github.com/nltk/nltk/compare/3.9.4...v3.10.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/langchain-ai/langchain/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The agent engineering platform.
LangChain is a framework for building agents and LLM-powered applications. It helps you chain together interoperable components and third-party integrations to simplify AI application development — all while future-proofing decisions as the underlying technology evolves.
Tip
Just getting started? Check out Deep Agents — a higher-level package built on LangChain for agents that have built-in capabilites for common usage patterns such as planning, subagents, file system usage, and more.
Quickstart
uv add langchain
from langchain.chat_models import init_chat_model
model = init_chat_model("openai:gpt-5.5")
result = model.invoke("Hello, world!")
If you're looking for more advanced customization or agent orchestration, check out LangGraph, our framework for building controllable agent workflows.
For an equivalent JS/TS library, check out LangChain.js.
Tip
For developing, debugging, and deploying AI agents and LLM applications, see LangSmith.
LangChain ecosystem
While the LangChain framework can be used standalone, it also integrates seamlessly with any LangChain product, giving developers a full suite of tools when building LLM applications.
- Deep Agents — Build agents that can plan, use subagents, and leverage file systems for complex tasks
- LangGraph — Build agents that can reliably handle complex tasks with our low-level agent orchestration framework
- Integrations — Chat & embedding models, tools & toolkits, and more
- LangSmith — Agent evals, observability, and debugging for LLM apps
- LangSmith Deployment — Deploy and scale agents with a purpose-built platform for long-running, stateful workflows
Why use LangChain?
LangChain helps developers build applications powered by LLMs through a standard interface for models, embeddings, vector stores, and more.
- Real-time data augmentation — Easily connect LLMs to diverse data sources and external/internal systems, drawing from LangChain's vast library of integrations with model providers, tools, vector stores, retrievers, and more
- Model interoperability — Swap models in and out as your engineering team experiments to find the best choice for your application's needs. As the industry frontier evolves, adapt quickly — LangChain's abstractions keep you moving without losing momentum
- Rapid prototyping — Quickly build and iterate on LLM applications with LangChain's modular, component-based architecture. Test different approaches and workflows without rebuilding from scratch, accelerating your development cycle
- Production-ready features — Deploy reliable applications with built-in support for monitoring, evaluation, and debugging through integrations like LangSmith. Scale with confidence using battle-tested patterns and best practices
- Vibrant community and ecosystem — Leverage a rich ecosystem of integrations, templates, and community-contributed components. Benefit from continuous improvements and stay up-to-date with the latest AI developments through an active open-source community
- Flexible abstraction layers — Work at the level of abstraction that suits your needs — from high-level chains for quick starts to low-level components for fine-grained control. LangChain grows with your application's complexity
Resources
- Documentation — conceptual overviews and guides
- LangChain ecosystem overview — how LangChain, LangGraph, and Deep Agents fit together
- API reference — complete reference for all public classes, functions, and types
- Discussions — community forum for technical questions, ideas, and feedback
- LangChain Academy — comprehensive, free courses on LangChain libraries and products, made by the LangChain team
- Contributing Guide — how to contribute and find good first issues
- Code of Conduct — community guidelines and standards