in gollm/factory.go [61:78]
func (r *registry) NewClient(ctx context.Context, providerID string) (Client, error) {
// providerID can be just an ID, for example "gemini" instead of "gemini://"
if !strings.Contains(providerID, "/") && !strings.Contains(providerID, ":") {
providerID = providerID + "://"
}
u, err := url.Parse(providerID)
if err != nil {
return nil, fmt.Errorf("parsing provider id %q: %w", providerID, err)
}
factoryFunc := r.providers[u.Scheme]
if factoryFunc == nil {
return nil, fmt.Errorf("provider %q not registered", u.Scheme)
}
return factoryFunc(ctx, u)
}