42 lines
768 B
Go
42 lines
768 B
Go
package client
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"github.com/openai/openai-go/v3"
|
|
)
|
|
|
|
func fromOpenAIModel(m openai.Model) Model {
|
|
newModel := Model{
|
|
Model: m,
|
|
Name: m.ID,
|
|
}
|
|
|
|
extraFields := make(map[string]any)
|
|
for k, v := range m.JSON.ExtraFields {
|
|
var val any
|
|
if err := json.Unmarshal([]byte(v.Raw()), &val); err != nil {
|
|
continue
|
|
}
|
|
extraFields[k] = val
|
|
}
|
|
|
|
// Extract Name
|
|
if rawName, found := extraFields["name"]; found {
|
|
if name, ok := rawName.(string); ok {
|
|
newModel.Name = name
|
|
}
|
|
}
|
|
|
|
// Extract Meta
|
|
if rawMeta, found := extraFields["meta"]; found {
|
|
if parsedMeta, ok := rawMeta.(map[string]any); ok {
|
|
if llamaMeta, ok := parsedMeta["llamaswap"].(map[string]any); ok {
|
|
newModel.Meta = llamaMeta
|
|
}
|
|
}
|
|
}
|
|
|
|
return newModel
|
|
}
|