Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
22e93efa
"vscode:/vscode.git/clone" did not exist on "3247eadde4c63cc4a5b6d6c847e665c6c5a98e3c"
Commit
22e93efa
authored
Jan 04, 2024
by
Patrick Devine
Committed by
Patrick Devine
Jan 05, 2024
Browse files
add show info command and fix the modelfile
parent
2909dce8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
59 additions
and
17 deletions
+59
-17
api/types.go
api/types.go
+6
-1
cmd/cmd.go
cmd/cmd.go
+2
-2
cmd/interactive.go
cmd/interactive.go
+19
-2
server/routes.go
server/routes.go
+32
-12
No files found.
api/types.go
View file @
22e93efa
...
...
@@ -148,7 +148,12 @@ type DeleteRequest struct {
}
type
ShowRequest
struct
{
Name
string
`json:"name"`
Name
string
`json:"name"`
Model
string
`json:"model"`
System
string
`json:"system"`
Template
string
`json:"template"`
Options
map
[
string
]
interface
{}
`json:"options"`
}
type
ShowResponse
struct
{
...
...
cmd/cmd.go
View file @
22e93efa
...
...
@@ -149,7 +149,7 @@ func RunHandler(cmd *cobra.Command, args []string) error {
name
:=
args
[
0
]
// check if the model exists on the server
_
,
err
=
client
.
Show
(
cmd
.
Context
(),
&
api
.
ShowRequest
{
Name
:
name
})
_
,
err
=
client
.
Show
(
cmd
.
Context
(),
&
api
.
ShowRequest
{
Model
:
name
})
var
statusError
api
.
StatusError
switch
{
case
errors
.
As
(
err
,
&
statusError
)
&&
statusError
.
StatusCode
==
http
.
StatusNotFound
:
...
...
@@ -322,7 +322,7 @@ func ShowHandler(cmd *cobra.Command, args []string) error {
return
errors
.
New
(
"one of '--license', '--modelfile', '--parameters', '--system', or '--template' must be specified"
)
}
req
:=
api
.
ShowRequest
{
Name
:
args
[
0
]}
req
:=
api
.
ShowRequest
{
Model
:
args
[
0
]}
resp
,
err
:=
client
.
Show
(
cmd
.
Context
(),
&
req
)
if
err
!=
nil
{
return
err
...
...
cmd/interactive.go
View file @
22e93efa
...
...
@@ -34,7 +34,7 @@ func modelIsMultiModal(cmd *cobra.Command, name string) bool {
return
false
}
req
:=
api
.
ShowRequest
{
Name
:
name
}
req
:=
api
.
ShowRequest
{
Model
:
name
}
resp
,
err
:=
client
.
Show
(
cmd
.
Context
(),
&
req
)
if
err
!=
nil
{
return
false
...
...
@@ -101,6 +101,7 @@ func generateInteractive(cmd *cobra.Command, opts generateOptions) error {
usageShow
:=
func
()
{
fmt
.
Fprintln
(
os
.
Stderr
,
"Available Commands:"
)
fmt
.
Fprintln
(
os
.
Stderr
,
" /show info Show details for this model"
)
fmt
.
Fprintln
(
os
.
Stderr
,
" /show license Show model license"
)
fmt
.
Fprintln
(
os
.
Stderr
,
" /show modelfile Show Modelfile for this model"
)
fmt
.
Fprintln
(
os
.
Stderr
,
" /show parameters Show parameters for this model"
)
...
...
@@ -291,13 +292,29 @@ func generateInteractive(cmd *cobra.Command, opts generateOptions) error {
fmt
.
Println
(
"error: couldn't connect to ollama server"
)
return
err
}
resp
,
err
:=
client
.
Show
(
cmd
.
Context
(),
&
api
.
ShowRequest
{
Name
:
opts
.
Model
})
req
:=
&
api
.
ShowRequest
{
Model
:
opts
.
Model
,
System
:
opts
.
System
,
Template
:
opts
.
Template
,
Options
:
opts
.
Options
,
}
resp
,
err
:=
client
.
Show
(
cmd
.
Context
(),
req
)
if
err
!=
nil
{
fmt
.
Println
(
"error: couldn't get model"
)
return
err
}
switch
args
[
1
]
{
case
"info"
:
fmt
.
Println
(
"Model details:"
)
if
len
(
resp
.
Details
.
Families
)
>
0
{
fmt
.
Printf
(
"Family %s
\n
"
,
strings
.
Join
(
resp
.
Details
.
Families
,
", "
))
}
else
if
resp
.
Details
.
Family
!=
""
{
fmt
.
Printf
(
"Family %s
\n
"
,
resp
.
Details
.
Family
)
}
fmt
.
Printf
(
"Parameter Size %s
\n
"
,
resp
.
Details
.
ParameterSize
)
fmt
.
Printf
(
"Quantization Level %s
\n
"
,
resp
.
Details
.
QuantizationLevel
)
fmt
.
Println
(
""
)
case
"license"
:
if
resp
.
License
==
""
{
fmt
.
Print
(
"No license was specified for this model.
\n\n
"
)
...
...
server/routes.go
View file @
22e93efa
...
...
@@ -610,12 +610,18 @@ func ShowModelHandler(c *gin.Context) {
return
}
if
req
.
Name
==
""
{
c
.
AbortWithStatusJSON
(
http
.
StatusBadRequest
,
gin
.
H
{
"error"
:
"name is required"
})
switch
{
case
req
.
Model
==
""
&&
req
.
Name
==
""
:
c
.
AbortWithStatusJSON
(
http
.
StatusBadRequest
,
gin
.
H
{
"error"
:
"model is required"
})
return
case
req
.
Model
!=
""
&&
req
.
Name
!=
""
:
c
.
AbortWithStatusJSON
(
http
.
StatusBadRequest
,
gin
.
H
{
"error"
:
"both model and name are set"
})
return
case
req
.
Model
==
""
&&
req
.
Name
!=
""
:
req
.
Model
=
req
.
Name
}
resp
,
err
:=
GetModelInfo
(
req
.
Name
)
resp
,
err
:=
GetModelInfo
(
req
)
if
err
!=
nil
{
if
os
.
IsNotExist
(
err
)
{
c
.
JSON
(
http
.
StatusNotFound
,
gin
.
H
{
"error"
:
fmt
.
Sprintf
(
"model '%s' not found"
,
req
.
Name
)})
...
...
@@ -628,8 +634,8 @@ func ShowModelHandler(c *gin.Context) {
c
.
JSON
(
http
.
StatusOK
,
resp
)
}
func
GetModelInfo
(
name
string
)
(
*
api
.
ShowResponse
,
error
)
{
model
,
err
:=
GetModel
(
name
)
func
GetModelInfo
(
req
api
.
ShowRequest
)
(
*
api
.
ShowResponse
,
error
)
{
model
,
err
:=
GetModel
(
req
.
Model
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -642,6 +648,14 @@ func GetModelInfo(name string) (*api.ShowResponse, error) {
QuantizationLevel
:
model
.
Config
.
FileType
,
}
if
req
.
System
!=
""
{
model
.
System
=
req
.
System
}
if
req
.
Template
!=
""
{
model
.
Template
=
req
.
Template
}
resp
:=
&
api
.
ShowResponse
{
License
:
strings
.
Join
(
model
.
License
,
"
\n
"
),
System
:
model
.
System
,
...
...
@@ -649,13 +663,6 @@ func GetModelInfo(name string) (*api.ShowResponse, error) {
Details
:
modelDetails
,
}
mf
,
err
:=
ShowModelfile
(
model
)
if
err
!=
nil
{
return
nil
,
err
}
resp
.
Modelfile
=
mf
var
params
[]
string
cs
:=
30
for
k
,
v
:=
range
model
.
Options
{
...
...
@@ -685,6 +692,19 @@ func GetModelInfo(name string) (*api.ShowResponse, error) {
}
resp
.
Parameters
=
strings
.
Join
(
params
,
"
\n
"
)
for
k
,
v
:=
range
req
.
Options
{
if
_
,
ok
:=
req
.
Options
[
k
];
ok
{
model
.
Options
[
k
]
=
v
}
}
mf
,
err
:=
ShowModelfile
(
model
)
if
err
!=
nil
{
return
nil
,
err
}
resp
.
Modelfile
=
mf
return
resp
,
nil
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment