Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(langchain): do not throw when result is undefined #4933

Merged
merged 2 commits into from
Nov 22, 2024

Conversation

sabrenner
Copy link
Collaborator

@sabrenner sabrenner commented Nov 22, 2024

What does this PR do?

Fixes cases when the underlying chain (llm call, chat model call, embedding, or some other chain operation) results in the output of the chain or part of the chain being undefined. This only happens for LLMs and chat model calls, as the embedding handler returns early if the result is not an array (undefined isn't), and the chain handler first array-ifys the result, and since we normalize undefined to undefined, the tag never gets added to the span.

The fix adds optional chaining to the iteration over result.generations. Iterating over undefined does nothing, and since that is our only operation in getSpanEndTags for both LLMs and chat models, we return early.

Despite chain and embedding handlers not having this bug, I added regression tests to be safe.

Motivation

We do not want to throw from plugins.

Copy link

Overall package size

Self size: 8.1 MB
Deduped: 94.6 MB
No deduping: 94.94 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.2.2 | 29.27 MB | 29.27 MB | | @datadog/native-appsec | 8.3.0 | 19.37 MB | 19.38 MB | | @datadog/native-iast-taint-tracking | 3.2.0 | 13.9 MB | 13.91 MB | | @datadog/pprof | 5.4.1 | 9.76 MB | 10.13 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.5.0 | 2.51 MB | 2.65 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 3.0.1 | 1.06 MB | 1.46 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.11.2 | 112.74 kB | 826.22 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

@pr-commenter
Copy link

pr-commenter bot commented Nov 22, 2024

Benchmarks

Benchmark execution time: 2024-11-22 15:49:14

Comparing candidate commit 8f383c5 in PR branch sabrenner/langchain-bugfix with baseline commit fcc3184 in branch master.

Found 1 performance improvements and 0 performance regressions! Performance is the same for 144 metrics, 0 unstable metrics.

scenario:plugin-graphql-with-depth-on-max-18

  • 🟩 max_rss_usage [-65.166MB; -59.314MB] or [-6.703%; -6.101%]

@sabrenner sabrenner marked this pull request as ready for review November 22, 2024 15:50
@sabrenner sabrenner requested a review from a team as a code owner November 22, 2024 15:50
@sabrenner sabrenner merged commit d3b9b3a into master Nov 22, 2024
244 of 245 checks passed
@sabrenner sabrenner deleted the sabrenner/langchain-bugfix branch November 22, 2024 16:10
bengl pushed a commit that referenced this pull request Nov 25, 2024
* do not throw when result is undefined

* remove `expect` require
@bengl bengl mentioned this pull request Nov 25, 2024
bengl pushed a commit that referenced this pull request Nov 25, 2024
* do not throw when result is undefined

* remove `expect` require
@bengl bengl mentioned this pull request Nov 25, 2024
rochdev pushed a commit that referenced this pull request Nov 26, 2024
* do not throw when result is undefined

* remove `expect` require
rochdev pushed a commit that referenced this pull request Nov 26, 2024
* do not throw when result is undefined

* remove `expect` require
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants