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

Method resolveManualTitleModel

coderd/x/chatd/chatd.go:3602–3671  ·  view source on GitHub ↗
(
	ctx context.Context,
	store database.Store,
	chat database.Chat,
	keys chatprovider.ProviderAPIKeys,
	modelOpts modelBuildOptions,
)

Source from the content-addressed store, hash-verified

3600}
3601
3602func (p *Server) resolveManualTitleModel(
3603 ctx context.Context,
3604 store database.Store,
3605 chat database.Chat,
3606 keys chatprovider.ProviderAPIKeys,
3607 modelOpts modelBuildOptions,
3608) (fantasy.LanguageModel, database.ChatModelConfig, chatprovider.ProviderAPIKeys, error) {
3609 overrideConfig, overrideModel, overrideKeys, _, overrideSet, overrideErr := p.resolveTitleGenerationModelOverride(
3610 ctx,
3611 chat,
3612 keys,
3613 modelOpts,
3614 )
3615 if overrideErr != nil {
3616 if overrideSet {
3617 return nil, database.ChatModelConfig{}, chatprovider.ProviderAPIKeys{}, xerrors.Errorf(
3618 "resolve manual title generation model override: %w",
3619 overrideErr,
3620 )
3621 }
3622 p.logger.Debug(ctx, "failed to resolve title generation model override for manual title",
3623 slog.F("chat_id", chat.ID),
3624 slog.Error(overrideErr),
3625 )
3626 } else if overrideSet {
3627 return overrideModel, overrideConfig, overrideKeys, nil
3628 }
3629
3630 configs, err := store.GetEnabledChatModelConfigs(ctx)
3631 if err != nil {
3632 p.logger.Debug(ctx, "failed to list manual title model configs",
3633 slog.F("chat_id", chat.ID),
3634 slog.Error(err),
3635 )
3636 return p.resolveFallbackManualTitleModel(ctx, chat, keys, modelOpts)
3637 }
3638
3639 config, ok := selectPreferredConfiguredShortTextModelConfig(configs)
3640 if !ok {
3641 return p.resolveFallbackManualTitleModel(ctx, chat, keys, modelOpts)
3642 }
3643
3644 route, err := p.resolveModelRouteForConfig(ctx, chat.OwnerID, config, keys)
3645 if err != nil {
3646 p.logger.Debug(ctx, "manual title preferred model unavailable",
3647 slog.F("chat_id", chat.ID),
3648 slog.F("provider", config.Provider),
3649 slog.F("model", config.Model),
3650 slog.Error(err),
3651 )
3652 return p.resolveFallbackManualTitleModel(ctx, chat, keys, modelOpts)
3653 }
3654 model, err := p.newModel(ctx, modelClientRequest{
3655 Chat: chat,
3656 ModelName: config.Model,
3657 UserAgent: chatprovider.UserAgent(),
3658 ExtraHeaders: chatprovider.CoderHeaders(chat),
3659 }, route, modelOpts)

Calls 11

newModelMethod · 0.95
UserAgentFunction · 0.92
CoderHeadersFunction · 0.92
directProviderKeysMethod · 0.80
ErrorfMethod · 0.45
ErrorMethod · 0.45