|
129 | 129 | it 'raises an error if LDClient is not an instance of LaunchDarkly::LDClient' do |
130 | 130 | expect { described_class.new('not a client') }.to raise_error(ArgumentError, 'LDClient instance is required') |
131 | 131 | end |
| 132 | + |
| 133 | + it 'tracks sdk-info on construction' do |
| 134 | + expect(ld_client).to receive(:track).with( |
| 135 | + '$ld:ai:sdk:info', |
| 136 | + an_object_satisfying { |ctx| ctx.kind == 'ld_ai' && ctx.key == 'ld-internal-tracking' && ctx.get_value(:anonymous) == true }, |
| 137 | + { |
| 138 | + aiSdkName: LaunchDarkly::Server::AI::SDK_NAME, |
| 139 | + aiSdkVersion: LaunchDarkly::Server::AI::VERSION, |
| 140 | + aiSdkLanguage: LaunchDarkly::Server::AI::SDK_LANGUAGE, |
| 141 | + }, |
| 142 | + 1 |
| 143 | + ) |
| 144 | + described_class.new(ld_client) |
| 145 | + end |
132 | 146 | end |
133 | 147 |
|
134 | | - describe '#config' do |
| 148 | + describe '#completion_config' do |
135 | 149 | it 'uses default config on invalid flag' do |
136 | 150 | context = LaunchDarkly::LDContext.create({ key: 'user-key', kind: 'user' }) |
137 | 151 | model = LaunchDarkly::Server::AI::ModelConfig.new(name: 'fakeModel', |
|
146 | 160 | ) |
147 | 161 | variables = { 'name' => 'World' } |
148 | 162 |
|
149 | | - config = ai_client.config('missing-flag', context, default_config, variables) |
| 163 | + config = ai_client.completion_config('missing-flag', context, default_config, variables) |
150 | 164 | expect(config.messages).not_to be_nil |
151 | 165 | expect(config.messages.length).to be > 0 |
152 | 166 | expect(config.messages[0].content).to eq('Hello, World!') |
|
167 | 181 | ) |
168 | 182 | variables = { 'name' => 'World' } |
169 | 183 |
|
170 | | - config = ai_client.config('model-config', context, default_value, variables) |
| 184 | + config = ai_client.completion_config('model-config', context, default_value, variables) |
171 | 185 | expect(config.messages).not_to be_nil |
172 | 186 | expect(config.messages.length).to be > 0 |
173 | 187 | expect(config.messages[0].content).to eq('Hello, World!') |
|
187 | 201 | messages: [] |
188 | 202 | ) |
189 | 203 |
|
190 | | - config = ai_client.config('model-config', context, default_value, {}) |
| 204 | + config = ai_client.completion_config('model-config', context, default_value, {}) |
191 | 205 |
|
192 | 206 | expect(config.messages).not_to be_nil |
193 | 207 | expect(config.messages.length).to be > 0 |
|
209 | 223 | ) |
210 | 224 | variables = { 'name' => 'World' } |
211 | 225 |
|
212 | | - config = ai_client.config('model-config', context, default_value, variables) |
| 226 | + config = ai_client.completion_config('model-config', context, default_value, variables) |
213 | 227 |
|
214 | 228 | expect(config.provider).not_to be_nil |
215 | 229 | expect(config.provider.name).to eq('fakeProvider') |
|
229 | 243 | ) |
230 | 244 | variables = { 'name' => 'World' } |
231 | 245 |
|
232 | | - config = ai_client.config('ctx-interpolation', context, default_value, variables) |
| 246 | + config = ai_client.completion_config('ctx-interpolation', context, default_value, variables) |
233 | 247 |
|
234 | 248 | expect(config.messages).not_to be_nil |
235 | 249 | expect(config.messages.length).to be > 0 |
|
255 | 269 | ) |
256 | 270 | variables = { 'name' => 'World' } |
257 | 271 |
|
258 | | - config = ai_client.config('multi-ctx-interpolation', context, default_value, variables) |
| 272 | + config = ai_client.completion_config('multi-ctx-interpolation', context, default_value, variables) |
259 | 273 |
|
260 | 274 | expect(config.messages).not_to be_nil |
261 | 275 | expect(config.messages.length).to be > 0 |
|
278 | 292 | ) |
279 | 293 | variables = { 'name' => 'World', 'day' => 'Monday' } |
280 | 294 |
|
281 | | - config = ai_client.config('multiple-messages', context, default_value, variables) |
| 295 | + config = ai_client.completion_config('multiple-messages', context, default_value, variables) |
282 | 296 |
|
283 | 297 | expect(config.messages).not_to be_nil |
284 | 298 | expect(config.messages.length).to be > 0 |
|
300 | 314 | messages: [] |
301 | 315 | ) |
302 | 316 |
|
303 | | - config = ai_client.config('off-config', context, default_value, {}) |
| 317 | + config = ai_client.completion_config('off-config', context, default_value, {}) |
304 | 318 |
|
305 | 319 | expect(config.model).not_to be_nil |
306 | 320 | expect(config.enabled).to be false |
|
317 | 331 | messages: [] |
318 | 332 | ) |
319 | 333 |
|
320 | | - config = ai_client.config('initial-config-disabled', context, default_value, {}) |
| 334 | + config = ai_client.completion_config('initial-config-disabled', context, default_value, {}) |
321 | 335 |
|
322 | 336 | expect(config.enabled).to be false |
323 | 337 | expect(config.model).to be_nil |
|
333 | 347 | messages: [] |
334 | 348 | ) |
335 | 349 |
|
336 | | - config = ai_client.config('initial-config-enabled', context, default_value, {}) |
| 350 | + config = ai_client.completion_config('initial-config-enabled', context, default_value, {}) |
337 | 351 |
|
338 | 352 | expect(config.enabled).to be true |
339 | 353 | expect(config.model).to be_nil |
|
0 commit comments