@launchdarkly/server-sdk-ai 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +14 -4
  3. package/__tests__/LDAIClientImpl.test.ts +136 -0
  4. package/__tests__/LDAIConfigTrackerImpl.test.ts +270 -0
  5. package/__tests__/TokenUsage.test.ts +78 -0
  6. package/dist/LDAIClientImpl.d.ts.map +1 -1
  7. package/dist/LDAIClientImpl.js +4 -1
  8. package/dist/LDAIClientImpl.js.map +1 -1
  9. package/dist/api/LDAIClient.d.ts +37 -21
  10. package/dist/api/LDAIClient.d.ts.map +1 -1
  11. package/dist/api/config/LDAIConfig.d.ts +9 -0
  12. package/dist/api/config/LDAIConfig.d.ts.map +1 -1
  13. package/dist/api/metrics/index.d.ts +0 -1
  14. package/dist/api/metrics/index.d.ts.map +1 -1
  15. package/dist/api/metrics/index.js +0 -1
  16. package/dist/api/metrics/index.js.map +1 -1
  17. package/dist/index.d.ts +8 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js.map +1 -1
  20. package/docs/assets/navigation.js +1 -1
  21. package/docs/assets/search.js +1 -1
  22. package/docs/enums/LDFeedbackKind.html +4 -4
  23. package/docs/functions/createBedrockTokenUsage.html +1 -1
  24. package/docs/functions/initAi.html +2 -2
  25. package/docs/hierarchy.html +1 -0
  26. package/docs/index.html +6 -3
  27. package/docs/interfaces/LDAIClient.html +15 -14
  28. package/docs/interfaces/LDAIConfig.html +5 -5
  29. package/docs/interfaces/LDAIConfigTracker.html +9 -9
  30. package/docs/interfaces/LDAIDefaults.html +8 -0
  31. package/docs/interfaces/LDGenerationConfig.html +4 -4
  32. package/docs/interfaces/LDMessage.html +4 -4
  33. package/docs/interfaces/LDModelConfig.html +10 -5
  34. package/docs/interfaces/LDTokenUsage.html +5 -5
  35. package/jest.config.js +7 -0
  36. package/package.json +2 -2
  37. package/src/LDAIClientImpl.ts +4 -1
  38. package/src/api/LDAIClient.ts +38 -22
  39. package/src/api/config/LDAIConfig.ts +11 -0
  40. package/src/api/metrics/index.ts +0 -1
  41. package/src/index.ts +8 -0
  42. package/dist/api/metrics/UnderScoreTokenUsage.d.ts +0 -3
  43. package/dist/api/metrics/UnderScoreTokenUsage.d.ts.map +0 -1
  44. package/dist/api/metrics/UnderScoreTokenUsage.js +0 -12
  45. package/dist/api/metrics/UnderScoreTokenUsage.js.map +0 -1
  46. package/docs/functions/createUnderscoreTokenUsage.html +0 -1
  47. package/src/api/metrics/UnderScoreTokenUsage.ts +0 -9
