@launchdarkly/server-sdk-ai 0.12.3 → 0.14.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.
- package/CHANGELOG.md +44 -0
- package/README.md +2 -2
- package/__tests__/Judge.test.ts +496 -0
- package/__tests__/LDAIClientImpl.test.ts +530 -323
- package/__tests__/LDAIConfigTrackerImpl.test.ts +50 -290
- package/__tests__/TrackedChat.test.ts +4 -5
- package/dist/package.json +53 -0
- package/dist/src/LDAIClientImpl.d.ts +39 -0
- package/dist/src/LDAIClientImpl.d.ts.map +1 -0
- package/dist/src/LDAIClientImpl.js +164 -0
- package/dist/src/LDAIClientImpl.js.map +1 -0
- package/dist/{LDAIConfigTrackerImpl.d.ts → src/LDAIConfigTrackerImpl.d.ts} +13 -11
- package/dist/src/LDAIConfigTrackerImpl.d.ts.map +1 -0
- package/dist/{LDAIConfigTrackerImpl.js → src/LDAIConfigTrackerImpl.js} +59 -44
- package/dist/src/LDAIConfigTrackerImpl.js.map +1 -0
- package/dist/src/LDClientMin.d.ts.map +1 -0
- package/dist/{LDClientMin.js.map → src/LDClientMin.js.map} +1 -1
- package/dist/src/api/LDAIClient.d.ts +258 -0
- package/dist/src/api/LDAIClient.d.ts.map +1 -0
- package/dist/{api → src/api}/LDAIClient.js.map +1 -1
- package/dist/{api → src/api}/chat/TrackedChat.d.ts +22 -4
- package/dist/src/api/chat/TrackedChat.d.ts.map +1 -0
- package/dist/{api → src/api}/chat/TrackedChat.js +43 -2
- package/dist/src/api/chat/TrackedChat.js.map +1 -0
- package/dist/src/api/chat/index.d.ts.map +1 -0
- package/dist/src/api/chat/index.js.map +1 -0
- package/dist/src/api/chat/types.d.ts +22 -0
- package/dist/src/api/chat/types.d.ts.map +1 -0
- package/dist/{api → src/api}/chat/types.js.map +1 -1
- package/dist/{api → src/api}/config/LDAIConfigTracker.d.ts +41 -22
- package/dist/src/api/config/LDAIConfigTracker.d.ts.map +1 -0
- package/dist/src/api/config/LDAIConfigTracker.js.map +1 -0
- package/dist/src/api/config/LDAIConfigUtils.d.ts +2 -0
- package/dist/src/api/config/LDAIConfigUtils.d.ts.map +1 -0
- package/dist/src/api/config/LDAIConfigUtils.js +141 -0
- package/dist/src/api/config/LDAIConfigUtils.js.map +1 -0
- package/dist/src/api/config/index.d.ts +3 -0
- package/dist/src/api/config/index.d.ts.map +1 -0
- package/dist/{api/agents → src/api/config}/index.js +1 -1
- package/dist/src/api/config/index.js.map +1 -0
- package/dist/src/api/config/types.d.ts +202 -0
- package/dist/src/api/config/types.d.ts.map +1 -0
- package/dist/{api/agents/LDAIAgent.js → src/api/config/types.js} +1 -1
- package/dist/src/api/config/types.js.map +1 -0
- package/dist/{api → src/api}/index.d.ts +1 -1
- package/dist/src/api/index.d.ts.map +1 -0
- package/dist/{api → src/api}/index.js +1 -1
- package/dist/src/api/index.js.map +1 -0
- package/dist/src/api/judge/EvaluationSchemaBuilder.d.ts +11 -0
- package/dist/src/api/judge/EvaluationSchemaBuilder.d.ts.map +1 -0
- package/dist/src/api/judge/EvaluationSchemaBuilder.js +52 -0
- package/dist/src/api/judge/EvaluationSchemaBuilder.js.map +1 -0
- package/dist/src/api/judge/Judge.d.ts +63 -0
- package/dist/src/api/judge/Judge.d.ts.map +1 -0
- package/dist/src/api/judge/Judge.js +149 -0
- package/dist/src/api/judge/Judge.js.map +1 -0
- package/dist/src/api/judge/index.d.ts +3 -0
- package/dist/src/api/judge/index.d.ts.map +1 -0
- package/dist/src/api/judge/index.js +6 -0
- package/dist/src/api/judge/index.js.map +1 -0
- package/dist/src/api/judge/types.d.ts +35 -0
- package/dist/src/api/judge/types.d.ts.map +1 -0
- package/dist/{api/config/LDAIConfig.js → src/api/judge/types.js} +1 -1
- package/dist/src/api/judge/types.js.map +1 -0
- package/dist/src/api/metrics/BedrockTokenUsage.d.ts.map +1 -0
- package/dist/src/api/metrics/BedrockTokenUsage.js.map +1 -0
- package/dist/src/api/metrics/LDAIMetrics.d.ts.map +1 -0
- package/dist/src/api/metrics/LDAIMetrics.js.map +1 -0
- package/dist/src/api/metrics/LDFeedbackKind.d.ts.map +1 -0
- package/dist/src/api/metrics/LDFeedbackKind.js.map +1 -0
- package/dist/src/api/metrics/LDTokenUsage.d.ts.map +1 -0
- package/dist/src/api/metrics/LDTokenUsage.js.map +1 -0
- package/dist/src/api/metrics/OpenAiUsage.d.ts.map +1 -0
- package/dist/src/api/metrics/OpenAiUsage.js.map +1 -0
- package/dist/src/api/metrics/VercelAISDKTokenUsage.d.ts.map +1 -0
- package/dist/src/api/metrics/VercelAISDKTokenUsage.js.map +1 -0
- package/dist/src/api/metrics/index.d.ts.map +1 -0
- package/dist/src/api/metrics/index.js.map +1 -0
- package/dist/{api → src/api}/providers/AIProvider.d.ts +20 -3
- package/dist/src/api/providers/AIProvider.d.ts.map +1 -0
- package/dist/src/api/providers/AIProvider.js +88 -0
- package/dist/src/api/providers/AIProvider.js.map +1 -0
- package/dist/{api → src/api}/providers/AIProviderFactory.d.ts +2 -2
- package/dist/src/api/providers/AIProviderFactory.d.ts.map +1 -0
- package/dist/src/api/providers/AIProviderFactory.js.map +1 -0
- package/dist/src/api/providers/index.d.ts.map +1 -0
- package/dist/src/api/providers/index.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js.map +1 -0
- package/docs/assets/search.js +1 -1
- package/docs/classes/AIProvider.html +55 -20
- package/docs/classes/AIProviderFactory.html +27 -17
- package/docs/classes/Judge.html +322 -0
- package/docs/classes/TrackedChat.html +97 -29
- package/docs/enums/LDFeedbackKind.html +22 -12
- package/docs/functions/createBedrockTokenUsage.html +20 -10
- package/docs/functions/createOpenAiUsage.html +20 -10
- package/docs/functions/createVercelAISDKTokenUsage.html +20 -10
- package/docs/functions/initAi.html +20 -10
- package/docs/index.html +36 -16
- package/docs/interfaces/ChatResponse.html +35 -14
- package/docs/interfaces/EvalScore.html +119 -0
- package/docs/interfaces/JudgeResponse.html +129 -0
- package/docs/interfaces/LDAIAgentConfig.html +81 -33
- package/docs/interfaces/{LDAIAgent.html → LDAIAgentConfigDefault.html} +51 -41
- package/docs/interfaces/LDAIAgentRequestConfig.html +129 -0
- package/docs/interfaces/LDAIClient.html +234 -40
- package/docs/interfaces/{VercelAISDKConfig.html → LDAICompletionConfig.html} +86 -86
- package/docs/interfaces/LDAICompletionConfigDefault.html +155 -0
- package/docs/interfaces/LDAIConfig.html +45 -75
- package/docs/interfaces/LDAIConfigDefault.html +133 -0
- package/docs/interfaces/LDAIConfigTracker.html +140 -59
- package/docs/interfaces/LDAIJudgeConfig.html +167 -0
- package/docs/interfaces/LDAIJudgeConfigDefault.html +155 -0
- package/docs/interfaces/LDAIMetrics.html +22 -12
- package/docs/interfaces/LDJudge.html +119 -0
- package/docs/interfaces/{VercelAISDKMapOptions.html → LDJudgeConfiguration.html} +36 -19
- package/docs/interfaces/LDLogger.html +19 -9
- package/docs/interfaces/LDMessage.html +22 -12
- package/docs/interfaces/LDModelConfig.html +23 -13
- package/docs/interfaces/LDProviderConfig.html +21 -11
- package/docs/interfaces/LDTokenUsage.html +23 -13
- package/docs/interfaces/StructuredResponse.html +129 -0
- package/docs/types/{VercelAISDKProvider.html → LDAIConfigDefaultKind.html} +26 -31
- package/docs/types/{LDAIAgentDefaults.html → LDAIConfigKind.html} +24 -14
- package/docs/types/{LDAIDefaults.html → LDAIConfigMode.html} +24 -24
- package/docs/types/SupportedAIProvider.html +20 -10
- package/docs/variables/SUPPORTED_AI_PROVIDERS.html +20 -10
- package/package.json +3 -3
- package/src/LDAIClientImpl.ts +222 -176
- package/src/LDAIConfigTrackerImpl.ts +73 -54
- package/src/api/LDAIClient.ts +166 -33
- package/src/api/chat/TrackedChat.ts +64 -5
- package/src/api/chat/types.ts +8 -1
- package/src/api/config/LDAIConfigTracker.ts +46 -27
- package/src/api/config/LDAIConfigUtils.ts +201 -0
- package/src/api/config/index.ts +2 -2
- package/src/api/config/types.ts +256 -0
- package/src/api/index.ts +1 -1
- package/src/api/judge/EvaluationSchemaBuilder.ts +54 -0
- package/src/api/judge/Judge.ts +216 -0
- package/src/api/judge/index.ts +2 -0
- package/src/api/judge/types.ts +39 -0
- package/src/api/providers/AIProvider.ts +54 -3
- package/src/api/providers/AIProviderFactory.ts +4 -4
- package/tsconfig.json +3 -3
- package/tsconfig.ref.json +1 -1
- package/__tests__/LDAIConfigMapper.test.ts +0 -159
- package/dist/LDAIClientImpl.d.ts +0 -23
- package/dist/LDAIClientImpl.d.ts.map +0 -1
- package/dist/LDAIClientImpl.js +0 -128
- package/dist/LDAIClientImpl.js.map +0 -1
- package/dist/LDAIConfigMapper.d.ts +0 -10
- package/dist/LDAIConfigMapper.d.ts.map +0 -1
- package/dist/LDAIConfigMapper.js +0 -55
- package/dist/LDAIConfigMapper.js.map +0 -1
- package/dist/LDAIConfigTrackerImpl.d.ts.map +0 -1
- package/dist/LDAIConfigTrackerImpl.js.map +0 -1
- package/dist/LDClientMin.d.ts.map +0 -1
- package/dist/api/LDAIClient.d.ts +0 -169
- package/dist/api/LDAIClient.d.ts.map +0 -1
- package/dist/api/agents/LDAIAgent.d.ts +0 -32
- package/dist/api/agents/LDAIAgent.d.ts.map +0 -1
- package/dist/api/agents/LDAIAgent.js.map +0 -1
- package/dist/api/agents/index.d.ts +0 -2
- package/dist/api/agents/index.d.ts.map +0 -1
- package/dist/api/agents/index.js.map +0 -1
- package/dist/api/chat/TrackedChat.d.ts.map +0 -1
- package/dist/api/chat/TrackedChat.js.map +0 -1
- package/dist/api/chat/index.d.ts.map +0 -1
- package/dist/api/chat/index.js.map +0 -1
- package/dist/api/chat/types.d.ts +0 -16
- package/dist/api/chat/types.d.ts.map +0 -1
- package/dist/api/config/LDAIConfig.d.ts +0 -92
- package/dist/api/config/LDAIConfig.d.ts.map +0 -1
- package/dist/api/config/LDAIConfig.js.map +0 -1
- package/dist/api/config/LDAIConfigTracker.d.ts.map +0 -1
- package/dist/api/config/LDAIConfigTracker.js.map +0 -1
- package/dist/api/config/VercelAISDK.d.ts +0 -19
- package/dist/api/config/VercelAISDK.d.ts.map +0 -1
- package/dist/api/config/VercelAISDK.js +0 -3
- package/dist/api/config/VercelAISDK.js.map +0 -1
- package/dist/api/config/index.d.ts +0 -4
- package/dist/api/config/index.d.ts.map +0 -1
- package/dist/api/config/index.js +0 -19
- package/dist/api/config/index.js.map +0 -1
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js.map +0 -1
- package/dist/api/metrics/BedrockTokenUsage.d.ts.map +0 -1
- package/dist/api/metrics/BedrockTokenUsage.js.map +0 -1
- package/dist/api/metrics/LDAIMetrics.d.ts.map +0 -1
- package/dist/api/metrics/LDAIMetrics.js.map +0 -1
- package/dist/api/metrics/LDFeedbackKind.d.ts.map +0 -1
- package/dist/api/metrics/LDFeedbackKind.js.map +0 -1
- package/dist/api/metrics/LDTokenUsage.d.ts.map +0 -1
- package/dist/api/metrics/LDTokenUsage.js.map +0 -1
- package/dist/api/metrics/OpenAiUsage.d.ts.map +0 -1
- package/dist/api/metrics/OpenAiUsage.js.map +0 -1
- package/dist/api/metrics/VercelAISDKTokenUsage.d.ts.map +0 -1
- package/dist/api/metrics/VercelAISDKTokenUsage.js.map +0 -1
- package/dist/api/metrics/index.d.ts.map +0 -1
- package/dist/api/metrics/index.js.map +0 -1
- package/dist/api/providers/AIProvider.d.ts.map +0 -1
- package/dist/api/providers/AIProvider.js +0 -31
- package/dist/api/providers/AIProvider.js.map +0 -1
- package/dist/api/providers/AIProviderFactory.d.ts.map +0 -1
- package/dist/api/providers/AIProviderFactory.js.map +0 -1
- package/dist/api/providers/index.d.ts.map +0 -1
- package/dist/api/providers/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/src/LDAIConfigMapper.ts +0 -65
- package/src/api/agents/LDAIAgent.ts +0 -36
- package/src/api/agents/index.ts +0 -1
- package/src/api/config/LDAIConfig.ts +0 -101
- package/src/api/config/VercelAISDK.ts +0 -21
- /package/dist/{LDClientMin.d.ts → src/LDClientMin.d.ts} +0 -0
- /package/dist/{LDClientMin.js → src/LDClientMin.js} +0 -0
- /package/dist/{api → src/api}/LDAIClient.js +0 -0
- /package/dist/{api → src/api}/chat/index.d.ts +0 -0
- /package/dist/{api → src/api}/chat/index.js +0 -0
- /package/dist/{api → src/api}/chat/types.js +0 -0
- /package/dist/{api → src/api}/config/LDAIConfigTracker.js +0 -0
- /package/dist/{api → src/api}/metrics/BedrockTokenUsage.d.ts +0 -0
- /package/dist/{api → src/api}/metrics/BedrockTokenUsage.js +0 -0
- /package/dist/{api → src/api}/metrics/LDAIMetrics.d.ts +0 -0
- /package/dist/{api → src/api}/metrics/LDAIMetrics.js +0 -0
- /package/dist/{api → src/api}/metrics/LDFeedbackKind.d.ts +0 -0
- /package/dist/{api → src/api}/metrics/LDFeedbackKind.js +0 -0
- /package/dist/{api → src/api}/metrics/LDTokenUsage.d.ts +0 -0
- /package/dist/{api → src/api}/metrics/LDTokenUsage.js +0 -0
- /package/dist/{api → src/api}/metrics/OpenAiUsage.d.ts +0 -0
- /package/dist/{api → src/api}/metrics/OpenAiUsage.js +0 -0
- /package/dist/{api → src/api}/metrics/VercelAISDKTokenUsage.d.ts +0 -0
- /package/dist/{api → src/api}/metrics/VercelAISDKTokenUsage.js +0 -0
- /package/dist/{api → src/api}/metrics/index.d.ts +0 -0
- /package/dist/{api → src/api}/metrics/index.js +0 -0
- /package/dist/{api → src/api}/providers/AIProviderFactory.js +0 -0
- /package/dist/{api → src/api}/providers/index.d.ts +0 -0
- /package/dist/{api → src/api}/providers/index.js +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Judge = void 0;
|
|
4
|
+
const Mustache = require("mustache");
|
|
5
|
+
const EvaluationSchemaBuilder_1 = require("./EvaluationSchemaBuilder");
|
|
6
|
+
/**
|
|
7
|
+
* Judge implementation that handles evaluation functionality and conversation management.
|
|
8
|
+
*
|
|
9
|
+
* According to the AIEval spec, judges are AI Configs with mode: "judge" that evaluate
|
|
10
|
+
* other AI Configs using structured output.
|
|
11
|
+
*/
|
|
12
|
+
class Judge {
|
|
13
|
+
constructor(_aiConfig, _aiConfigTracker, _aiProvider, logger) {
|
|
14
|
+
this._aiConfig = _aiConfig;
|
|
15
|
+
this._aiConfigTracker = _aiConfigTracker;
|
|
16
|
+
this._aiProvider = _aiProvider;
|
|
17
|
+
this._logger = logger;
|
|
18
|
+
this._evaluationResponseStructure = EvaluationSchemaBuilder_1.EvaluationSchemaBuilder.build(this._aiConfig.evaluationMetricKeys);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Evaluates an AI response using the judge's configuration.
|
|
22
|
+
*
|
|
23
|
+
* @param input The input prompt or question that was provided to the AI
|
|
24
|
+
* @param output The AI-generated response to be evaluated
|
|
25
|
+
* @param samplingRate Sampling rate (0-1) to determine if evaluation should be processed (defaults to 1)
|
|
26
|
+
* @returns Promise that resolves to evaluation results or undefined if not sampled
|
|
27
|
+
*/
|
|
28
|
+
async evaluate(input, output, samplingRate = 1) {
|
|
29
|
+
var _a, _b, _c, _d, _e;
|
|
30
|
+
try {
|
|
31
|
+
if (!this._aiConfig.evaluationMetricKeys ||
|
|
32
|
+
this._aiConfig.evaluationMetricKeys.length === 0) {
|
|
33
|
+
(_a = this._logger) === null || _a === void 0 ? void 0 : _a.warn('Judge configuration is missing required evaluationMetricKeys', this._aiConfigTracker.getTrackData());
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
if (!this._aiConfig.messages) {
|
|
37
|
+
(_b = this._logger) === null || _b === void 0 ? void 0 : _b.warn('Judge configuration must include messages', this._aiConfigTracker.getTrackData());
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
if (Math.random() > samplingRate) {
|
|
41
|
+
(_c = this._logger) === null || _c === void 0 ? void 0 : _c.debug(`Judge evaluation skipped due to sampling rate: ${samplingRate}`);
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
const messages = this._constructEvaluationMessages(input, output);
|
|
45
|
+
const response = await this._aiConfigTracker.trackMetricsOf((result) => result.metrics, () => this._aiProvider.invokeStructuredModel(messages, this._evaluationResponseStructure));
|
|
46
|
+
let { success } = response.metrics;
|
|
47
|
+
const evals = this._parseEvaluationResponse(response.data);
|
|
48
|
+
if (Object.keys(evals).length !== this._aiConfig.evaluationMetricKeys.length) {
|
|
49
|
+
(_d = this._logger) === null || _d === void 0 ? void 0 : _d.warn('Judge evaluation did not return all evaluations', this._aiConfigTracker.getTrackData());
|
|
50
|
+
success = false;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
evals,
|
|
54
|
+
success,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
(_e = this._logger) === null || _e === void 0 ? void 0 : _e.error('Judge evaluation failed:', error);
|
|
59
|
+
return {
|
|
60
|
+
evals: {},
|
|
61
|
+
success: false,
|
|
62
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Evaluates an AI response from chat messages and response.
|
|
68
|
+
*
|
|
69
|
+
* @param messages Array of messages representing the conversation history
|
|
70
|
+
* @param response The AI response to be evaluated
|
|
71
|
+
* @param samplingRatio Sampling ratio (0-1) to determine if evaluation should be processed (defaults to 1)
|
|
72
|
+
* @returns Promise that resolves to evaluation results or undefined if not sampled
|
|
73
|
+
*/
|
|
74
|
+
async evaluateMessages(messages, response, samplingRatio = 1) {
|
|
75
|
+
const input = messages.length === 0 ? '' : messages.map((msg) => msg.content).join('\r\n');
|
|
76
|
+
const output = response.message.content;
|
|
77
|
+
return this.evaluate(input, output, samplingRatio);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Returns the AI Config used by this judge.
|
|
81
|
+
*/
|
|
82
|
+
getAIConfig() {
|
|
83
|
+
return this._aiConfig;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Returns the tracker associated with this judge.
|
|
87
|
+
*/
|
|
88
|
+
getTracker() {
|
|
89
|
+
return this._aiConfigTracker;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Returns the AI provider used by this judge.
|
|
93
|
+
*/
|
|
94
|
+
getProvider() {
|
|
95
|
+
return this._aiProvider;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Constructs evaluation messages by combining judge's config messages with input/output.
|
|
99
|
+
*/
|
|
100
|
+
_constructEvaluationMessages(input, output) {
|
|
101
|
+
const messages = this._aiConfig.messages.map((msg) => (Object.assign(Object.assign({}, msg), { content: this._interpolateMessage(msg.content, {
|
|
102
|
+
message_history: input,
|
|
103
|
+
response_to_evaluate: output,
|
|
104
|
+
}) })));
|
|
105
|
+
return messages;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Interpolates message content with variables using Mustache templating.
|
|
109
|
+
*/
|
|
110
|
+
_interpolateMessage(content, variables) {
|
|
111
|
+
return Mustache.render(content, variables, undefined, { escape: (item) => item });
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parses the structured evaluation response from the AI provider.
|
|
115
|
+
*/
|
|
116
|
+
_parseEvaluationResponse(data) {
|
|
117
|
+
var _a;
|
|
118
|
+
const evaluations = data.evaluations;
|
|
119
|
+
const results = {};
|
|
120
|
+
if (!data.evaluations || typeof data.evaluations !== 'object') {
|
|
121
|
+
(_a = this._logger) === null || _a === void 0 ? void 0 : _a.warn('Invalid response: missing or invalid evaluations object');
|
|
122
|
+
return results;
|
|
123
|
+
}
|
|
124
|
+
this._aiConfig.evaluationMetricKeys.forEach((metricKey) => {
|
|
125
|
+
var _a, _b, _c;
|
|
126
|
+
const evaluation = evaluations[metricKey];
|
|
127
|
+
if (!evaluation || typeof evaluation !== 'object') {
|
|
128
|
+
(_a = this._logger) === null || _a === void 0 ? void 0 : _a.warn(`Missing evaluation for metric key: ${metricKey}`, this._aiConfigTracker.getTrackData());
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
const evalData = evaluation;
|
|
132
|
+
if (typeof evalData.score !== 'number' || evalData.score < 0 || evalData.score > 1) {
|
|
133
|
+
(_b = this._logger) === null || _b === void 0 ? void 0 : _b.warn(`Invalid score evaluated for ${metricKey}: ${evalData.score}. Score must be a number between 0 and 1 inclusive`, this._aiConfigTracker.getTrackData());
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (typeof evalData.reasoning !== 'string') {
|
|
137
|
+
(_c = this._logger) === null || _c === void 0 ? void 0 : _c.warn(`Invalid reasoning evaluated for ${metricKey}: ${evalData.reasoning}. Reasoning must be a string`, this._aiConfigTracker.getTrackData());
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
results[metricKey] = {
|
|
141
|
+
score: evalData.score,
|
|
142
|
+
reasoning: evalData.reasoning,
|
|
143
|
+
};
|
|
144
|
+
});
|
|
145
|
+
return results;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.Judge = Judge;
|
|
149
|
+
//# sourceMappingURL=Judge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Judge.js","sourceRoot":"","sources":["../../../../src/api/judge/Judge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/judge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Judge = void 0;
|
|
4
|
+
var Judge_1 = require("./Judge");
|
|
5
|
+
Object.defineProperty(exports, "Judge", { enumerable: true, get: function () { return Judge_1.Judge; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/judge/index.ts"],"names":[],"mappings":";;;AAAA,iCAAgC;AAAvB,8FAAA,KAAK,OAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { LDAIMetrics } from '../metrics/LDAIMetrics';
|
|
2
|
+
/**
|
|
3
|
+
* Structured response from AI models.
|
|
4
|
+
*/
|
|
5
|
+
export interface StructuredResponse {
|
|
6
|
+
/** The structured data returned by the model */
|
|
7
|
+
data: Record<string, unknown>;
|
|
8
|
+
/** The raw response from the model */
|
|
9
|
+
rawResponse: string;
|
|
10
|
+
/**
|
|
11
|
+
* Metrics information including success status and token usage.
|
|
12
|
+
*/
|
|
13
|
+
metrics: LDAIMetrics;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Score and reasoning for a single evaluation metric.
|
|
17
|
+
*/
|
|
18
|
+
export interface EvalScore {
|
|
19
|
+
/** Score between 0.0 and 1.0 indicating the evaluation result for this metric */
|
|
20
|
+
score: number;
|
|
21
|
+
/** Reasoning behind the provided score for this metric */
|
|
22
|
+
reasoning: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Response from a judge evaluation containing scores and reasoning for multiple metrics.
|
|
26
|
+
*/
|
|
27
|
+
export interface JudgeResponse {
|
|
28
|
+
/** Dictionary where keys are metric names and values contain score and reasoning */
|
|
29
|
+
evals: Record<string, EvalScore>;
|
|
30
|
+
/** Whether the evaluation completed successfully */
|
|
31
|
+
success: boolean;
|
|
32
|
+
/** Error message if evaluation failed */
|
|
33
|
+
error?: string;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/api/judge/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/api/judge/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BedrockTokenUsage.d.ts","sourceRoot":"","sources":["../../../../src/api/metrics/BedrockTokenUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,YAAY,CAMf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BedrockTokenUsage.js","sourceRoot":"","sources":["../../../../src/api/metrics/BedrockTokenUsage.ts"],"names":[],"mappings":";;;AAEA,SAAgB,uBAAuB,CAAC,IAIvC;IACC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;QAC5B,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;QAC5B,MAAM,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC;AAVD,0DAUC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDAIMetrics.d.ts","sourceRoot":"","sources":["../../../../src/api/metrics/LDAIMetrics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDAIMetrics.js","sourceRoot":"","sources":["../../../../src/api/metrics/LDAIMetrics.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDFeedbackKind.d.ts","sourceRoot":"","sources":["../../../../src/api/metrics/LDFeedbackKind.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,cAAc;IACxB;;OAEG;IACH,QAAQ,aAAa;IACrB;;OAEG;IACH,QAAQ,aAAa;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDFeedbackKind.js","sourceRoot":"","sources":["../../../../src/api/metrics/LDFeedbackKind.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,cASX;AATD,WAAY,cAAc;IACxB;;OAEG;IACH,uCAAqB,CAAA;IACrB;;OAEG;IACH,uCAAqB,CAAA;AACvB,CAAC,EATW,cAAc,8BAAd,cAAc,QASzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDTokenUsage.d.ts","sourceRoot":"","sources":["../../../../src/api/metrics/LDTokenUsage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LDTokenUsage.js","sourceRoot":"","sources":["../../../../src/api/metrics/LDTokenUsage.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAiUsage.d.ts","sourceRoot":"","sources":["../../../../src/api/metrics/OpenAiUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,YAAY,CAMf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAiUsage.js","sourceRoot":"","sources":["../../../../src/api/metrics/OpenAiUsage.ts"],"names":[],"mappings":";;;AAEA,SAAgB,iBAAiB,CAAC,IAIjC;;IACC,OAAO;QACL,KAAK,EAAE,MAAA,IAAI,CAAC,YAAY,mCAAI,CAAC;QAC7B,KAAK,EAAE,MAAA,IAAI,CAAC,aAAa,mCAAI,CAAC;QAC9B,MAAM,EAAE,MAAA,IAAI,CAAC,iBAAiB,mCAAI,CAAC;KACpC,CAAC;AACJ,CAAC;AAVD,8CAUC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VercelAISDKTokenUsage.d.ts","sourceRoot":"","sources":["../../../../src/api/metrics/VercelAISDKTokenUsage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,wBAAgB,2BAA2B,CAAC,IAAI,EAAE;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,YAAY,CAMf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VercelAISDKTokenUsage.js","sourceRoot":"","sources":["../../../../src/api/metrics/VercelAISDKTokenUsage.ts"],"names":[],"mappings":";;;AAEA,SAAgB,2BAA2B,CAAC,IAM3C;;IACC,OAAO;QACL,KAAK,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,CAAC;QAC5B,KAAK,EAAE,MAAA,MAAA,IAAI,CAAC,WAAW,mCAAI,IAAI,CAAC,YAAY,mCAAI,CAAC;QACjD,MAAM,EAAE,MAAA,MAAA,IAAI,CAAC,YAAY,mCAAI,IAAI,CAAC,gBAAgB,mCAAI,CAAC;KACxD,CAAC;AACJ,CAAC;AAZD,kEAYC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/metrics/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/metrics/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,gDAA8B;AAC9B,mDAAiC;AACjC,gDAA8B;AAC9B,iDAA+B;AAC/B,0DAAwC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { LDLogger } from '@launchdarkly/js-server-sdk-common';
|
|
2
2
|
import { ChatResponse } from '../chat/types';
|
|
3
|
-
import {
|
|
3
|
+
import { LDAIConfigKind, LDMessage } from '../config/types';
|
|
4
|
+
import { StructuredResponse } from '../judge/types';
|
|
4
5
|
/**
|
|
5
6
|
* Abstract base class for AI providers that implement chat model functionality.
|
|
6
7
|
* This class provides the contract that all provider implementations must follow
|
|
@@ -17,10 +18,26 @@ export declare abstract class AIProvider {
|
|
|
17
18
|
* This method should convert messages to provider format, invoke the model,
|
|
18
19
|
* and return a ChatResponse with the result and metrics.
|
|
19
20
|
*
|
|
21
|
+
* Default implementation takes no action and returns a placeholder response.
|
|
22
|
+
* Provider implementations should override this method.
|
|
23
|
+
*
|
|
20
24
|
* @param messages Array of LDMessage objects representing the conversation
|
|
21
25
|
* @returns Promise that resolves to a ChatResponse containing the model's response
|
|
22
26
|
*/
|
|
23
|
-
|
|
27
|
+
invokeModel(_messages: LDMessage[]): Promise<ChatResponse>;
|
|
28
|
+
/**
|
|
29
|
+
* Invoke the chat model with structured output support.
|
|
30
|
+
* This method should convert messages to provider format, invoke the model with
|
|
31
|
+
* structured output configuration, and return a structured response.
|
|
32
|
+
*
|
|
33
|
+
* Default implementation takes no action and returns a placeholder response.
|
|
34
|
+
* Provider implementations should override this method.
|
|
35
|
+
*
|
|
36
|
+
* @param messages Array of LDMessage objects representing the conversation
|
|
37
|
+
* @param responseStructure Dictionary of output configurations keyed by output name
|
|
38
|
+
* @returns Promise that resolves to a structured response
|
|
39
|
+
*/
|
|
40
|
+
invokeStructuredModel(_messages: LDMessage[], _responseStructure: Record<string, unknown>): Promise<StructuredResponse>;
|
|
24
41
|
/**
|
|
25
42
|
* Static method that constructs an instance of the provider.
|
|
26
43
|
* Each provider implementation must provide their own static create method
|
|
@@ -30,6 +47,6 @@ export declare abstract class AIProvider {
|
|
|
30
47
|
* @param logger Optional logger for the provider
|
|
31
48
|
* @returns Promise that resolves to a configured provider instance
|
|
32
49
|
*/
|
|
33
|
-
static create(aiConfig:
|
|
50
|
+
static create(aiConfig: LDAIConfigKind, logger?: LDLogger): Promise<AIProvider>;
|
|
34
51
|
}
|
|
35
52
|
//# sourceMappingURL=AIProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIProvider.d.ts","sourceRoot":"","sources":["../../../../src/api/providers/AIProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;GAOG;AACH,8BAAsB,UAAU;IAC9B,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;gBAEzB,MAAM,CAAC,EAAE,QAAQ;IAG7B;;;;;;;;;;OAUG;IACG,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAkBhE;;;;;;;;;;;OAWG;IACG,qBAAqB,CACzB,SAAS,EAAE,SAAS,EAAE,EACtB,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC1C,OAAO,CAAC,kBAAkB,CAAC;IAgB9B;;;;;;;;OAQG;WAEU,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CAGtF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AIProvider = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Abstract base class for AI providers that implement chat model functionality.
|
|
6
|
+
* This class provides the contract that all provider implementations must follow
|
|
7
|
+
* to integrate with LaunchDarkly's tracking and configuration capabilities.
|
|
8
|
+
*
|
|
9
|
+
* Following the AICHAT spec recommendation to use base classes with non-abstract methods
|
|
10
|
+
* for better extensibility and backwards compatibility.
|
|
11
|
+
*/
|
|
12
|
+
class AIProvider {
|
|
13
|
+
constructor(logger) {
|
|
14
|
+
this.logger = logger;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Invoke the chat model with an array of messages.
|
|
18
|
+
* This method should convert messages to provider format, invoke the model,
|
|
19
|
+
* and return a ChatResponse with the result and metrics.
|
|
20
|
+
*
|
|
21
|
+
* Default implementation takes no action and returns a placeholder response.
|
|
22
|
+
* Provider implementations should override this method.
|
|
23
|
+
*
|
|
24
|
+
* @param messages Array of LDMessage objects representing the conversation
|
|
25
|
+
* @returns Promise that resolves to a ChatResponse containing the model's response
|
|
26
|
+
*/
|
|
27
|
+
async invokeModel(_messages) {
|
|
28
|
+
var _a;
|
|
29
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn('invokeModel not implemented by this provider');
|
|
30
|
+
return {
|
|
31
|
+
message: {
|
|
32
|
+
role: 'assistant',
|
|
33
|
+
content: '',
|
|
34
|
+
},
|
|
35
|
+
metrics: {
|
|
36
|
+
success: false,
|
|
37
|
+
usage: {
|
|
38
|
+
total: 0,
|
|
39
|
+
input: 0,
|
|
40
|
+
output: 0,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Invoke the chat model with structured output support.
|
|
47
|
+
* This method should convert messages to provider format, invoke the model with
|
|
48
|
+
* structured output configuration, and return a structured response.
|
|
49
|
+
*
|
|
50
|
+
* Default implementation takes no action and returns a placeholder response.
|
|
51
|
+
* Provider implementations should override this method.
|
|
52
|
+
*
|
|
53
|
+
* @param messages Array of LDMessage objects representing the conversation
|
|
54
|
+
* @param responseStructure Dictionary of output configurations keyed by output name
|
|
55
|
+
* @returns Promise that resolves to a structured response
|
|
56
|
+
*/
|
|
57
|
+
async invokeStructuredModel(_messages, _responseStructure) {
|
|
58
|
+
var _a;
|
|
59
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn('invokeStructuredModel not implemented by this provider');
|
|
60
|
+
return {
|
|
61
|
+
data: {},
|
|
62
|
+
rawResponse: '',
|
|
63
|
+
metrics: {
|
|
64
|
+
success: false,
|
|
65
|
+
usage: {
|
|
66
|
+
total: 0,
|
|
67
|
+
input: 0,
|
|
68
|
+
output: 0,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Static method that constructs an instance of the provider.
|
|
75
|
+
* Each provider implementation must provide their own static create method
|
|
76
|
+
* that accepts an AIConfig and returns a configured instance.
|
|
77
|
+
*
|
|
78
|
+
* @param aiConfig The LaunchDarkly AI configuration
|
|
79
|
+
* @param logger Optional logger for the provider
|
|
80
|
+
* @returns Promise that resolves to a configured provider instance
|
|
81
|
+
*/
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
83
|
+
static async create(aiConfig, logger) {
|
|
84
|
+
throw new Error('Provider implementations must override the static create method');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.AIProvider = AIProvider;
|
|
88
|
+
//# sourceMappingURL=AIProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIProvider.js","sourceRoot":"","sources":["../../../../src/api/providers/AIProvider.ts"],"names":[],"mappings":";;;AAMA;;;;;;;GAOG;AACH,MAAsB,UAAU;IAG9B,YAAY,MAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IACD;;;;;;;;;;OAUG;IACH,KAAK,CAAC,WAAW,CAAC,SAAsB;;QACtC,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAClE,OAAO;YACL,OAAO,EAAE;gBACP,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,EAAE;aACZ;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;iBACV;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,qBAAqB,CACzB,SAAsB,EACtB,kBAA2C;;QAE3C,MAAA,IAAI,CAAC,MAAM,0CAAE,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC5E,OAAO;YACL,IAAI,EAAE,EAAE;YACR,WAAW,EAAE,EAAE;YACf,OAAO,EAAE;gBACP,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,CAAC;oBACR,MAAM,EAAE,CAAC;iBACV;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,6DAA6D;IAC7D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAwB,EAAE,MAAiB;QAC7D,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;CACF;AA/ED,gCA+EC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LDLogger } from '@launchdarkly/js-server-sdk-common';
|
|
2
|
-
import {
|
|
2
|
+
import { LDAIConfigKind } from '../config/types';
|
|
3
3
|
import { AIProvider } from './AIProvider';
|
|
4
4
|
/**
|
|
5
5
|
* List of supported AI providers.
|
|
@@ -22,7 +22,7 @@ export declare class AIProviderFactory {
|
|
|
22
22
|
* @param logger Optional logger for logging provider initialization
|
|
23
23
|
* @param defaultAiProvider Optional default AI provider to use
|
|
24
24
|
*/
|
|
25
|
-
static create(aiConfig:
|
|
25
|
+
static create(aiConfig: LDAIConfigKind, logger?: LDLogger, defaultAiProvider?: SupportedAIProvider): Promise<AIProvider | undefined>;
|
|
26
26
|
/**
|
|
27
27
|
* Determine which providers to try based on defaultAiProvider and providerName.
|
|
28
28
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIProviderFactory.d.ts","sourceRoot":"","sources":["../../../../src/api/providers/AIProviderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,sBAAsB,4CAKzB,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;;OAQG;WACU,MAAM,CACjB,QAAQ,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,QAAQ,EACjB,iBAAiB,CAAC,EAAE,mBAAmB,GACtC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAsBlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IA0BjC;;OAEG;mBACkB,kBAAkB;IAgCvC;;OAEG;mBACkB,eAAe;CAyBrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIProviderFactory.js","sourceRoot":"","sources":["../../../../src/api/providers/AIProviderFactory.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACU,QAAA,sBAAsB,GAAG;IACpC,QAAQ;IACR,qDAAqD;IACrD,WAAW;IACX,QAAQ;CACA,CAAC;AAOX;;GAEG;AACH,MAAa,iBAAiB;IAC5B;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,QAAwB,EACxB,MAAiB,EACjB,iBAAuC;;QAEvC,MAAM,YAAY,GAAG,MAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,IAAI,0CAAE,WAAW,EAAE,CAAC;QAC5D,8DAA8D;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAEhF,6BAA6B;QAC7B,gDAAgD;QAChD,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE;YACzC,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC/E,IAAI,QAAQ,EAAE;gBACZ,OAAO,QAAQ,CAAC;aACjB;SACF;QAED,yDAAyD;QACzD,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CACV,sDAAsD,MAAA,MAAA,QAAQ,CAAC,QAAQ,0CAAE,IAAI,mCAAI,SAAS,EAAE,CAC7F,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,kBAAkB,CAC/B,iBAAuC,EACvC,YAAqB;QAErB,+DAA+D;QAC/D,IAAI,iBAAiB,EAAE;YACrB,OAAO,CAAC,iBAAiB,CAAC,CAAC;SAC5B;QAED,6DAA6D;QAC7D,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAEnD,oDAAoD;QACpD,IAAI,YAAY,IAAI,8BAAsB,CAAC,QAAQ,CAAC,YAAmC,CAAC,EAAE;YACxF,WAAW,CAAC,GAAG,CAAC,YAAmC,CAAC,CAAC;SACtD;QAED,yDAAyD;QACzD,MAAM,qBAAqB,GAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7E,qBAAqB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACzC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,YAAiC,EACjC,QAAwB,EACxB,MAAiB;QAEjB,QAAQ,YAAY,EAAE;YACpB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CACzB,oCAAoC,EACpC,gBAAgB,EAChB,QAAQ,EACR,MAAM,CACP,CAAC;YACJ,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,eAAe,CACzB,uCAAuC,EACvC,mBAAmB,EACnB,QAAQ,EACR,MAAM,CACP,CAAC;YACJ,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,eAAe,CACzB,oCAAoC,EACpC,gBAAgB,EAChB,QAAQ,EACR,MAAM,CACP,CAAC;YACJ;gBACE,OAAO,SAAS,CAAC;SACpB;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,eAAe,CAClC,WAAmB,EACnB,iBAAyB,EACzB,QAAwB,EACxB,MAAiB;;QAEjB,IAAI;YACF,yCAAyC;YACzC,6CAA6C;YAC7C,wGAAwG;YACxG,MAAM,EAAE,CAAC,iBAAiB,CAAC,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;YAEpE,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9D,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CACX,wCAAwC,MAAA,QAAQ,CAAC,QAAQ,0CAAE,IAAI,iBAAiB,WAAW,EAAE,CAC9F,CAAC;YACF,OAAO,QAAQ,CAAC;SACjB;QAAC,OAAO,KAAK,EAAE;YACd,uEAAuE;YACvE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CACV,kCAAkC,MAAA,QAAQ,CAAC,QAAQ,0CAAE,IAAI,iBAAiB,WAAW,KAAK,KAAK,EAAE,CAClG,CAAC;YACF,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;CACF;AAhID,8CAgIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/providers/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/api/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,sDAAoC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,CAExD;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAE9D,cAAc,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AASA,qDAAkD;AAGlD;;;;GAIG;AACH,SAAgB,MAAM,CAAC,QAAqB;IAC1C,OAAO,IAAI,+BAAc,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAFD,wBAEC;AAID,wCAAsB"}
|