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

Method resolveChatModel

coderd/x/chatd/chatd.go:8583–8638  ·  view source on GitHub ↗
(
	ctx context.Context,
	chat database.Chat,
	modelOpts modelBuildOptions,
)

Source from the content-addressed store, hash-verified

8581}
8582
8583func (p *Server) resolveChatModel(
8584 ctx context.Context,
8585 chat database.Chat,
8586 modelOpts modelBuildOptions,
8587) (
8588 model fantasy.LanguageModel,
8589 dbConfig database.ChatModelConfig,
8590 keys chatprovider.ProviderAPIKeys,
8591 route resolvedModelRoute,
8592 debugEnabled bool,
8593 resolvedProvider string,
8594 resolvedModel string,
8595 err error,
8596) {
8597 dbConfig, err = p.resolveModelConfig(ctx, chat)
8598 if err != nil {
8599 return nil, database.ChatModelConfig{}, chatprovider.ProviderAPIKeys{}, resolvedModelRoute{}, false, "", "", xerrors.Errorf("resolve model config: %w", err)
8600 }
8601
8602 if !dbConfig.Enabled {
8603 return nil, database.ChatModelConfig{}, chatprovider.ProviderAPIKeys{}, resolvedModelRoute{}, false, "", "", xerrors.Errorf("chat model config %s is disabled", dbConfig.ID)
8604 }
8605
8606 route, err = p.resolveModelRouteForConfig(ctx, chat.OwnerID, dbConfig, chatprovider.ProviderAPIKeys{})
8607 if err != nil {
8608 return nil, database.ChatModelConfig{}, chatprovider.ProviderAPIKeys{}, resolvedModelRoute{}, false, "", "", err
8609 }
8610 keys = route.directProviderKeys()
8611
8612 providerHint, err := route.providerHint()
8613 if err != nil {
8614 return nil, database.ChatModelConfig{}, chatprovider.ProviderAPIKeys{}, resolvedModelRoute{}, false, "", "", err
8615 }
8616 resolvedProvider, resolvedModel, err = chatprovider.ResolveModelWithProviderHint(
8617 dbConfig.Model,
8618 providerHint,
8619 )
8620 if err != nil {
8621 return nil, database.ChatModelConfig{}, chatprovider.ProviderAPIKeys{}, resolvedModelRoute{}, false, "", "", xerrors.Errorf(
8622 "resolve model metadata: %w", err,
8623 )
8624 }
8625
8626 model, debugEnabled, err = p.newDebugAwareModel(ctx, modelClientRequest{
8627 Chat: chat,
8628 ModelName: dbConfig.Model,
8629 UserAgent: chatprovider.UserAgent(),
8630 ExtraHeaders: chatprovider.CoderHeaders(chat),
8631 }, route, modelOpts)
8632 if err != nil {
8633 return nil, database.ChatModelConfig{}, chatprovider.ProviderAPIKeys{}, resolvedModelRoute{}, false, "", "", xerrors.Errorf(
8634 "create model: %w", err,
8635 )
8636 }
8637 return model, dbConfig, keys, route, debugEnabled, resolvedProvider, resolvedModel, nil
8638}
8639
8640func (p *Server) aiProviderConfig(ctx context.Context, provider database.AIProvider) (chatprovider.ConfiguredProvider, error) {

Callers 2

runChatMethod · 0.95

Calls 9

resolveModelConfigMethod · 0.95
newDebugAwareModelMethod · 0.95
UserAgentFunction · 0.92
CoderHeadersFunction · 0.92
directProviderKeysMethod · 0.80
providerHintMethod · 0.80
ErrorfMethod · 0.45

Tested by 1