( ctx context.Context, req modelClientRequest, route resolvedModelRoute, opts modelBuildOptions, )
| 107 | } |
| 108 | |
| 109 | func (p *Server) newDebugAwareModel( |
| 110 | ctx context.Context, |
| 111 | req modelClientRequest, |
| 112 | route resolvedModelRoute, |
| 113 | opts modelBuildOptions, |
| 114 | ) (fantasy.LanguageModel, bool, error) { |
| 115 | providerHint, err := route.providerHint() |
| 116 | if err != nil { |
| 117 | return nil, false, err |
| 118 | } |
| 119 | provider, resolvedModel, err := chatprovider.ResolveModelWithProviderHint(req.ModelName, providerHint) |
| 120 | if err != nil { |
| 121 | return nil, false, err |
| 122 | } |
| 123 | route = route.withProviderHint(provider) |
| 124 | req.ModelName = resolvedModel |
| 125 | |
| 126 | debugSvc := p.debugService() |
| 127 | debugEnabled := debugSvc != nil && debugSvc.IsEnabled(ctx, req.Chat.ID, req.Chat.OwnerID) |
| 128 | opts.RecordHTTP = debugEnabled |
| 129 | |
| 130 | model, err := p.newModel(ctx, req, route, opts) |
| 131 | if err != nil { |
| 132 | return nil, debugEnabled, err |
| 133 | } |
| 134 | if !debugEnabled { |
| 135 | return model, false, nil |
| 136 | } |
| 137 | |
| 138 | return chatdebug.WrapModel(model, debugSvc, chatdebug.RecorderOptions{ |
| 139 | ChatID: req.Chat.ID, |
| 140 | OwnerID: req.Chat.OwnerID, |
| 141 | Provider: provider, |
| 142 | Model: resolvedModel, |
| 143 | }), true, nil |
| 144 | } |
no test coverage detected