( ctx context.Context, overrideContext codersdk.ChatModelOverrideContext, ownerID uuid.UUID, modelConfigID uuid.UUID, )
| 366 | } |
| 367 | |
| 368 | func (p *Server) resolvePersonalModelOverride( |
| 369 | ctx context.Context, |
| 370 | overrideContext codersdk.ChatModelOverrideContext, |
| 371 | ownerID uuid.UUID, |
| 372 | modelConfigID uuid.UUID, |
| 373 | ) (database.ChatModelConfig, bool, error) { |
| 374 | modelConfig, providerName, err := p.resolveModelConfigAndNormalizedProvider( |
| 375 | ctx, |
| 376 | modelConfigID, |
| 377 | ) |
| 378 | if err != nil { |
| 379 | switch { |
| 380 | case xerrors.Is(err, sql.ErrNoRows): |
| 381 | p.logger.Debug(ctx, |
| 382 | "personal model override is unavailable, using deployment default", |
| 383 | slog.F("override_context", overrideContext), |
| 384 | slog.F("owner_id", ownerID), |
| 385 | slog.F("model_config_id", modelConfigID), |
| 386 | ) |
| 387 | case errors.Is(err, errInvalidModelOverrideMetadata): |
| 388 | p.logger.Debug(ctx, |
| 389 | "personal model override metadata is invalid, using deployment default", |
| 390 | slog.F("override_context", overrideContext), |
| 391 | slog.F("owner_id", ownerID), |
| 392 | slog.F("model_config_id", modelConfigID), |
| 393 | slog.Error(err), |
| 394 | ) |
| 395 | default: |
| 396 | p.logger.Warn(ctx, |
| 397 | "failed to resolve personal model override, using deployment default", |
| 398 | slog.F("override_context", overrideContext), |
| 399 | slog.F("owner_id", ownerID), |
| 400 | slog.F("model_config_id", modelConfigID), |
| 401 | slog.Error(err), |
| 402 | ) |
| 403 | } |
| 404 | return database.ChatModelConfig{}, false, nil |
| 405 | } |
| 406 | providerKeys, err := p.resolveUserProviderAPIKeys(ctx, ownerID, modelConfigAIProviderID(modelConfig)) |
| 407 | if err != nil { |
| 408 | return database.ChatModelConfig{}, false, xerrors.Errorf( |
| 409 | "resolve provider API keys: %w", |
| 410 | err, |
| 411 | ) |
| 412 | } |
| 413 | if !userCanUseProviderKeys(providerKeys, providerName) { |
| 414 | p.logger.Debug(ctx, |
| 415 | "personal model override credentials are unavailable, using deployment default", |
| 416 | slog.F("override_context", overrideContext), |
| 417 | slog.F("owner_id", ownerID), |
| 418 | slog.F("model_config_id", modelConfigID), |
| 419 | slog.F("provider", providerName), |
| 420 | ) |
| 421 | return database.ChatModelConfig{}, false, nil |
| 422 | } |
| 423 | return modelConfig, true, nil |
| 424 | } |
| 425 |
no test coverage detected