Skip to content

feat(anthropic): add anthropic beta client support#7010

Merged
PROFeNoM merged 2 commits intomasterfrom
alex/feat/anthropic-beta-client-support
Dec 5, 2025
Merged

feat(anthropic): add anthropic beta client support#7010
PROFeNoM merged 2 commits intomasterfrom
alex/feat/anthropic-beta-client-support

Conversation

@PROFeNoM
Copy link
Copy Markdown
Contributor

@PROFeNoM PROFeNoM commented Nov 28, 2025

https://datadoghq.atlassian.net/browse/MLOB-4728

What does this PR do?

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.

Motivation

Plugin Checklist

Additional Notes

…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.
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Nov 28, 2025

Overall package size

Self size: 13.46 MB
Deduped: 113.66 MB
No deduping: 128.68 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
Copy link
Copy Markdown

codecov Bot commented Nov 28, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.96%. Comparing base (25fa1e4) to head (5134e81).
⚠️ Report is 27 commits behind head on master.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Nov 28, 2025

Benchmarks

Benchmark execution time: 2025-12-05 10:09:55

Comparing candidate commit 5134e81 in PR branch alex/feat/anthropic-beta-client-support with baseline commit 25fa1e4 in branch master.

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

@PROFeNoM PROFeNoM marked this pull request as ready for review November 28, 2025 10:03
@PROFeNoM PROFeNoM requested a review from a team as a code owner November 28, 2025 10:03
@sabrenner sabrenner self-requested a review December 4, 2025 19:02
sabrenner
sabrenner previously approved these changes Dec 4, 2025
Copy link
Copy Markdown
Collaborator

@sabrenner sabrenner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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')
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Suggested change
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()
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Comment thread packages/dd-trace/test/llmobs/plugins/anthropic/index.spec.js
@datadog-datadog-prod-us1

This comment has been minimized.

Copy link
Copy Markdown
Collaborator

@sabrenner sabrenner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚢

@PROFeNoM PROFeNoM merged commit 930155a into master Dec 5, 2025
786 checks passed
@PROFeNoM PROFeNoM deleted the alex/feat/anthropic-beta-client-support branch December 5, 2025 15:45
dd-octo-sts Bot pushed a commit that referenced this pull request Dec 6, 2025
* 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
@dd-octo-sts dd-octo-sts Bot mentioned this pull request Dec 6, 2025
BridgeAR pushed a commit that referenced this pull request Dec 17, 2025
* 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
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