@@ -114,12 +114,10 @@ func Init(ctx context.Context, projectID, location string) error {
114
114
}
115
115
state .initted = true
116
116
for model , caps := range knownCaps {
117
- if _ , err := DefineModel (model , & caps ); err != nil {
118
- return fmt .Errorf ("vertexai.Init: failed to define known model %q: %w" , model , err )
119
- }
117
+ defineModel (model , caps )
120
118
}
121
119
for _ , e := range knownEmbedders {
122
- DefineEmbedder (e )
120
+ defineEmbedder (e )
123
121
}
124
122
return nil
125
123
}
@@ -128,8 +126,8 @@ func Init(ctx context.Context, projectID, location string) error {
128
126
// The second argument describes the capability of the model.
129
127
// Use [IsKnownModel] to determine if a model is known.
130
128
func DefineModel (name string , caps * ai.ModelCapabilities ) (* ai.Model , error ) {
131
- // state.mu.Lock()
132
- // defer state.mu.Unlock()
129
+ state .mu .Lock ()
130
+ defer state .mu .Unlock ()
133
131
if ! state .initted {
134
132
panic ("vertexai.Init not called" )
135
133
}
@@ -143,13 +141,17 @@ func DefineModel(name string, caps *ai.ModelCapabilities) (*ai.Model, error) {
143
141
} else {
144
142
mc = * caps
145
143
}
144
+ return defineModel (name , mc ), nil
145
+ }
146
146
147
+ // requires state.mu
148
+ func defineModel (name string , mc ai.ModelCapabilities ) * ai.Model {
147
149
meta := & ai.ModelMetadata {
148
150
Label : "Vertex AI - " + name ,
149
151
Supports : mc ,
150
152
}
151
153
g := & generator {model : name , client : state .gclient }
152
- return ai .DefineModel (provider , name , meta , g .generate ), nil
154
+ return ai .DefineModel (provider , name , meta , g .generate )
153
155
}
154
156
155
157
// IsKnownModel reports whether a model is known to this plugin.
@@ -169,13 +171,18 @@ func KnownModels() []string {
169
171
return keys
170
172
}
171
173
172
- // DefineModel defines an embedder with the given name.
174
+ // DefineEmbedder defines an embedder with the given name.
173
175
func DefineEmbedder (name string ) * ai.Embedder {
174
- // state.mu.Lock()
175
- // defer state.mu.Unlock()
176
+ state .mu .Lock ()
177
+ defer state .mu .Unlock ()
176
178
if ! state .initted {
177
179
panic ("vertexai.Init not called" )
178
180
}
181
+ return defineEmbedder (name )
182
+ }
183
+
184
+ // requires state.mu
185
+ func defineEmbedder (name string ) * ai.Embedder {
179
186
fullName := fmt .Sprintf ("projects/%s/locations/%s/publishers/google/models/%s" , state .projectID , state .location , name )
180
187
return ai .DefineEmbedder (provider , name , func (ctx context.Context , req * ai.EmbedRequest ) (* ai.EmbedResponse , error ) {
181
188
return embed (ctx , fullName , state .pclient , req )
0 commit comments