notdiamond 2.0.0-rc1 → 2.0.0-rc11

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 (175) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/LICENSE +1 -1
  3. package/README.md +327 -124
  4. package/client.d.mts +28 -42
  5. package/client.d.mts.map +1 -1
  6. package/client.d.ts +28 -42
  7. package/client.d.ts.map +1 -1
  8. package/client.js +52 -68
  9. package/client.js.map +1 -1
  10. package/client.mjs +50 -66
  11. package/client.mjs.map +1 -1
  12. package/core/api-promise.d.mts +2 -2
  13. package/core/api-promise.d.ts +2 -2
  14. package/core/error.d.mts +2 -2
  15. package/core/error.d.ts +2 -2
  16. package/core/error.js +4 -4
  17. package/core/error.mjs +2 -2
  18. package/core/resource.d.mts +3 -3
  19. package/core/resource.d.ts +3 -3
  20. package/index.d.mts +3 -3
  21. package/index.d.ts +3 -3
  22. package/index.js +4 -4
  23. package/index.mjs +3 -3
  24. package/internal/parse.d.mts +2 -2
  25. package/internal/parse.d.ts +2 -2
  26. package/internal/shims.js +1 -1
  27. package/internal/shims.mjs +1 -1
  28. package/internal/tslib.js +17 -17
  29. package/internal/uploads.d.mts +4 -4
  30. package/internal/uploads.d.ts +4 -4
  31. package/internal/utils/base64.js +2 -2
  32. package/internal/utils/base64.mjs +3 -3
  33. package/internal/utils/env.d.mts.map +1 -1
  34. package/internal/utils/env.d.ts.map +1 -1
  35. package/internal/utils/env.js +4 -2
  36. package/internal/utils/env.js.map +1 -1
  37. package/internal/utils/env.mjs +4 -2
  38. package/internal/utils/env.mjs.map +1 -1
  39. package/internal/utils/log.d.mts +3 -3
  40. package/internal/utils/log.d.ts +3 -3
  41. package/internal/utils/path.js +1 -1
  42. package/internal/utils/path.mjs +2 -2
  43. package/internal/utils/values.js +5 -5
  44. package/internal/utils/values.mjs +6 -6
  45. package/package.json +11 -12
  46. package/resources/custom-router.d.mts +145 -0
  47. package/resources/custom-router.d.mts.map +1 -0
  48. package/resources/custom-router.d.ts +145 -0
  49. package/resources/custom-router.d.ts.map +1 -0
  50. package/resources/custom-router.js +83 -0
  51. package/resources/custom-router.js.map +1 -0
  52. package/resources/custom-router.mjs +79 -0
  53. package/resources/custom-router.mjs.map +1 -0
  54. package/resources/index.d.mts +6 -6
  55. package/resources/index.d.mts.map +1 -1
  56. package/resources/index.d.ts +6 -6
  57. package/resources/index.d.ts.map +1 -1
  58. package/resources/index.js +6 -6
  59. package/resources/index.js.map +1 -1
  60. package/resources/index.mjs +3 -3
  61. package/resources/index.mjs.map +1 -1
  62. package/resources/model-router.d.mts +196 -0
  63. package/resources/model-router.d.mts.map +1 -0
  64. package/resources/model-router.d.ts +196 -0
  65. package/resources/model-router.d.ts.map +1 -0
  66. package/resources/model-router.js +70 -0
  67. package/resources/model-router.js.map +1 -0
  68. package/resources/model-router.mjs +66 -0
  69. package/resources/model-router.mjs.map +1 -0
  70. package/resources/models.d.mts +50 -25
  71. package/resources/models.d.mts.map +1 -1
  72. package/resources/models.d.ts +50 -25
  73. package/resources/models.d.ts.map +1 -1
  74. package/resources/models.js +5 -0
  75. package/resources/models.js.map +1 -1
  76. package/resources/models.mjs +5 -0
  77. package/resources/models.mjs.map +1 -1
  78. package/resources/preferences.d.mts +34 -48
  79. package/resources/preferences.d.mts.map +1 -1
  80. package/resources/preferences.d.ts +34 -48
  81. package/resources/preferences.d.ts.map +1 -1
  82. package/resources/preferences.js +14 -36
  83. package/resources/preferences.js.map +1 -1
  84. package/resources/preferences.mjs +14 -36
  85. package/resources/preferences.mjs.map +1 -1
  86. package/resources/prompt-adaptation.d.mts +339 -234
  87. package/resources/prompt-adaptation.d.mts.map +1 -1
  88. package/resources/prompt-adaptation.d.ts +339 -234
  89. package/resources/prompt-adaptation.d.ts.map +1 -1
  90. package/resources/prompt-adaptation.js +30 -53
  91. package/resources/prompt-adaptation.js.map +1 -1
  92. package/resources/prompt-adaptation.mjs +30 -53
  93. package/resources/prompt-adaptation.mjs.map +1 -1
  94. package/resources/report/index.d.mts +3 -0
  95. package/resources/report/index.d.mts.map +1 -0
  96. package/resources/report/index.d.ts +3 -0
  97. package/resources/report/index.d.ts.map +1 -0
  98. package/resources/report/index.js +9 -0
  99. package/resources/report/index.js.map +1 -0
  100. package/resources/report/index.mjs +4 -0
  101. package/resources/report/index.mjs.map +1 -0
  102. package/resources/report/metrics.d.mts +87 -0
  103. package/resources/report/metrics.d.mts.map +1 -0
  104. package/resources/report/metrics.d.ts +87 -0
  105. package/resources/report/metrics.d.ts.map +1 -0
  106. package/resources/report/metrics.js +57 -0
  107. package/resources/report/metrics.js.map +1 -0
  108. package/resources/report/metrics.mjs +53 -0
  109. package/resources/report/metrics.mjs.map +1 -0
  110. package/resources/report/report.d.mts +10 -0
  111. package/resources/report/report.d.mts.map +1 -0
  112. package/resources/report/report.d.ts +10 -0
  113. package/resources/report/report.d.ts.map +1 -0
  114. package/resources/report/report.js +17 -0
  115. package/resources/report/report.js.map +1 -0
  116. package/resources/report/report.mjs +12 -0
  117. package/resources/report/report.mjs.map +1 -0
  118. package/resources/report.d.mts +1 -244
  119. package/resources/report.d.mts.map +1 -1
  120. package/resources/report.d.ts +1 -244
  121. package/resources/report.d.ts.map +1 -1
  122. package/resources/report.js +2 -82
  123. package/resources/report.js.map +1 -1
  124. package/resources/report.mjs +1 -80
  125. package/resources/report.mjs.map +1 -1
  126. package/src/client.ts +80 -131
  127. package/src/core/api-promise.ts +4 -4
  128. package/src/core/error.ts +2 -2
  129. package/src/core/resource.ts +3 -3
  130. package/src/index.ts +3 -3
  131. package/src/internal/parse.ts +2 -2
  132. package/src/internal/shims.ts +1 -1
  133. package/src/internal/uploads.ts +5 -5
  134. package/src/internal/utils/base64.ts +3 -3
  135. package/src/internal/utils/env.ts +4 -2
  136. package/src/internal/utils/log.ts +3 -3
  137. package/src/internal/utils/path.ts +2 -2
  138. package/src/internal/utils/values.ts +6 -6
  139. package/src/resources/custom-router.ts +168 -0
  140. package/src/resources/index.ts +23 -34
  141. package/src/resources/model-router.ts +224 -0
  142. package/src/resources/models.ts +55 -32
  143. package/src/resources/preferences.ts +40 -77
  144. package/src/resources/prompt-adaptation.ts +361 -291
  145. package/src/resources/report/index.ts +4 -0
  146. package/src/resources/report/metrics.ts +99 -0
  147. package/src/resources/report/report.ts +19 -0
  148. package/src/resources/report.ts +1 -298
  149. package/src/version.ts +1 -1
  150. package/version.d.mts +1 -1
  151. package/version.d.mts.map +1 -1
  152. package/version.d.ts +1 -1
  153. package/version.d.ts.map +1 -1
  154. package/version.js +1 -1
  155. package/version.js.map +1 -1
  156. package/version.mjs +1 -1
  157. package/version.mjs.map +1 -1
  158. package/resources/admin.d.mts +0 -4
  159. package/resources/admin.d.mts.map +0 -1
  160. package/resources/admin.d.ts +0 -4
  161. package/resources/admin.d.ts.map +0 -1
  162. package/resources/admin.js +0 -9
  163. package/resources/admin.js.map +0 -1
  164. package/resources/admin.mjs +0 -5
  165. package/resources/admin.mjs.map +0 -1
  166. package/resources/routing.d.mts +0 -391
  167. package/resources/routing.d.mts.map +0 -1
  168. package/resources/routing.d.ts +0 -391
  169. package/resources/routing.d.ts.map +0 -1
  170. package/resources/routing.js +0 -163
  171. package/resources/routing.js.map +0 -1
  172. package/resources/routing.mjs +0 -159
  173. package/resources/routing.mjs.map +0 -1
  174. package/src/resources/admin.ts +0 -5
  175. package/src/resources/routing.ts +0 -476
@@ -0,0 +1,145 @@
1
+ import { APIResource } from "../core/resource.js";
2
+ import { APIPromise } from "../core/api-promise.js";
3
+ import { type Uploadable } from "../core/uploads.js";
4
+ import { RequestOptions } from "../internal/request-options.js";
5
+ export declare class CustomRouter extends APIResource {
6
+ /**
7
+ * Train a custom router on your evaluation data to optimize routing for your
8
+ * specific use case.
9
+ *
10
+ * This endpoint allows you to train a domain-specific router that learns which
11
+ * models perform best for different types of queries in your application. The
12
+ * router analyzes your evaluation dataset, clusters similar queries, and learns
13
+ * model performance patterns.
14
+ *
15
+ * **Training Process:**
16
+ *
17
+ * 1. Upload a CSV file with your evaluation data
18
+ * 2. Specify which models to route between
19
+ * 3. Define the evaluation metric (score column)
20
+ * 4. The system trains asynchronously and returns a preference_id
21
+ * 5. Use the preference_id in model_select() calls once training completes
22
+ *
23
+ * **Dataset Requirements:**
24
+ *
25
+ * - Format: CSV file
26
+ * - Minimum samples: 25 (more is better for accuracy)
27
+ * - Required columns:
28
+ * - Prompt column (specified in prompt_column parameter)
29
+ * - For each model: `{provider}/{model}/score` and `{provider}/{model}/response`
30
+ *
31
+ * **Example CSV structure:**
32
+ *
33
+ * ```
34
+ * prompt,openai/gpt-4o/score,openai/gpt-4o/response,anthropic/claude-sonnet-4-5-20250929/score,anthropic/claude-sonnet-4-5-20250929/response
35
+ * "Explain quantum computing",0.95,"Quantum computing uses...",0.87,"Quantum computers leverage..."
36
+ * "Write a Python function",0.82,"def my_function()...",0.91,"Here's a Python function..."
37
+ * ```
38
+ *
39
+ * **Model Selection:**
40
+ *
41
+ * - Specify standard models: `{"provider": "openai", "model": "gpt-4o"}`
42
+ * - Or custom models with pricing:
43
+ * `{"provider": "custom", "model": "my-model", "is_custom": true, "input_price": 10.0, "output_price": 30.0, "context_length": 8192, "latency": 1.5}`
44
+ *
45
+ * **Training Time:**
46
+ *
47
+ * - Training is asynchronous and typically takes 5-15 minutes
48
+ * - Larger datasets or more models take longer
49
+ * - You'll receive a preference_id immediately
50
+ * - Check training status by attempting to use the preference_id in model_select()
51
+ *
52
+ * **Best Practices:**
53
+ *
54
+ * 1. Use diverse, representative examples from your production workload
55
+ * 2. Include at least 50-100 samples for best results
56
+ * 3. Ensure consistent evaluation metrics across all models
57
+ * 4. Use the same models you plan to route between in production
58
+ *
59
+ * **Related Documentation:** See
60
+ * https://docs.notdiamond.ai/docs/adapting-prompts-to-new-models for detailed
61
+ * guide.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * const response =
66
+ * await client.customRouter.trainCustomRouter({
67
+ * dataset_file: fs.createReadStream('path/to/file'),
68
+ * language: 'english',
69
+ * llm_providers:
70
+ * '[{"provider": "openai", "model": "gpt-4o"}, {"provider": "anthropic", "model": "claude-sonnet-4-5-20250929"}]',
71
+ * maximize: true,
72
+ * prompt_column: 'prompt',
73
+ * });
74
+ * ```
75
+ */
76
+ trainCustomRouter(body: CustomRouterTrainCustomRouterParams, options?: RequestOptions): APIPromise<CustomRouterTrainCustomRouterResponse>;
77
+ }
78
+ /**
79
+ * Response model for POST /v2/pzn/trainCustomRouter endpoint.
80
+ *
81
+ * Returned immediately after submitting a custom router training request. The
82
+ * training process runs asynchronously (typically 5-15 minutes), so use the
83
+ * returned preference_id to make routing calls once training completes.
84
+ *
85
+ * **Next steps:**
86
+ *
87
+ * 1. Store the preference_id
88
+ * 2. Wait for training to complete (typically 5-15 minutes)
89
+ * 3. Use this preference_id in POST /v2/modelRouter/modelSelect requests
90
+ * 4. The router will use your custom-trained model to make routing decisions
91
+ *
92
+ * **How to use the preference_id:**
93
+ *
94
+ * - Include it in the 'preference_id' field of model_select() calls
95
+ * - The system automatically uses your custom router once training is complete
96
+ * - No need to poll status - you can start using it immediately (will use default
97
+ * until ready)
98
+ */
99
+ export interface CustomRouterTrainCustomRouterResponse {
100
+ /**
101
+ * Unique identifier for the custom router. Use this in model_select() calls to
102
+ * enable routing with your custom-trained router
103
+ */
104
+ preference_id: string;
105
+ }
106
+ export interface CustomRouterTrainCustomRouterParams {
107
+ /**
108
+ * CSV file containing evaluation data with prompt column and score/response
109
+ * columns for each model
110
+ */
111
+ dataset_file: Uploadable;
112
+ /**
113
+ * Language of the evaluation data. Use 'english' for English-only data or
114
+ * 'multilingual' for multi-language support
115
+ */
116
+ language: string;
117
+ /**
118
+ * JSON string array of LLM providers to train the router on. Format:
119
+ * '[{"provider": "openai", "model": "gpt-4o"}, {"provider": "anthropic", "model":
120
+ * "claude-sonnet-4-5-20250929"}]'
121
+ */
122
+ llm_providers: string;
123
+ /**
124
+ * Whether higher scores are better. Set to true if higher scores indicate better
125
+ * performance, false otherwise
126
+ */
127
+ maximize: boolean;
128
+ /**
129
+ * Name of the column in the CSV file that contains the prompts
130
+ */
131
+ prompt_column: string;
132
+ /**
133
+ * Whether to override an existing custom router for this preference_id
134
+ */
135
+ override?: boolean | null;
136
+ /**
137
+ * Optional preference ID to update an existing router. If not provided, a new
138
+ * preference will be created
139
+ */
140
+ preference_id?: string | null;
141
+ }
142
+ export declare namespace CustomRouter {
143
+ export { type CustomRouterTrainCustomRouterResponse as CustomRouterTrainCustomRouterResponse, type CustomRouterTrainCustomRouterParams as CustomRouterTrainCustomRouterParams, };
144
+ }
145
+ //# sourceMappingURL=custom-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-router.d.ts","sourceRoot":"","sources":["../src/resources/custom-router.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,EAAE,UAAU,EAAE;OACd,EAAE,KAAK,UAAU,EAAE;OACnB,EAAE,cAAc,EAAE;AAGzB,qBAAa,YAAa,SAAQ,WAAW;IAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqEG;IACH,iBAAiB,CACf,IAAI,EAAE,mCAAmC,EACzC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,qCAAqC,CAAC;CAMrD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,qCAAqC;IACpD;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mCAAmC;IAClD;;;OAGG;IACH,YAAY,EAAE,UAAU,CAAC;IAEzB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC,OAAO,EACL,KAAK,qCAAqC,IAAI,qCAAqC,EACnF,KAAK,mCAAmC,IAAI,mCAAmC,GAChF,CAAC;CACH"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CustomRouter = void 0;
5
+ const resource_1 = require("../core/resource.js");
6
+ const uploads_1 = require("../internal/uploads.js");
7
+ class CustomRouter extends resource_1.APIResource {
8
+ /**
9
+ * Train a custom router on your evaluation data to optimize routing for your
10
+ * specific use case.
11
+ *
12
+ * This endpoint allows you to train a domain-specific router that learns which
13
+ * models perform best for different types of queries in your application. The
14
+ * router analyzes your evaluation dataset, clusters similar queries, and learns
15
+ * model performance patterns.
16
+ *
17
+ * **Training Process:**
18
+ *
19
+ * 1. Upload a CSV file with your evaluation data
20
+ * 2. Specify which models to route between
21
+ * 3. Define the evaluation metric (score column)
22
+ * 4. The system trains asynchronously and returns a preference_id
23
+ * 5. Use the preference_id in model_select() calls once training completes
24
+ *
25
+ * **Dataset Requirements:**
26
+ *
27
+ * - Format: CSV file
28
+ * - Minimum samples: 25 (more is better for accuracy)
29
+ * - Required columns:
30
+ * - Prompt column (specified in prompt_column parameter)
31
+ * - For each model: `{provider}/{model}/score` and `{provider}/{model}/response`
32
+ *
33
+ * **Example CSV structure:**
34
+ *
35
+ * ```
36
+ * prompt,openai/gpt-4o/score,openai/gpt-4o/response,anthropic/claude-sonnet-4-5-20250929/score,anthropic/claude-sonnet-4-5-20250929/response
37
+ * "Explain quantum computing",0.95,"Quantum computing uses...",0.87,"Quantum computers leverage..."
38
+ * "Write a Python function",0.82,"def my_function()...",0.91,"Here's a Python function..."
39
+ * ```
40
+ *
41
+ * **Model Selection:**
42
+ *
43
+ * - Specify standard models: `{"provider": "openai", "model": "gpt-4o"}`
44
+ * - Or custom models with pricing:
45
+ * `{"provider": "custom", "model": "my-model", "is_custom": true, "input_price": 10.0, "output_price": 30.0, "context_length": 8192, "latency": 1.5}`
46
+ *
47
+ * **Training Time:**
48
+ *
49
+ * - Training is asynchronous and typically takes 5-15 minutes
50
+ * - Larger datasets or more models take longer
51
+ * - You'll receive a preference_id immediately
52
+ * - Check training status by attempting to use the preference_id in model_select()
53
+ *
54
+ * **Best Practices:**
55
+ *
56
+ * 1. Use diverse, representative examples from your production workload
57
+ * 2. Include at least 50-100 samples for best results
58
+ * 3. Ensure consistent evaluation metrics across all models
59
+ * 4. Use the same models you plan to route between in production
60
+ *
61
+ * **Related Documentation:** See
62
+ * https://docs.notdiamond.ai/docs/adapting-prompts-to-new-models for detailed
63
+ * guide.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * const response =
68
+ * await client.customRouter.trainCustomRouter({
69
+ * dataset_file: fs.createReadStream('path/to/file'),
70
+ * language: 'english',
71
+ * llm_providers:
72
+ * '[{"provider": "openai", "model": "gpt-4o"}, {"provider": "anthropic", "model": "claude-sonnet-4-5-20250929"}]',
73
+ * maximize: true,
74
+ * prompt_column: 'prompt',
75
+ * });
76
+ * ```
77
+ */
78
+ trainCustomRouter(body, options) {
79
+ return this._client.post('/v2/pzn/trainCustomRouter', (0, uploads_1.multipartFormRequestOptions)({ body, ...options }, this._client));
80
+ }
81
+ }
82
+ exports.CustomRouter = CustomRouter;
83
+ //# sourceMappingURL=custom-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-router.js","sourceRoot":"","sources":["../src/resources/custom-router.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,kDAA+C;AAI/C,oDAAkE;AAElE,MAAa,YAAa,SAAQ,sBAAW;IAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqEG;IACH,iBAAiB,CACf,IAAyC,EACzC,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,2BAA2B,EAC3B,IAAA,qCAA2B,EAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAChE,CAAC;IACJ,CAAC;CACF;AAhFD,oCAgFC"}
@@ -0,0 +1,79 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+ import { APIResource } from "../core/resource.mjs";
3
+ import { multipartFormRequestOptions } from "../internal/uploads.mjs";
4
+ export class CustomRouter extends APIResource {
5
+ /**
6
+ * Train a custom router on your evaluation data to optimize routing for your
7
+ * specific use case.
8
+ *
9
+ * This endpoint allows you to train a domain-specific router that learns which
10
+ * models perform best for different types of queries in your application. The
11
+ * router analyzes your evaluation dataset, clusters similar queries, and learns
12
+ * model performance patterns.
13
+ *
14
+ * **Training Process:**
15
+ *
16
+ * 1. Upload a CSV file with your evaluation data
17
+ * 2. Specify which models to route between
18
+ * 3. Define the evaluation metric (score column)
19
+ * 4. The system trains asynchronously and returns a preference_id
20
+ * 5. Use the preference_id in model_select() calls once training completes
21
+ *
22
+ * **Dataset Requirements:**
23
+ *
24
+ * - Format: CSV file
25
+ * - Minimum samples: 25 (more is better for accuracy)
26
+ * - Required columns:
27
+ * - Prompt column (specified in prompt_column parameter)
28
+ * - For each model: `{provider}/{model}/score` and `{provider}/{model}/response`
29
+ *
30
+ * **Example CSV structure:**
31
+ *
32
+ * ```
33
+ * prompt,openai/gpt-4o/score,openai/gpt-4o/response,anthropic/claude-sonnet-4-5-20250929/score,anthropic/claude-sonnet-4-5-20250929/response
34
+ * "Explain quantum computing",0.95,"Quantum computing uses...",0.87,"Quantum computers leverage..."
35
+ * "Write a Python function",0.82,"def my_function()...",0.91,"Here's a Python function..."
36
+ * ```
37
+ *
38
+ * **Model Selection:**
39
+ *
40
+ * - Specify standard models: `{"provider": "openai", "model": "gpt-4o"}`
41
+ * - Or custom models with pricing:
42
+ * `{"provider": "custom", "model": "my-model", "is_custom": true, "input_price": 10.0, "output_price": 30.0, "context_length": 8192, "latency": 1.5}`
43
+ *
44
+ * **Training Time:**
45
+ *
46
+ * - Training is asynchronous and typically takes 5-15 minutes
47
+ * - Larger datasets or more models take longer
48
+ * - You'll receive a preference_id immediately
49
+ * - Check training status by attempting to use the preference_id in model_select()
50
+ *
51
+ * **Best Practices:**
52
+ *
53
+ * 1. Use diverse, representative examples from your production workload
54
+ * 2. Include at least 50-100 samples for best results
55
+ * 3. Ensure consistent evaluation metrics across all models
56
+ * 4. Use the same models you plan to route between in production
57
+ *
58
+ * **Related Documentation:** See
59
+ * https://docs.notdiamond.ai/docs/adapting-prompts-to-new-models for detailed
60
+ * guide.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * const response =
65
+ * await client.customRouter.trainCustomRouter({
66
+ * dataset_file: fs.createReadStream('path/to/file'),
67
+ * language: 'english',
68
+ * llm_providers:
69
+ * '[{"provider": "openai", "model": "gpt-4o"}, {"provider": "anthropic", "model": "claude-sonnet-4-5-20250929"}]',
70
+ * maximize: true,
71
+ * prompt_column: 'prompt',
72
+ * });
73
+ * ```
74
+ */
75
+ trainCustomRouter(body, options) {
76
+ return this._client.post('/v2/pzn/trainCustomRouter', multipartFormRequestOptions({ body, ...options }, this._client));
77
+ }
78
+ }
79
+ //# sourceMappingURL=custom-router.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-router.mjs","sourceRoot":"","sources":["../src/resources/custom-router.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,WAAW,EAAE;OAIf,EAAE,2BAA2B,EAAE;AAEtC,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqEG;IACH,iBAAiB,CACf,IAAyC,EACzC,OAAwB;QAExB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,2BAA2B,EAC3B,2BAA2B,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAChE,CAAC;IACJ,CAAC;CACF"}
@@ -1,7 +1,7 @@
1
- export { Admin } from "./admin.mjs";
2
- export { Models, type ModelListResponse, type ModelListParams } from "./models.mjs";
3
- export { Preferences, type PreferenceRetrieveResponse, type PreferenceCreateUserPreferenceResponse, type PreferenceDeleteUserPreferenceResponse, type PreferenceUpdateUserPreferenceResponse, type PreferenceRetrieveParams, type PreferenceCreateUserPreferenceParams, type PreferenceUpdateUserPreferenceParams, } from "./preferences.mjs";
4
- export { PromptAdaptation, type AdaptationRunResults, type JobStatus, type PromptAdaptationAdaptResponse, type PromptAdaptationGetAdaptRunsResponse, type PromptAdaptationGetAdaptStatusResponse, type PromptAdaptationRetrieveCostsResponse, type PromptAdaptationAdaptParams, type PromptAdaptationGetAdaptRunResultsParams, type PromptAdaptationGetAdaptRunsParams, } from "./prompt-adaptation.mjs";
5
- export { Report, type ReportEvaluateHallucinationResponse, type ReportLatencyResponse, type ReportSubmitFeedbackResponse, type ReportEvaluateHallucinationParams, type ReportLatencyParams, type ReportSubmitFeedbackParams, } from "./report.mjs";
6
- export { Routing, type RoutingCreateSurveyResponseResponse, type RoutingSelectModelResponse, type RoutingTrainCustomRouterResponse, type RoutingCreateSurveyResponseParams, type RoutingSelectModelParams, type RoutingTrainCustomRouterParams, } from "./routing.mjs";
1
+ export { CustomRouter, type CustomRouterTrainCustomRouterResponse, type CustomRouterTrainCustomRouterParams, } from "./custom-router.mjs";
2
+ export { ModelRouter, type ModelRouterSelectModelResponse, type ModelRouterSelectModelParams, } from "./model-router.mjs";
3
+ export { Models, type Model, type ModelListResponse, type ModelListParams } from "./models.mjs";
4
+ export { Preferences, type PreferenceCreateResponse, type PreferenceUpdateResponse, type PreferenceDeleteResponse, type PreferenceCreateParams, type PreferenceUpdateParams, } from "./preferences.mjs";
5
+ export { PromptAdaptation, type GoldenRecord, type JobStatus, type RequestProvider, type PromptAdaptationCreateResponse, type PromptAdaptationGetAdaptResultsResponse, type PromptAdaptationGetAdaptStatusResponse, type PromptAdaptationGetCostsResponse, type PromptAdaptationCreateParams, } from "./prompt-adaptation.mjs";
6
+ export { Report } from "./report/report.mjs";
7
7
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,EAAE;OACT,EAAE,MAAM,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE;OACxD,EACL,WAAW,EACX,KAAK,0BAA0B,EAC/B,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,wBAAwB,EAC7B,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,GAC1C;OACM,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,6BAA6B,EAClC,KAAK,oCAAoC,EACzC,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,2BAA2B,EAChC,KAAK,wCAAwC,EAC7C,KAAK,kCAAkC,GACxC;OACM,EACL,MAAM,EACN,KAAK,mCAAmC,EACxC,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,GAChC;OACM,EACL,OAAO,EACP,KAAK,mCAAmC,EACxC,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,GACpC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EACL,YAAY,EACZ,KAAK,qCAAqC,EAC1C,KAAK,mCAAmC,GACzC;OACM,EACL,WAAW,EACX,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,GAClC;OACM,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE;OACpE,EACL,WAAW,EACX,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B;OACM,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,EAC3C,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,GAClC;OACM,EAAE,MAAM,EAAE"}
@@ -1,7 +1,7 @@
1
- export { Admin } from "./admin.js";
2
- export { Models, type ModelListResponse, type ModelListParams } from "./models.js";
3
- export { Preferences, type PreferenceRetrieveResponse, type PreferenceCreateUserPreferenceResponse, type PreferenceDeleteUserPreferenceResponse, type PreferenceUpdateUserPreferenceResponse, type PreferenceRetrieveParams, type PreferenceCreateUserPreferenceParams, type PreferenceUpdateUserPreferenceParams, } from "./preferences.js";
4
- export { PromptAdaptation, type AdaptationRunResults, type JobStatus, type PromptAdaptationAdaptResponse, type PromptAdaptationGetAdaptRunsResponse, type PromptAdaptationGetAdaptStatusResponse, type PromptAdaptationRetrieveCostsResponse, type PromptAdaptationAdaptParams, type PromptAdaptationGetAdaptRunResultsParams, type PromptAdaptationGetAdaptRunsParams, } from "./prompt-adaptation.js";
5
- export { Report, type ReportEvaluateHallucinationResponse, type ReportLatencyResponse, type ReportSubmitFeedbackResponse, type ReportEvaluateHallucinationParams, type ReportLatencyParams, type ReportSubmitFeedbackParams, } from "./report.js";
6
- export { Routing, type RoutingCreateSurveyResponseResponse, type RoutingSelectModelResponse, type RoutingTrainCustomRouterResponse, type RoutingCreateSurveyResponseParams, type RoutingSelectModelParams, type RoutingTrainCustomRouterParams, } from "./routing.js";
1
+ export { CustomRouter, type CustomRouterTrainCustomRouterResponse, type CustomRouterTrainCustomRouterParams, } from "./custom-router.js";
2
+ export { ModelRouter, type ModelRouterSelectModelResponse, type ModelRouterSelectModelParams, } from "./model-router.js";
3
+ export { Models, type Model, type ModelListResponse, type ModelListParams } from "./models.js";
4
+ export { Preferences, type PreferenceCreateResponse, type PreferenceUpdateResponse, type PreferenceDeleteResponse, type PreferenceCreateParams, type PreferenceUpdateParams, } from "./preferences.js";
5
+ export { PromptAdaptation, type GoldenRecord, type JobStatus, type RequestProvider, type PromptAdaptationCreateResponse, type PromptAdaptationGetAdaptResultsResponse, type PromptAdaptationGetAdaptStatusResponse, type PromptAdaptationGetCostsResponse, type PromptAdaptationCreateParams, } from "./prompt-adaptation.js";
6
+ export { Report } from "./report/report.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EAAE,KAAK,EAAE;OACT,EAAE,MAAM,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE;OACxD,EACL,WAAW,EACX,KAAK,0BAA0B,EAC/B,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,sCAAsC,EAC3C,KAAK,wBAAwB,EAC7B,KAAK,oCAAoC,EACzC,KAAK,oCAAoC,GAC1C;OACM,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,6BAA6B,EAClC,KAAK,oCAAoC,EACzC,KAAK,sCAAsC,EAC3C,KAAK,qCAAqC,EAC1C,KAAK,2BAA2B,EAChC,KAAK,wCAAwC,EAC7C,KAAK,kCAAkC,GACxC;OACM,EACL,MAAM,EACN,KAAK,mCAAmC,EACxC,KAAK,qBAAqB,EAC1B,KAAK,4BAA4B,EACjC,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,0BAA0B,GAChC;OACM,EACL,OAAO,EACP,KAAK,mCAAmC,EACxC,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,GACpC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"OAEO,EACL,YAAY,EACZ,KAAK,qCAAqC,EAC1C,KAAK,mCAAmC,GACzC;OACM,EACL,WAAW,EACX,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,GAClC;OACM,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE;OACpE,EACL,WAAW,EACX,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,GAC5B;OACM,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,KAAK,uCAAuC,EAC5C,KAAK,sCAAsC,EAC3C,KAAK,gCAAgC,EACrC,KAAK,4BAA4B,GAClC;OACM,EAAE,MAAM,EAAE"}
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.Routing = exports.Report = exports.PromptAdaptation = exports.Preferences = exports.Models = exports.Admin = void 0;
5
- var admin_1 = require("./admin.js");
6
- Object.defineProperty(exports, "Admin", { enumerable: true, get: function () { return admin_1.Admin; } });
4
+ exports.Report = exports.PromptAdaptation = exports.Preferences = exports.Models = exports.ModelRouter = exports.CustomRouter = void 0;
5
+ var custom_router_1 = require("./custom-router.js");
6
+ Object.defineProperty(exports, "CustomRouter", { enumerable: true, get: function () { return custom_router_1.CustomRouter; } });
7
+ var model_router_1 = require("./model-router.js");
8
+ Object.defineProperty(exports, "ModelRouter", { enumerable: true, get: function () { return model_router_1.ModelRouter; } });
7
9
  var models_1 = require("./models.js");
8
10
  Object.defineProperty(exports, "Models", { enumerable: true, get: function () { return models_1.Models; } });
9
11
  var preferences_1 = require("./preferences.js");
10
12
  Object.defineProperty(exports, "Preferences", { enumerable: true, get: function () { return preferences_1.Preferences; } });
11
13
  var prompt_adaptation_1 = require("./prompt-adaptation.js");
12
14
  Object.defineProperty(exports, "PromptAdaptation", { enumerable: true, get: function () { return prompt_adaptation_1.PromptAdaptation; } });
13
- var report_1 = require("./report.js");
15
+ var report_1 = require("./report/report.js");
14
16
  Object.defineProperty(exports, "Report", { enumerable: true, get: function () { return report_1.Report; } });
15
- var routing_1 = require("./routing.js");
16
- Object.defineProperty(exports, "Routing", { enumerable: true, get: function () { return routing_1.Routing; } });
17
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,oCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,sCAAgF;AAAvE,gGAAA,MAAM,OAAA;AACf,gDASuB;AARrB,0GAAA,WAAW,OAAA;AASb,4DAW6B;AAV3B,qHAAA,gBAAgB,OAAA;AAWlB,sCAQkB;AAPhB,gGAAA,MAAM,OAAA;AAQR,wCAQmB;AAPjB,kGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,oDAIyB;AAHvB,6GAAA,YAAY,OAAA;AAId,kDAIwB;AAHtB,2GAAA,WAAW,OAAA;AAIb,sCAA4F;AAAnF,gGAAA,MAAM,OAAA;AACf,gDAOuB;AANrB,0GAAA,WAAW,OAAA;AAOb,4DAU6B;AAT3B,qHAAA,gBAAgB,OAAA;AAUlB,6CAAyC;AAAhC,gGAAA,MAAM,OAAA"}
@@ -1,8 +1,8 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
- export { Admin } from "./admin.mjs";
2
+ export { CustomRouter, } from "./custom-router.mjs";
3
+ export { ModelRouter, } from "./model-router.mjs";
3
4
  export { Models } from "./models.mjs";
4
5
  export { Preferences, } from "./preferences.mjs";
5
6
  export { PromptAdaptation, } from "./prompt-adaptation.mjs";
6
- export { Report, } from "./report.mjs";
7
- export { Routing, } from "./routing.mjs";
7
+ export { Report } from "./report/report.mjs";
8
8
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,KAAK,EAAE;OACT,EAAE,MAAM,EAAgD;OACxD,EACL,WAAW,GAQZ;OACM,EACL,gBAAgB,GAUjB;OACM,EACL,MAAM,GAOP;OACM,EACL,OAAO,GAOR"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/resources/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EACL,YAAY,GAGb;OACM,EACL,WAAW,GAGZ;OACM,EAAE,MAAM,EAA4D;OACpE,EACL,WAAW,GAMZ;OACM,EACL,gBAAgB,GASjB;OACM,EAAE,MAAM,EAAE"}
@@ -0,0 +1,196 @@
1
+ import { APIResource } from "../core/resource.mjs";
2
+ import * as PromptAdaptationAPI from "./prompt-adaptation.mjs";
3
+ import { APIPromise } from "../core/api-promise.mjs";
4
+ import { RequestOptions } from "../internal/request-options.mjs";
5
+ export declare class ModelRouter extends APIResource {
6
+ /**
7
+ * Select the optimal LLM to handle your query based on Not Diamond's routing
8
+ * algorithm.
9
+ *
10
+ * This endpoint analyzes your messages and returns the best-suited model from your
11
+ * specified providers. The router considers factors like query complexity, model
12
+ * capabilities, cost, and latency based on your preferences.
13
+ *
14
+ * **Key Features:**
15
+ *
16
+ * - Intelligent routing across multiple LLM providers
17
+ * - Support for custom routers trained on your evaluation data
18
+ * - Optional cost/latency optimization
19
+ * - Function calling support for compatible models
20
+ * - Privacy-preserving content hashing
21
+ *
22
+ * **Usage:**
23
+ *
24
+ * 1. Pass your messages in OpenAI format (array of objects with 'role' and
25
+ * 'content')
26
+ * 2. Specify which LLM providers you want to route between
27
+ * 3. Optionally provide a preference_id for personalized routing
28
+ * 4. Receive a recommended model and session_id
29
+ * 5. Use the session_id to submit feedback and improve routing
30
+ *
31
+ * **Related Endpoints:**
32
+ *
33
+ * - `POST /v2/preferences/userPreferenceCreate` - Create a preference ID for
34
+ * personalized routing
35
+ * - `POST /v2/report/metrics/feedback` - Submit feedback on routing decisions
36
+ * - `POST /v2/pzn/trainCustomRouter` - Train a custom router on your evaluation
37
+ * data
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const response = await client.modelRouter.selectModel({
42
+ * llm_providers: [
43
+ * { provider: 'openai', model: 'gpt-4o' },
44
+ * {
45
+ * provider: 'anthropic',
46
+ * model: 'claude-sonnet-4-5-20250929',
47
+ * },
48
+ * { provider: 'google', model: 'gemini-2.5-flash' },
49
+ * ],
50
+ * messages: [
51
+ * {
52
+ * role: 'system',
53
+ * content: 'You are a helpful assistant.',
54
+ * },
55
+ * {
56
+ * role: 'user',
57
+ * content: 'Explain quantum computing in simple terms',
58
+ * },
59
+ * ],
60
+ * });
61
+ * ```
62
+ */
63
+ selectModel(params: ModelRouterSelectModelParams, options?: RequestOptions): APIPromise<ModelRouterSelectModelResponse>;
64
+ }
65
+ /**
66
+ * Response from model selection endpoint.
67
+ */
68
+ export interface ModelRouterSelectModelResponse {
69
+ /**
70
+ * List containing the selected provider
71
+ */
72
+ providers: Array<ModelRouterSelectModelResponse.Provider>;
73
+ /**
74
+ * Unique session ID for this routing decision
75
+ */
76
+ session_id: string;
77
+ }
78
+ export declare namespace ModelRouterSelectModelResponse {
79
+ /**
80
+ * Selected LLM provider information from model selection endpoints.
81
+ *
82
+ * Part of ModelSelectResponse. Contains the provider and model that Not Diamond's
83
+ * routing algorithm selected as optimal for your query. Use these values to make
84
+ * your LLM API call to the recommended model.
85
+ */
86
+ interface Provider {
87
+ /**
88
+ * Model identifier for the selected model (e.g., 'gpt-4o',
89
+ * 'claude-3-opus-20240229')
90
+ */
91
+ model: string;
92
+ /**
93
+ * Provider name for the selected model (e.g., 'openai', 'anthropic', 'google')
94
+ */
95
+ provider: string;
96
+ }
97
+ }
98
+ export interface ModelRouterSelectModelParams {
99
+ /**
100
+ * Body param: List of LLM providers to route between. Specify at least one
101
+ * provider in format {provider, model}
102
+ */
103
+ llm_providers: Array<PromptAdaptationAPI.RequestProvider | ModelRouterSelectModelParams.OpenRouterProvider>;
104
+ /**
105
+ * Body param: Array of message objects in OpenAI format (with 'role' and 'content'
106
+ * keys)
107
+ */
108
+ messages: Array<{
109
+ [key: string]: string | Array<unknown>;
110
+ }> | string;
111
+ /**
112
+ * Query param: Optional format type. Use 'openrouter' to accept and return
113
+ * OpenRouter-format model identifiers
114
+ */
115
+ type?: string | null;
116
+ /**
117
+ * Body param: Whether to hash message content for privacy
118
+ */
119
+ hash_content?: boolean;
120
+ /**
121
+ * Body param: Maximum number of models to consider for routing. If not specified,
122
+ * considers all provided models
123
+ */
124
+ max_model_depth?: number | null;
125
+ /**
126
+ * Body param: Optimization metric for model selection
127
+ */
128
+ metric?: string;
129
+ /**
130
+ * Body param: Preference ID for personalized routing. Create one via POST
131
+ * /v2/preferences/userPreferenceCreate
132
+ */
133
+ preference_id?: string | null;
134
+ /**
135
+ * Body param: Previous session ID to link related requests
136
+ */
137
+ previous_session?: string | null;
138
+ /**
139
+ * Body param: OpenAI-format function calling tools
140
+ */
141
+ tools?: Array<{
142
+ [key: string]: unknown;
143
+ }> | null;
144
+ /**
145
+ * Body param: Optimization tradeoff strategy. Use 'cost' to prioritize cost
146
+ * savings or 'latency' to prioritize speed
147
+ */
148
+ tradeoff?: string | null;
149
+ }
150
+ export declare namespace ModelRouterSelectModelParams {
151
+ /**
152
+ * Model for specifying an LLM provider using OpenRouter format.
153
+ *
154
+ * Used in model routing requests when you want to specify providers using the
155
+ * OpenRouter naming convention (combined 'provider/model' format). This is an
156
+ * alternative to the standard RequestProvider which uses separate provider and
157
+ * model fields.
158
+ *
159
+ * **When to use:**
160
+ *
161
+ * - When working with OpenRouter-compatible systems
162
+ * - When you prefer the unified 'provider/model' format
163
+ * - For models accessed via OpenRouter proxy
164
+ */
165
+ interface OpenRouterProvider {
166
+ /**
167
+ * OpenRouter model identifier in 'provider/model' format (e.g., 'openai/gpt-4o',
168
+ * 'anthropic/claude-sonnet-4-5-20250929')
169
+ */
170
+ model: string;
171
+ /**
172
+ * Maximum context length for the model (required for custom models)
173
+ */
174
+ context_length?: number | null;
175
+ /**
176
+ * Input token price per million tokens in USD (required for custom models)
177
+ */
178
+ input_price?: number | null;
179
+ /**
180
+ * Whether this is a custom model not in Not Diamond's supported model list
181
+ */
182
+ is_custom?: boolean;
183
+ /**
184
+ * Average latency in seconds (required for custom models)
185
+ */
186
+ latency?: number | null;
187
+ /**
188
+ * Output token price per million tokens in USD (required for custom models)
189
+ */
190
+ output_price?: number | null;
191
+ }
192
+ }
193
+ export declare namespace ModelRouter {
194
+ export { type ModelRouterSelectModelResponse as ModelRouterSelectModelResponse, type ModelRouterSelectModelParams as ModelRouterSelectModelParams, };
195
+ }
196
+ //# sourceMappingURL=model-router.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-router.d.mts","sourceRoot":"","sources":["../src/resources/model-router.ts"],"names":[],"mappings":"OAEO,EAAE,WAAW,EAAE;OACf,KAAK,mBAAmB;OACxB,EAAE,UAAU,EAAE;OACd,EAAE,cAAc,EAAE;AAEzB,qBAAa,WAAY,SAAQ,WAAW;IAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwDG;IACH,WAAW,CACT,MAAM,EAAE,4BAA4B,EACpC,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CAAC,8BAA8B,CAAC;CAI9C;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,SAAS,EAAE,KAAK,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAE1D;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yBAAiB,8BAA8B,CAAC;IAC9C;;;;;;OAMG;IACH,UAAiB,QAAQ;QACvB;;;WAGG;QACH,KAAK,EAAE,MAAM,CAAC;QAEd;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;KAClB;CACF;AAED,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,aAAa,EAAE,KAAK,CAAC,mBAAmB,CAAC,eAAe,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;IAE5G;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAAG,MAAM,CAAC;IAErE;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAEjD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,yBAAiB,4BAA4B,CAAC;IAC5C;;;;;;;;;;;;;OAaG;IACH,UAAiB,kBAAkB;QACjC;;;WAGG;QACH,KAAK,EAAE,MAAM,CAAC;QAEd;;WAEG;QACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAE/B;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAE5B;;WAEG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;QAEpB;;WAEG;QACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAExB;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;CACF;AAED,MAAM,CAAC,OAAO,WAAW,WAAW,CAAC;IACnC,OAAO,EACL,KAAK,8BAA8B,IAAI,8BAA8B,EACrE,KAAK,4BAA4B,IAAI,4BAA4B,GAClE,CAAC;CACH"}