createJudgeModel creates a provider.Provider from a model string (format: provider/model). Returns nil if judgeModel is empty.
(ctx context.Context, judgeModel string, runConfig *config.RuntimeConfig)
| 641 | // createJudgeModel creates a provider.Provider from a model string (format: provider/model). |
| 642 | // Returns nil if judgeModel is empty. |
| 643 | func createJudgeModel(ctx context.Context, judgeModel string, runConfig *config.RuntimeConfig) (provider.Provider, error) { |
| 644 | if judgeModel == "" { |
| 645 | return nil, nil |
| 646 | } |
| 647 | |
| 648 | cfg, err := latest.ParseModelRef(judgeModel) |
| 649 | if err != nil { |
| 650 | return nil, fmt.Errorf("invalid judge model format %q: expected 'provider/model'", judgeModel) |
| 651 | } |
| 652 | |
| 653 | opts := []options.Opt{ |
| 654 | options.WithStructuredOutput(judgeResponseSchema), |
| 655 | } |
| 656 | if runConfig.ModelsGateway != "" { |
| 657 | opts = append(opts, options.WithGateway(runConfig.ModelsGateway)) |
| 658 | } |
| 659 | |
| 660 | judge, err := runConfig.ProviderRegistryOrDefault().New(ctx, &cfg, runConfig.EnvProvider(), opts...) |
| 661 | if err != nil { |
| 662 | return nil, fmt.Errorf("creating judge model: %w", err) |
| 663 | } |
| 664 | |
| 665 | return judge, nil |
| 666 | } |