MCPcopy Index your code
hub / github.com/coder/coder / resolveCreateChatModelConfigID

Method resolveCreateChatModelConfigID

coderd/exp_chats.go:4454–4539  ·  view source on GitHub ↗
(
	ctx context.Context,
	userID uuid.UUID,
	req codersdk.CreateChatRequest,
)

Source from the content-addressed store, hash-verified

4452}
4453
4454func (api *API) resolveCreateChatModelConfigID(
4455 ctx context.Context,
4456 userID uuid.UUID,
4457 req codersdk.CreateChatRequest,
4458) (uuid.UUID, int, *codersdk.Response) {
4459 if req.ModelConfigID != nil {
4460 if *req.ModelConfigID == uuid.Nil {
4461 return uuid.Nil, http.StatusBadRequest, &codersdk.Response{
4462 Message: "Invalid model config ID.",
4463 }
4464 }
4465 return *req.ModelConfigID, 0, nil
4466 }
4467
4468 personalOverridesEnabled, err := api.Database.GetChatPersonalModelOverridesEnabled(ctx)
4469 if err != nil {
4470 return uuid.Nil, http.StatusInternalServerError, &codersdk.Response{
4471 Message: "Failed to resolve chat model config.",
4472 Detail: err.Error(),
4473 }
4474 }
4475 if !personalOverridesEnabled {
4476 return api.defaultCreateChatModelConfigID(ctx)
4477 }
4478
4479 raw, err := api.Database.GetUserChatPersonalModelOverride(ctx, database.GetUserChatPersonalModelOverrideParams{
4480 UserID: userID,
4481 Key: chatd.ChatPersonalModelOverrideKey(codersdk.ChatPersonalModelOverrideContextRoot),
4482 })
4483 if err != nil && !errors.Is(err, sql.ErrNoRows) {
4484 return uuid.Nil, http.StatusInternalServerError, &codersdk.Response{
4485 Message: "Failed to resolve chat model config.",
4486 Detail: err.Error(),
4487 }
4488 }
4489 if err == nil {
4490 parsed := parseChatPersonalModelOverrideValue(
4491 raw,
4492 codersdk.ChatPersonalModelOverrideContextRoot,
4493 )
4494 if parsed.Malformed {
4495 api.Logger.Debug(
4496 ctx,
4497 "unsupported personal root model override mode, using default model",
4498 slog.F("user_id", userID),
4499 slog.F("raw_value", raw),
4500 )
4501 }
4502 switch parsed.Mode {
4503 case codersdk.ChatPersonalModelOverrideModeChatDefault:
4504 // For root context, chat_default and the defensive default
4505 // case both fall through to the deployment default model below.
4506 case codersdk.ChatPersonalModelOverrideModeModel:
4507 reason, err := api.userCanUseChatModelConfig(
4508 ctx,
4509 userID,
4510 parsed.ModelConfigID,
4511 )

Callers 1

postChatsMethod · 0.95

Tested by

no test coverage detected