Skip to content

feat(server-ai): stamp modelKey and modelVersion on AI usage events (AIC-2857)#36

Open
atornsii wants to merge 3 commits into
mainfrom
atornsii/AIC-2857/add-support-for-model-key-version
Open

feat(server-ai): stamp modelKey and modelVersion on AI usage events (AIC-2857)#36
atornsii wants to merge 3 commits into
mainfrom
atornsii/AIC-2857/add-support-for-model-key-version

Conversation

@atornsii

@atornsii atornsii commented Jul 8, 2026

Copy link
Copy Markdown

Summary

  • Read modelKey and modelVersion from the AI Config variation payload (variation['model']) and expose them on ModelConfig
  • Stamp modelKey (when present) and modelVersion on all AIConfigTracker metric event payloads, alongside existing modelName/providerName fields
  • Default modelVersion to 1 when absent, matching variation version handling; exclude both fields from the resumption token
  • Additive/backward compatible — older payloads without the new fields continue to work

Part of AIC-2857 / AIC-2849. Mirrors the Python SDK implementation in python-server-sdk-ai#208. Depends on backend payload work (AIC-2876) shipping modelKey/modelVersion on variations.

Test plan

  • bundle exec rspec (72 passed)
  • bundle exec rubocop on changed files (no offenses)
  • Verify against a staging environment once AIC-2876 payload is available
Open in Web Open in Cursor 

Open in Devin Review

…AIC-2857)

Read modelKey and modelVersion from the AI Config variation payload and expose
them on ModelConfig. Stamp both fields on all AIConfigTracker metric event
payloads alongside existing modelName/providerName fields.

Default modelVersion to 1 when absent. Exclude both fields from the resumption
token. Additive and backward compatible with older payloads.

Co-authored-by: Anthony Torns II <atornsii@users.noreply.github.com>
@jsonbailey

jsonbailey commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Holding based on our conversation today and we will follow up on slack before reviewing.

@atornsii
atornsii marked this pull request as ready for review July 9, 2026 20:31
@atornsii
atornsii requested a review from a team as a code owner July 9, 2026 20:31
@atornsii
atornsii marked this pull request as draft July 15, 2026 21:36
atornsii and others added 2 commits July 15, 2026 16:20
Gonfalon moved these two fields from the payload's model object to
_ldMeta (launchdarkly/gonfalon#67230) to avoid modelVersion reading as
the underlying LLM's own version. Field names are unchanged; only the
JSON location moves. ModelConfig's public accessors and the tracker's
stamped event fields are untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
model_key/model_version should only be visible via the tracker's
stamped event data, mirroring how variation_key/version are treated.
They now flow from the already-parsed _ldMeta fields straight into
the tracker factory instead of being attached to ModelConfig.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@atornsii
atornsii marked this pull request as ready for review July 20, 2026 17:36

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Open in Devin Review

@jsonbailey jsonbailey left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Approved with a non blocking nit.

Comment thread lib/server/ai/client.rb
provider_config = ProviderConfig.new(provider_config.fetch(:name, ''))
end

tracked_model_version = (variation.dig(:_ldMeta, :modelVersion) || 1).to_i

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

nit: I would just call this model_version and move it down where we set the model_key value below.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants