MCPcopy
hub / github.com/mudler/LocalAI / Load

Method Load

backend/go/cloud-proxy/proxy.go:65–116  ·  view source on GitHub ↗
(opts *pb.ModelOptions)

Source from the content-addressed store, hash-verified

63}
64
65func (c *CloudProxy) Load(opts *pb.ModelOptions) error {
66 po := opts.GetProxy()
67 if po == nil {
68 return errors.New("cloud-proxy: Load requires ProxyOptions to be set")
69 }
70 if po.GetUpstreamUrl() == "" {
71 return errors.New("cloud-proxy: upstream_url is required")
72 }
73 if _, err := url.ParseRequestURI(po.GetUpstreamUrl()); err != nil {
74 return fmt.Errorf("cloud-proxy: upstream_url %q invalid: %w", po.GetUpstreamUrl(), err)
75 }
76
77 mode := po.GetMode()
78 if mode == "" {
79 mode = modePassthrough
80 }
81 switch mode {
82 case modePassthrough:
83 case modeTranslate:
84 switch po.GetProvider() {
85 case providerOpenAI:
86 // implemented in provider_openai.go
87 case providerAnthropic:
88 // implemented in provider_anthropic.go
89 default:
90 return fmt.Errorf("cloud-proxy: translate mode requires provider in {%s, %s}, got %q",
91 providerOpenAI, providerAnthropic, po.GetProvider())
92 }
93 default:
94 return fmt.Errorf("cloud-proxy: unknown mode %q", mode)
95 }
96
97 key, err := resolveAPIKey(po.GetApiKeyEnv(), po.GetApiKeyFile())
98 if err != nil {
99 return err
100 }
101
102 c.cfg.Store(&proxyConfig{
103 upstreamURL: po.GetUpstreamUrl(),
104 mode: mode,
105 provider: po.GetProvider(),
106 upstreamModel: po.GetUpstreamModel(),
107 localModel: opts.GetModel(),
108 apiKey: key,
109 })
110 xlog.Info("cloud-proxy: ready",
111 "upstream", po.GetUpstreamUrl(),
112 "mode", mode,
113 "provider", po.GetProvider(),
114 "has_key", key != "")
115 return nil
116}
117
118// resolveAPIKey mirrors config.ProxyConfig.ResolveAPIKey. Duplicated
119// (a few lines) rather than importing core/config from a backend

Calls 2

resolveAPIKeyFunction · 0.85
StoreMethod · 0.80