@@ -1,5 +1,10 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LDModelConfig | @launchdarkly/server-sdk-ai - v0.1.0</title><meta name="description" content="Documentation for @launchdarkly/server-sdk-ai"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@launchdarkly/server-sdk-ai - v0.1.0</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@launchdarkly/server-sdk-ai</a></li><li><a href="LDModelConfig.html">LDModelConfig</a></li></ul><h1>Interface LDModelConfig</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Configuration related to the model.</p>
2
- </div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">LDModelConfig</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="LDModelConfig.html#modelId">modelId</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span>[<span class="tsd-kind-index-signature">index</span>: <span class="tsd-signature-type">string</span>]<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><section class="tsd-panel"><h4 class="tsd-before-signature">Indexable</h4><ul class="tsd-signatures"><li class="tsd-index-signature"><div class="tsd-signature"><span class="tsd-signature-symbol">[</span><span class="tsd-kind-parameter">index</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">]: </span><span class="tsd-signature-type">unknown</span></div><div class="tsd-comment tsd-typography"><p>And additional model specific information.</p>
3
- </div><div class="tsd-comment tsd-typography"></div></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/cc35e9ed1c2a3fe9d6cacb7e9654b9160e90879c/packages/sdk/server-ai/src/api/config/LDAIConfig.ts#L6">api/config/LDAIConfig.ts:6</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="LDModelConfig.html#modelId" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>model<wbr/>Id?</span></a>
4
- </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="modelId" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>model<wbr/>Id</span><a href="#modelId" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">model<wbr/>Id</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>The ID of the model.</p>
5
- </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/cc35e9ed1c2a3fe9d6cacb7e9654b9160e90879c/packages/sdk/server-ai/src/api/config/LDAIConfig.ts#L10">api/config/LDAIConfig.ts:10</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#modelId" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>model<wbr/>Id</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@launchdarkly/server-sdk-ai - v0.1.0</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
1
+ <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LDModelConfig | @launchdarkly/server-sdk-ai - v0.2.0</title><meta name="description" content="Documentation for @launchdarkly/server-sdk-ai"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@launchdarkly/server-sdk-ai - v0.2.0</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@launchdarkly/server-sdk-ai</a></li><li><a href="LDModelConfig.html">LDModelConfig</a></li></ul><h1>Interface LDModelConfig</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Configuration related to the model.</p>
2
+ </div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">LDModelConfig</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="LDModelConfig.html#maxTokens">maxTokens</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="LDModelConfig.html#modelId">modelId</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="LDModelConfig.html#temperature">temperature</a><span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span>[<span class="tsd-kind-index-signature">index</span>: <span class="tsd-signature-type">string</span>]<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><section class="tsd-panel"><h4 class="tsd-before-signature">Indexable</h4><ul class="tsd-signatures"><li class="tsd-index-signature"><div class="tsd-signature"><span class="tsd-signature-symbol">[</span><span class="tsd-kind-parameter">index</span>: <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">]: </span><span class="tsd-signature-type">unknown</span></div><div class="tsd-comment tsd-typography"><p>And additional model specific information.</p>
3
+ </div><div class="tsd-comment tsd-typography"></div></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/config/LDAIConfig.ts#L6">api/config/LDAIConfig.ts:6</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="LDModelConfig.html#maxTokens" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>max<wbr/>Tokens?</span></a>
4
+ <a href="LDModelConfig.html#modelId" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>model<wbr/>Id?</span></a>
5
+ <a href="LDModelConfig.html#temperature" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>temperature?</span></a>
6
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="maxTokens" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>max<wbr/>Tokens</span><a href="#maxTokens" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">max<wbr/>Tokens</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>The maximum number of tokens.</p>
7
+ </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/config/LDAIConfig.ts#L21">api/config/LDAIConfig.ts:21</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="modelId" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>model<wbr/>Id</span><a href="#modelId" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">model<wbr/>Id</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>The ID of the model.</p>
8
+ </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/config/LDAIConfig.ts#L10">api/config/LDAIConfig.ts:10</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="temperature" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><code class="tsd-tag">Optional</code><span>temperature</span><a href="#temperature" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">temperature</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Tuning parameter for randomness versus determinism. Exact effect will be determined by the
9
+ model.</p>
10
+ </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/config/LDAIConfig.ts#L16">api/config/LDAIConfig.ts:16</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#maxTokens" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>max<wbr/>Tokens</span></a><a href="#modelId" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>model<wbr/>Id</span></a><a href="#temperature" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>temperature</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@launchdarkly/server-sdk-ai - v0.2.0</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1,8 +1,8 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LDTokenUsage | @launchdarkly/server-sdk-ai - v0.1.0</title><meta name="description" content="Documentation for @launchdarkly/server-sdk-ai"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@launchdarkly/server-sdk-ai - v0.1.0</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@launchdarkly/server-sdk-ai</a></li><li><a href="LDTokenUsage.html">LDTokenUsage</a></li></ul><h1>Interface LDTokenUsage</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Information about token usage.</p>
2
- </div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">LDTokenUsage</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="LDTokenUsage.html#input">input</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="LDTokenUsage.html#output">output</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="LDTokenUsage.html#total">total</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/cc35e9ed1c2a3fe9d6cacb7e9654b9160e90879c/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L4">api/metrics/LDTokenUsage.ts:4</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="LDTokenUsage.html#input" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>input</span></a>
1
+ <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LDTokenUsage | @launchdarkly/server-sdk-ai - v0.2.0</title><meta name="description" content="Documentation for @launchdarkly/server-sdk-ai"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@launchdarkly/server-sdk-ai - v0.2.0</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@launchdarkly/server-sdk-ai</a></li><li><a href="LDTokenUsage.html">LDTokenUsage</a></li></ul><h1>Interface LDTokenUsage</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Information about token usage.</p>
2
+ </div><div class="tsd-comment tsd-typography"></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface </span><span class="tsd-kind-interface">LDTokenUsage</span> <span class="tsd-signature-symbol">{ </span><br/><span>    </span><a class="tsd-kind-property" href="LDTokenUsage.html#input">input</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="LDTokenUsage.html#output">output</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span>    </span><a class="tsd-kind-property" href="LDTokenUsage.html#total">total</a><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">; </span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L4">api/metrics/LDTokenUsage.ts:4</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><h5 class="tsd-index-heading uppercase" role="button" aria-expanded="false" tabIndex="0"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-chevronSmall"></use></svg> Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="LDTokenUsage.html#input" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>input</span></a>
3
3
  <a href="LDTokenUsage.html#output" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>output</span></a>
4
4
  <a href="LDTokenUsage.html#total" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>total</span></a>
5
5
  </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><h2><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg> Properties</h2></summary><section><section class="tsd-panel tsd-member"><a id="input" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>input</span><a href="#input" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">input</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Number of tokens in the input.</p>
6
- </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/cc35e9ed1c2a3fe9d6cacb7e9654b9160e90879c/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L13">api/metrics/LDTokenUsage.ts:13</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="output" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>output</span><a href="#output" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">output</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Number of tokens in the output.</p>
7
- </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/cc35e9ed1c2a3fe9d6cacb7e9654b9160e90879c/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L18">api/metrics/LDTokenUsage.ts:18</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="total" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>total</span><a href="#total" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">total</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Combined token usage.</p>
8
- </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/cc35e9ed1c2a3fe9d6cacb7e9654b9160e90879c/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L8">api/metrics/LDTokenUsage.ts:8</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#input" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>input</span></a><a href="#output" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>output</span></a><a href="#total" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>total</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@launchdarkly/server-sdk-ai - v0.1.0</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
6
+ </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L13">api/metrics/LDTokenUsage.ts:13</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="output" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>output</span><a href="#output" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">output</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Number of tokens in the output.</p>
7
+ </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L18">api/metrics/LDTokenUsage.ts:18</a></li></ul></aside></section><section class="tsd-panel tsd-member"><a id="total" class="tsd-anchor"></a><h3 class="tsd-anchor-link"><span>total</span><a href="#total" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">total</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><div class="tsd-comment tsd-typography"><p>Combined token usage.</p>
8
+ </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/6c4bb82afe142e6a8faa29c6f248db1e5c17c078/packages/sdk/server-ai/src/api/metrics/LDTokenUsage.ts#L8">api/metrics/LDTokenUsage.ts:8</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="tsd-otp-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#input" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>input</span></a><a href="#output" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>output</span></a><a href="#total" class=""><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1024"></use></svg><span>total</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@launchdarkly/server-sdk-ai - v0.2.0</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
package/jest.config.js ADDED
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ transform: { '^.+\\.ts?$': 'ts-jest' },
3
+ testMatch: ['**/__tests__/**/*test.ts?(x)'],
4
+ testEnvironment: 'node',
5
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
6
+ collectCoverageFrom: ['src/**/*.ts'],
7
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@launchdarkly/server-sdk-ai",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "LaunchDarkly AI SDK for Server-Side JavaScript",
5
5
  "homepage": "https://github.com/launchdarkly/js-core/tree/main/packages/sdk/server-ai",
6
6
  "repository": {
@@ -16,7 +16,7 @@
16
16
  "prettier": "prettier --write '**/*.@(js|ts|tsx|json|css)' --ignore-path ../../../.prettierignore",
17
17
  "lint:fix": "yarn run lint --fix",
18
18
  "check": "yarn prettier && yarn lint && yarn build && yarn test",
19
- "test": "echo No tests added yet."
19
+ "test": "jest"
20
20
  },
21
21
  "keywords": [
22
22
  "launchdarkly",
@@ -41,7 +41,10 @@ export class LDAIClientImpl implements LDAIClient {
41
41
  const value: VariationContent = await this._ldClient.variation(key, context, defaultValue);
42
42
  // We are going to modify the contents before returning them, so we make a copy.
43
43
  // This isn't a deep copy and the application developer should not modify the returned content.
44
- const config: LDGenerationConfig = { ...value };
44
+ const config: LDGenerationConfig = {};
45
+ if (value.model) {
46
+ config.model = { ...value.model };
47
+ }
45
48
  const allVariables = { ...variables, ldctx: context };
46
49
 
47
50
  if (value.prompt) {
@@ -3,51 +3,66 @@ import { LDContext } from '@launchdarkly/js-server-sdk-common';
3
3
  import { LDAIConfig, LDGenerationConfig } from './config/LDAIConfig';
4
4
 
5
5
  /**
6
- * Interface for performing AI operations using LaunchDarkly.
6
+ * Interface for default model configuration.
7
7
  */
8
+ export interface LDAIDefaults extends LDGenerationConfig {
9
+ /**
10
+ * Whether the configuration is enabled.
11
+ */
12
+ enabled?: boolean;
13
+ }
8
14
 
15
+ /**
16
+ * Interface for performing AI operations using LaunchDarkly.
17
+ */
9
18
  export interface LDAIClient {
10
19
  /**
11
20
  * Parses and interpolates a template string with the provided variables.
12
21
  *
13
- * @param template - The template string to be parsed and interpolated.
14
- * @param variables - An object containing the variables to be used for interpolation.
22
+ * @param template The template string to be parsed and interpolated.
23
+ * @param variables An object containing the variables to be used for interpolation.
15
24
  * @returns The interpolated string.
16
25
  */
17
26
  interpolateTemplate(template: string, variables: Record<string, unknown>): string;
18
27
 
19
28
  /**
20
- * Retrieves and processes a prompt template based on the provided key, LaunchDarkly context, and
21
- * variables.
29
+ * Retrieves and processes an AI configuration based on the provided key, LaunchDarkly context,
30
+ * and variables. This includes the model configuration and the processed prompts.
22
31
  *
23
- * @param key - A unique identifier for the prompt template. This key is used to fetch the correct
24
- * prompt from storage or configuration.
25
- * @param context - The LaunchDarkly context object that contains relevant information about the
26
- * current environment, user, or session. This context may influence how the prompt is processed
27
- * or personalized.
28
- * @param variables - A map of key-value pairs representing dynamic variables to be injected into
32
+ * @param key The key of the AI configuration.
33
+ * @param context The LaunchDarkly context object that contains relevant information about the
34
+ * current environment, user, or session. This context may influence how the configuration is
35
+ * processed or personalized.
36
+ * @param variables A map of key-value pairs representing dynamic variables to be injected into
29
37
  * the prompt template. The keys correspond to placeholders within the template, and the values
30
38
  * are the corresponding replacements.
31
- * @param defaultValue - A fallback value to be used if the prompt template associated with the
32
- * key is not found or if any errors occur during processing.
39
+ * @param defaultValue A fallback value containing model configuration and prompts. This will
40
+ * be used if the configurationuration is not available from launchdarkly.
33
41
  *
34
- * @returns The processed prompt after all variables have been substituted in the stored prompt
35
- * template. If the prompt cannot be retrieved or processed, the `defaultValue` is returned.
42
+ * @returns The AI configurationuration including a processed prompt after all variables have been
43
+ * substituted in the stored prompt template. This will also include a `tracker` used to track
44
+ * the state of the AI operation. If the configuration cannot be accessed from LaunchDarkly, then
45
+ * the return value will include information from the defaultValue.
36
46
  *
37
47
  * @example
38
48
  * ```
39
49
  * const key = "welcome_prompt";
40
50
  * const context = {...};
41
51
  * const variables = {username: 'john'};
42
- * const defaultValue = {};
52
+ * const defaultValue = {
53
+ * enabled: false,
54
+ * };
43
55
  *
44
56
  * const result = modelConfig(key, context, defaultValue, variables);
45
57
  * // Output:
46
58
  * {
47
- * modelId: "gpt-4o",
48
- * temperature: 0.2,
49
- * maxTokens: 4096,
50
- * userDefinedKey: "myValue",
59
+ * enabled: true,
60
+ * config: {
61
+ * modelId: "gpt-4o",
62
+ * temperature: 0.2,
63
+ * maxTokens: 4096,
64
+ * userDefinedKey: "myValue",
65
+ * },
51
66
  * prompt: [
52
67
  * {
53
68
  * role: "system",
@@ -57,11 +72,12 @@ export interface LDAIClient {
57
72
  * role: "user",
58
73
  * content: "Explain how you're an amazing GPT."
59
74
  * }
60
- * ]
75
+ * ],
76
+ * tracker: ...
61
77
  * }
62
78
  * ```
63
79
  */
64
- modelConfig<TDefault extends LDGenerationConfig>(
80
+ modelConfig<TDefault extends LDAIDefaults>(
65
81
  key: string,
66
82
  context: LDContext,
67
83
  defaultValue: TDefault,
@@ -9,6 +9,17 @@ export interface LDModelConfig {
9
9
  */
10
10
  modelId?: string;
11
11
 
12
+ /**
13
+ * Tuning parameter for randomness versus determinism. Exact effect will be determined by the
14
+ * model.
15
+ */
16
+ temperature?: number;
17
+
18
+ /**
19
+ * The maximum number of tokens.
20
+ */
21
+ maxTokens?: number;
22
+
12
23
  /**
13
24
  * And additional model specific information.
14
25
  */
@@ -1,4 +1,3 @@
1
1
  export * from './BedrockTokenUsage';
2
2
  export * from './LDFeedbackKind';
3
3
  export * from './LDTokenUsage';
4
- export * from './UnderScoreTokenUsage';
package/src/index.ts CHANGED
@@ -1,3 +1,11 @@
1
+ /**
2
+ * This is the API reference for the LaunchDarkly AI SDK for Server-Side JavaScript.
3
+ *
4
+ * In typical usage, you will call {@link initAi} once at startup time to obtain an instance of
5
+ * {@link LDAIClient}, which provides access to all of the SDK's functionality.
6
+ *
7
+ * @packageDocumentation
8
+ */
1
9
  import { LDAIClient } from './api/LDAIClient';
2
10
  import { LDAIClientImpl } from './LDAIClientImpl';
3
11
  import { LDClientMin } from './LDClientMin';
@@ -1,3 +0,0 @@
1
- import { LDTokenUsage } from './LDTokenUsage';
2
- export declare function createUnderscoreTokenUsage(data: any): LDTokenUsage;
3
- //# sourceMappingURL=UnderScoreTokenUsage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UnderScoreTokenUsage.d.ts","sourceRoot":"","sources":["../../../src/api/metrics/UnderScoreTokenUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,GAAG,GAAG,YAAY,CAMlE"}
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createUnderscoreTokenUsage = void 0;
4
- function createUnderscoreTokenUsage(data) {
5
- return {
6
- total: data.total_tokens || 0,
7
- input: data.prompt_tokens || 0,
8
- output: data.completion_tokens || 0,
9
- };
10
- }
11
- exports.createUnderscoreTokenUsage = createUnderscoreTokenUsage;
12
- //# sourceMappingURL=UnderScoreTokenUsage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UnderScoreTokenUsage.js","sourceRoot":"","sources":["../../../src/api/metrics/UnderScoreTokenUsage.ts"],"names":[],"mappings":";;;AAEA,SAAgB,0BAA0B,CAAC,IAAS;IAClD,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;QAC7B,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;QAC9B,MAAM,EAAE,IAAI,CAAC,iBAAiB,IAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAND,gEAMC"}
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html class="default" lang="en"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>createUnderscoreTokenUsage | @launchdarkly/server-sdk-ai - v0.1.0</title><meta name="description" content="Documentation for @launchdarkly/server-sdk-ai"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><div class="table-cell" id="tsd-search" data-base=".."><div class="field"><label for="tsd-search-field" class="tsd-widget tsd-toolbar-icon search no-caption"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-search"></use></svg></label><input type="text" id="tsd-search-field" aria-label="Search"/></div><div class="field"><div id="tsd-toolbar-links"></div></div><ul class="results"><li class="state loading">Preparing search index...</li><li class="state failure">The search index is not available</li></ul><a href="../index.html" class="title">@launchdarkly/server-sdk-ai - v0.1.0</a></div><div class="table-cell" id="tsd-widgets"><a href="#" class="tsd-widget tsd-toolbar-icon menu no-caption" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb"><li><a href="../index.html">@launchdarkly/server-sdk-ai</a></li><li><a href="createUnderscoreTokenUsage.html">createUnderscoreTokenUsage</a></li></ul><h1>Function createUnderscoreTokenUsage</h1></div><section class="tsd-panel"><ul class="tsd-signatures"><li class="tsd-signature tsd-anchor-link"><a id="createUnderscoreTokenUsage" class="tsd-anchor"></a><span class="tsd-kind-call-signature">create<wbr/>Underscore<wbr/>Token<wbr/>Usage</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">data</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/LDTokenUsage.html" class="tsd-signature-type tsd-kind-interface">LDTokenUsage</a><a href="#createUnderscoreTokenUsage" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">data</span>: <span class="tsd-signature-type">any</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="../interfaces/LDTokenUsage.html" class="tsd-signature-type tsd-kind-interface">LDTokenUsage</a></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/launchdarkly/js-core/blob/cc35e9ed1c2a3fe9d6cacb7e9654b9160e90879c/packages/sdk/server-ai/src/api/metrics/UnderScoreTokenUsage.ts#L3">api/metrics/UnderScoreTokenUsage.ts:3</a></li></ul></aside></li></ul></section></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><h3><svg width="20" height="20" viewBox="0 0 24 24" fill="none"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html"><svg class="tsd-kind-icon" viewBox="0 0 24 24"><use href="../assets/icons.svg#icon-1"></use></svg><span>@launchdarkly/server-sdk-ai - v0.1.0</span></a><ul class="tsd-small-nested-navigation" id="tsd-nav-container" data-base=".."><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1,9 +0,0 @@
1
- import { LDTokenUsage } from './LDTokenUsage';
2
-
3
- export function createUnderscoreTokenUsage(data: any): LDTokenUsage {
4
- return {
5
- total: data.total_tokens || 0,
6
- input: data.prompt_tokens || 0,
7
- output: data.completion_tokens || 0,
8
- };
9
- }