return model configuration in generate
This commit is contained in:
parent
b9495ea162
commit
5d75505ebd
3 changed files with 39 additions and 12 deletions
10
api/types.go
10
api/types.go
|
@ -203,12 +203,22 @@ type GenerateResponse struct {
|
||||||
CreatedAt time.Time `json:"created_at"`
|
CreatedAt time.Time `json:"created_at"`
|
||||||
Response string `json:"response"`
|
Response string `json:"response"`
|
||||||
|
|
||||||
|
ModelConfiguration ModelConfiguration `json:"model_configuration"`
|
||||||
|
|
||||||
Done bool `json:"done"`
|
Done bool `json:"done"`
|
||||||
Context []int `json:"context,omitempty"`
|
Context []int `json:"context,omitempty"`
|
||||||
|
|
||||||
Metrics
|
Metrics
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ModelConfiguration struct {
|
||||||
|
ModelFormat string `json:"model_format"`
|
||||||
|
ModelFamily string `json:"model_family"`
|
||||||
|
ModelFamilies []string `json:"model_families"`
|
||||||
|
ModelType string `json:"model_type"`
|
||||||
|
FileType string `json:"file_type"`
|
||||||
|
}
|
||||||
|
|
||||||
func (m *Metrics) Summary() {
|
func (m *Metrics) Summary() {
|
||||||
if m.TotalDuration > 0 {
|
if m.TotalDuration > 0 {
|
||||||
fmt.Fprintf(os.Stderr, "total duration: %v\n", m.TotalDuration)
|
fmt.Fprintf(os.Stderr, "total duration: %v\n", m.TotalDuration)
|
||||||
|
|
|
@ -36,6 +36,7 @@ type RegistryOptions struct {
|
||||||
|
|
||||||
type Model struct {
|
type Model struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
Config ConfigV2
|
||||||
ShortName string
|
ShortName string
|
||||||
ModelPath string
|
ModelPath string
|
||||||
OriginalModel string
|
OriginalModel string
|
||||||
|
@ -137,16 +138,12 @@ type ManifestV2 struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ConfigV2 struct {
|
type ConfigV2 struct {
|
||||||
ModelFormat string `json:"model_format"`
|
|
||||||
ModelFamily string `json:"model_family"`
|
|
||||||
ModelFamilies []string `json:"model_families"`
|
|
||||||
ModelType string `json:"model_type"`
|
|
||||||
FileType string `json:"file_type"`
|
|
||||||
RootFS RootFS `json:"rootfs"`
|
|
||||||
|
|
||||||
// required by spec
|
// required by spec
|
||||||
Architecture string `json:"architecture"`
|
Architecture string `json:"architecture"`
|
||||||
OS string `json:"os"`
|
OS string `json:"os"`
|
||||||
|
RootFS RootFS `json:"rootfs"`
|
||||||
|
|
||||||
|
api.ModelConfiguration
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ConfigV2) SetModelFormat(format string) {
|
func (c *ConfigV2) SetModelFormat(format string) {
|
||||||
|
@ -235,6 +232,21 @@ func GetModel(name string) (*Model, error) {
|
||||||
License: []string{},
|
License: []string{},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
filename, err := GetBlobsPath(manifest.Config.Digest)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
configFile, err := os.Open(filename)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer configFile.Close()
|
||||||
|
|
||||||
|
if err := json.NewDecoder(configFile).Decode(&model.Config); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
for _, layer := range manifest.Layers {
|
for _, layer := range manifest.Layers {
|
||||||
filename, err := GetBlobsPath(layer.Digest)
|
filename, err := GetBlobsPath(layer.Digest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -198,7 +198,11 @@ func GenerateHandler(c *gin.Context) {
|
||||||
|
|
||||||
// an empty request loads the model
|
// an empty request loads the model
|
||||||
if req.Prompt == "" && req.Template == "" && req.System == "" {
|
if req.Prompt == "" && req.Template == "" && req.System == "" {
|
||||||
c.JSON(http.StatusOK, api.GenerateResponse{CreatedAt: time.Now().UTC(), Model: req.Model, Done: true})
|
c.JSON(http.StatusOK, api.GenerateResponse{
|
||||||
|
CreatedAt: time.Now().UTC(),
|
||||||
|
Model: req.Model,
|
||||||
|
ModelConfiguration: model.Config.ModelConfiguration,
|
||||||
|
Done: true})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,10 +261,11 @@ func GenerateHandler(c *gin.Context) {
|
||||||
}
|
}
|
||||||
|
|
||||||
resp := api.GenerateResponse{
|
resp := api.GenerateResponse{
|
||||||
Model: r.Model,
|
Model: r.Model,
|
||||||
CreatedAt: r.CreatedAt,
|
ModelConfiguration: model.Config.ModelConfiguration,
|
||||||
Done: r.Done,
|
CreatedAt: r.CreatedAt,
|
||||||
Response: r.Content,
|
Done: r.Done,
|
||||||
|
Response: r.Content,
|
||||||
Metrics: api.Metrics{
|
Metrics: api.Metrics{
|
||||||
TotalDuration: r.TotalDuration,
|
TotalDuration: r.TotalDuration,
|
||||||
LoadDuration: r.LoadDuration,
|
LoadDuration: r.LoadDuration,
|
||||||
|
|
Loading…
Reference in a new issue