feat(anthropic): add anthropic beta client support#7010
Conversation
…ng test cases - Added a new hook for the beta version of the Anthropic SDK to support message creation. - Introduced test cases for the beta messages.create and messages.stream methods, ensuring proper span creation and handling of streaming responses. - Created two new YAML test cassettes to validate interactions with the beta API.
Overall package sizeSelf size: 13.46 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.3.0 | 20.73 MB | 20.74 MB | | @datadog/pprof | 5.12.0 | 11.19 MB | 11.57 MB | | @datadog/native-iast-taint-tracking | 4.1.0 | 9.01 MB | 9.02 MB | | @opentelemetry/resources | 1.30.1 | 557.67 kB | 7.71 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.83 MB | | @datadog/wasm-js-rewriter | 5.0.1 | 2.82 MB | 3.53 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api-logs | 0.208.0 | 199.48 kB | 1.42 MB | | @opentelemetry/api | 1.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.15.0 | 127.66 kB | 856.24 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | @datadog/openfeature-node-server | 0.2.0 | 118.51 kB | 437.19 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | @isaacs/ttlcache | 2.1.3 | 90.79 kB | 90.79 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB | | escape-string-regexp | 5.0.0 | 3.66 kB | 3.66 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #7010 +/- ##
==========================================
+ Coverage 84.94% 84.96% +0.02%
==========================================
Files 514 514
Lines 21754 21789 +35
==========================================
+ Hits 18478 18513 +35
Misses 3276 3276 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2025-12-05 10:09:55 Comparing candidate commit 5134e81 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 293 metrics, 27 unstable metrics. |
sabrenner
left a comment
There was a problem hiding this comment.
lgtm just a couple thoughts for testing! glad it was easy enough to do with another patching hook 😄
| client = new Anthropic({ baseURL: 'http://127.0.0.1:9126/vcr/anthropic' }) | ||
| }) | ||
|
|
||
| const isBetaSupported = semver.gte(semver.coerce(resolvedVersion), '0.33.0') |
There was a problem hiding this comment.
let's use semifies i think the rest of the guild is trying to move away from semver if possible since semifies is a smaller dev dep and does most of what we want
| const isBetaSupported = semver.gte(semver.coerce(resolvedVersion), '0.33.0') | |
| const isBetaSupported = semifies(realVersion, '>=0.33.0') |
with requiring semifies at the top
const semifies = require('semifies')but lmk if that doesn't work!
|
|
||
| describe('beta.messages.create', () => { | ||
| before(function () { | ||
| if (!isBetaSupported || !client.beta?.messages) this.skip() |
There was a problem hiding this comment.
just to double check for myself - i would think that just the isBetaSupported is enough, if there's also !client.beta.messages for some of those versions, should we refine our version patching/support?
This comment has been minimized.
This comment has been minimized.
* Implement beta message handling for Anthropic SDK and add corresponding test cases - Added a new hook for the beta version of the Anthropic SDK to support message creation. - Introduced test cases for the beta messages.create and messages.stream methods, ensuring proper span creation and handling of streaming responses. - Created two new YAML test cassettes to validate interactions with the beta API. * code review
* Implement beta message handling for Anthropic SDK and add corresponding test cases - Added a new hook for the beta version of the Anthropic SDK to support message creation. - Introduced test cases for the beta messages.create and messages.stream methods, ensuring proper span creation and handling of streaming responses. - Created two new YAML test cassettes to validate interactions with the beta API. * code review
https://datadoghq.atlassian.net/browse/MLOB-4728
What does this PR do?
Implement beta message handling for Anthropic SDK and add corresponding test cases
Motivation
Plugin Checklist
Additional Notes