(t *testing.T)
| 3550 | } |
| 3551 | |
| 3552 | func TestCreateChatModelConfig(t *testing.T) { |
| 3553 | t.Parallel() |
| 3554 | |
| 3555 | t.Run("Success", func(t *testing.T) { |
| 3556 | t.Parallel() |
| 3557 | |
| 3558 | ctx := testutil.Context(t, testutil.WaitLong) |
| 3559 | client := newChatClient(t) |
| 3560 | _ = coderdtest.CreateFirstUser(t, client.Client) |
| 3561 | |
| 3562 | aiProvider := createAIProviderForTest(t, client, "openai", "test-api-key") |
| 3563 | |
| 3564 | contextLimit := int64(4096) |
| 3565 | isDefault := true |
| 3566 | pricing := &codersdk.ChatModelCallConfig{ |
| 3567 | Cost: &codersdk.ModelCostConfig{ |
| 3568 | InputPricePerMillionTokens: decRef("0.15"), |
| 3569 | OutputPricePerMillionTokens: decRef("0.6"), |
| 3570 | CacheReadPricePerMillionTokens: decRef("0.03"), |
| 3571 | CacheWritePricePerMillionTokens: decRef("0.3"), |
| 3572 | }, |
| 3573 | } |
| 3574 | modelConfig, err := client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{ |
| 3575 | Provider: "openai", |
| 3576 | AIProviderID: &aiProvider.ID, |
| 3577 | Model: "gpt-4o-mini", |
| 3578 | ContextLimit: &contextLimit, |
| 3579 | IsDefault: &isDefault, |
| 3580 | ModelConfig: pricing, |
| 3581 | }) |
| 3582 | require.NoError(t, err) |
| 3583 | require.NotEqual(t, uuid.Nil, modelConfig.ID) |
| 3584 | require.Equal(t, "openai", modelConfig.Provider) |
| 3585 | require.Equal(t, "gpt-4o-mini", modelConfig.Model) |
| 3586 | require.EqualValues(t, 4096, modelConfig.ContextLimit) |
| 3587 | require.True(t, modelConfig.IsDefault) |
| 3588 | requireChatModelPricing(t, modelConfig.ModelConfig, pricing) |
| 3589 | |
| 3590 | configs, err := client.ListChatModelConfigs(ctx) |
| 3591 | require.NoError(t, err) |
| 3592 | require.Len(t, configs, 1) |
| 3593 | requireChatModelPricing(t, configs[0].ModelConfig, pricing) |
| 3594 | }) |
| 3595 | |
| 3596 | t.Run("RejectsNegativePricing", func(t *testing.T) { |
| 3597 | t.Parallel() |
| 3598 | |
| 3599 | ctx := testutil.Context(t, testutil.WaitLong) |
| 3600 | client := newChatClient(t) |
| 3601 | _ = coderdtest.CreateFirstUser(t, client.Client) |
| 3602 | |
| 3603 | aiProvider := createAIProviderForTest(t, client, "openai", "test-api-key") |
| 3604 | |
| 3605 | contextLimit := int64(4096) |
| 3606 | _, err := client.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{ |
| 3607 | Provider: "openai", |
| 3608 | AIProviderID: &aiProvider.ID, |
| 3609 | Model: "gpt-4o-mini", |
nothing calls this directly
no test coverage detected