Overview
Concrete tool for parsing Modelfile text into structured command lists provided by the parser package.
Description
ParseFile reads a Modelfile from an io.Reader and produces a Modelfile struct containing an ordered slice of Command entries. Each Command has a Name (e.g., "from", "system", "parameter") and Args (the directive value).
The companion CreateRequest method on Modelfile translates the parsed commands into an api.CreateRequest suitable for the model creation API. It reads adapter files from disk, computes SHA-256 digests, and encodes binary content as base64.
Usage
Called by the CLI ollama create command and the /api/create HTTP handler to process user-provided Modelfiles.
Code Reference
Source Location
- Repository: ollama
- File: parser/parser.go
- Lines: L377-507 (ParseFile), L56-156 (CreateRequest)
Signature
func ParseFile(r io.Reader) (*Modelfile, error)
func (f Modelfile) CreateRequest(relativeDir string) (*api.CreateRequest, error)
Import
import "github.com/ollama/ollama/parser"
I/O Contract
Inputs (ParseFile)
| Name |
Type |
Required |
Description
|
| r |
io.Reader |
Yes |
Reader providing Modelfile text content
|
Inputs (CreateRequest)
| Name |
Type |
Required |
Description
|
| relativeDir |
string |
Yes |
Base directory for resolving relative file paths in ADAPTER directives
|
Outputs (ParseFile)
| Name |
Type |
Description
|
| *Modelfile |
*parser.Modelfile |
Parsed Modelfile with Commands []Command
|
| error |
error |
Non-nil if parsing fails (missing FROM, invalid syntax)
|
Outputs (CreateRequest)
| Name |
Type |
Description
|
| *api.CreateRequest |
*api.CreateRequest |
API request with From, Files, Adapters, Template, System, Parameters, License, Messages
|
| error |
error |
Non-nil if file reading or digest computation fails
|
Usage Examples
Parsing a Modelfile
import (
"os"
"github.com/ollama/ollama/parser"
)
f, _ := os.Open("Modelfile")
defer f.Close()
modelfile, err := parser.ParseFile(f)
if err != nil {
// handle error
}
// Access parsed commands
for _, cmd := range modelfile.Commands {
fmt.Printf("%s: %s\n", cmd.Name, cmd.Args)
}
// Convert to API request
req, err := modelfile.CreateRequest(".")
Related Pages
Implements Principle
Requires Environment
Page Connections
Double-click a node to navigate. Hold to expand connections.