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

Method resolveAdvisorModelOverride

coderd/x/chatd/chatd.go:344–433  ·  view source on GitHub ↗
(
	ctx context.Context,
	chat database.Chat,
	advisorCfg codersdk.AdvisorConfig,
	fallbackModel fantasy.LanguageModel,
	fallbackCallConfig codersdk.ChatModelCallConfig,
	providerKeys chatprovider.ProviderAPIKeys,
	modelOpts modelBuildOptions,
	logger slog.Logger,
)

Source from the content-addressed store, hash-verified

342}
343
344func (p *Server) resolveAdvisorModelOverride(
345 ctx context.Context,
346 chat database.Chat,
347 advisorCfg codersdk.AdvisorConfig,
348 fallbackModel fantasy.LanguageModel,
349 fallbackCallConfig codersdk.ChatModelCallConfig,
350 providerKeys chatprovider.ProviderAPIKeys,
351 modelOpts modelBuildOptions,
352 logger slog.Logger,
353) (fantasy.LanguageModel, codersdk.ChatModelCallConfig, error) {
354 if advisorCfg.ModelConfigID == uuid.Nil {
355 return fallbackModel, fallbackCallConfig, nil
356 }
357
358 // Re-read the override instead of using the cache so disabled models
359 // or providers stop routing advisor prompts immediately.
360 overrideConfig, err := p.db.GetEnabledChatModelConfigByID(
361 ctx,
362 advisorCfg.ModelConfigID,
363 )
364 if err != nil {
365 if xerrors.Is(err, sql.ErrNoRows) {
366 logger.Warn(
367 ctx,
368 "advisor model config is disabled or unavailable, continuing with chat model",
369 slog.F("model_config_id", advisorCfg.ModelConfigID),
370 )
371 return fallbackModel, fallbackCallConfig, nil
372 }
373 logger.Warn(
374 ctx,
375 "failed to resolve advisor model config, continuing with chat model",
376 slog.F("model_config_id", advisorCfg.ModelConfigID),
377 slog.Error(err),
378 )
379 return fallbackModel, fallbackCallConfig, nil
380 }
381
382 overrideCallConfig := codersdk.ChatModelCallConfig{}
383 if len(overrideConfig.Options) > 0 {
384 if err := json.Unmarshal(overrideConfig.Options, &overrideCallConfig); err != nil {
385 logger.Warn(
386 ctx,
387 "failed to parse advisor model config, continuing with chat model",
388 slog.F("model_config_id", advisorCfg.ModelConfigID),
389 slog.Error(err),
390 )
391 return fallbackModel, fallbackCallConfig, nil
392 }
393 }
394
395 route, err := p.resolveModelRouteForConfig(
396 ctx,
397 chat.OwnerID,
398 overrideConfig,
399 providerKeys,
400 )
401 if err != nil {

Calls 10

newModelMethod · 0.95
UserAgentFunction · 0.92
CoderHeadersFunction · 0.92
IsMethod · 0.45
ErrorMethod · 0.45
UnmarshalMethod · 0.45
ErrorfMethod · 0.45