api.md 4.01 KB
Newer Older
1
2
# API

3
4
5
6
7
8
9
10
## Endpoints

- [Generate a completion](#generate-a-completion)
- [Create a model](#create-a-model)
- [List local models](#list-local-models)
- [Copy a model](#copy-a-model)
- [Delete a model](#delete-a-model)
- [Pull a model](#pull-a-model)
Matt Williams's avatar
Matt Williams committed
11

12
## Conventions
Matt Williams's avatar
Matt Williams committed
13

14
### Model names
Matt Williams's avatar
Matt Williams committed
15

16
Model names follow a `model:tag` format. Some examples are `orca:3b-q4_1` and `llama2:70b`. The tag is optional and if not provided will default to `latest`. The tag is used to identify a specific version.
Matt Williams's avatar
Matt Williams committed
17
18
19

### Durations

20
All durations are returned in nanoseconds.
Matt Williams's avatar
Matt Williams committed
21

22
## Generate a completion
Matt Williams's avatar
Matt Williams committed
23

24
25
26
```
POST /api/generate
```
27

28
Generate a response for a given prompt with a provided model. This is a streaming endpoint, so will be a series of responses. The final response object will include statistics and additional data from the request.
Matt Williams's avatar
Matt Williams committed
29

30
### Parameters
Matt Williams's avatar
Matt Williams committed
31

32
33
- `model`: (required) the [model name](#model-names)
- `prompt`: the prompt to generate a response for
Matt Williams's avatar
Matt Williams committed
34

35
Advanced parameters:
Matt Williams's avatar
Matt Williams committed
36

37
38
39
40
41
- `options`: additional model parameters listed in the documentation for the [Modelfile](./modelfile.md#valid-parameters-and-values) such as `temperature`
- `system`: system prompt to (overrides what is defined in the `Modelfile`)
- `template`: the full prompt or prompt template (overrides what is defined in the `Modelfile`)

### Request
Matt Williams's avatar
Matt Williams committed
42

43
44
45
46
47
48
```
curl -X POST http://localhost:11434/api/generate -d '{
  "model": "llama2:7b",
  "prompt": "Why is the sky blue?"
}'
```
Matt Williams's avatar
Matt Williams committed
49

Matt Williams's avatar
Matt Williams committed
50
51
### Response

52
A stream of JSON objects:
Matt Williams's avatar
Matt Williams committed
53

54
```json
Matt Williams's avatar
Matt Williams committed
55
{
56
57
58
  "model": "llama2:7b",
  "created_at": "2023-08-04T08:52:19.385406455-07:00",
  "response": "The",
Matt Williams's avatar
Matt Williams committed
59
60
61
62
  "done": false
}
```

63
The final response in the stream also includes additional data about the generation:
Matt Williams's avatar
Matt Williams committed
64

65
```json
Matt Williams's avatar
Matt Williams committed
66
{
67
68
69
  "model": "llama2:7b",
  "created_at": "2023-08-04T19:22:45.499127Z",
  "done": true,
Matt Williams's avatar
Matt Williams committed
70

71
72
  // total time in nanoseconds spent generating the response
  "total_duration": 5589157167,
Matt Williams's avatar
Matt Williams committed
73

74
75
  // time spent in nanoseconds loading the model
  "load_duration": 3013701500,
Matt Williams's avatar
Matt Williams committed
76

77
78
79
80
81
82
83
84
85
86
87
88
  // Sample: how fast tokens were sampled
  "sample_count": 114,
  "sample_duration": 81442000,

  // Prompt stats: how fast the prompt was evaluated
  "prompt_eval_count": 46,
  "prompt_eval_duration": 1160282000,

  // Eval stats: how fast tokens were generated by the model
  "eval_count": 113,
  "eval_duration": 1325948000
}
Matt Williams's avatar
Matt Williams committed
89
90
```

91
## Create a Model
Matt Williams's avatar
Matt Williams committed
92

93
94
95
96
97
```
POST /api/create
```

Create a model from a [`Modelfile`](./modelfile.md)
98

99
### Parameters
Matt Williams's avatar
Matt Williams committed
100

101
102
- `name`: name of the model to create
- `path`: path to the Modelfile
Matt Williams's avatar
Matt Williams committed
103
104
105

### Request

106
107
108
109
110
```
curl -X POST http://localhost:11434/api/create -d '{
  "name": "mario",
  "path": "~/Modelfile"
}'
Matt Williams's avatar
Matt Williams committed
111
112
113
114
```

### Response

115
A stream of JSON objects. When finished, `status` is `success`
Matt Williams's avatar
Matt Williams committed
116

117
```json
Matt Williams's avatar
Matt Williams committed
118
119
120
121
122
{
  "status": "parsing modelfile"
}
```

123
## List Local Models
Matt Williams's avatar
Matt Williams committed
124
125

```
126
GET /api/tags
Matt Williams's avatar
Matt Williams committed
127
128
```

129
List models that are available locally.
Matt Williams's avatar
Matt Williams committed
130
131
132

### Request

133
134
135
```
curl http://localhost:11434/api/tags
```
Matt Williams's avatar
Matt Williams committed
136
137
138

### Response

139
```json
Matt Williams's avatar
Matt Williams committed
140
141
142
{
  "models": [
    {
143
144
145
146
147
148
149
      "name": "llama2:7b",
      "modified_at": "2023-08-02T17:02:23.713454393-07:00",
      "size": 3791730596
    },
    {
      "name": "llama2:13b",
      "modified_at": "2023-08-08T12:08:38.093596297-07:00",
Matt Williams's avatar
Matt Williams committed
150
      "size": 7323310500
Matt Williams's avatar
Matt Williams committed
151
152
    }
  ]
Matt Williams's avatar
Matt Williams committed
153
154
155
}
```

156
## Copy a Model
Matt Williams's avatar
Matt Williams committed
157
158

```
159
POST /api/copy
Matt Williams's avatar
Matt Williams committed
160
```
161

162
Copy a model. Creates a model with another name from an existing model.
Matt Williams's avatar
Matt Williams committed
163
164
165
166

### Request

```
167
168
169
curl http://localhost:11434/api/copy -d '{
  "source": "llama2:7b",
  "destination": "llama2-backup"
Matt Williams's avatar
Matt Williams committed
170
171
172
}'
```

Matt Williams's avatar
Matt Williams committed
173
## Delete a Model
Matt Williams's avatar
Matt Williams committed
174

175
176
```
DELETE /api/delete
Matt Williams's avatar
Matt Williams committed
177
178
```

179
Delete a model and its data.
Matt Williams's avatar
Matt Williams committed
180

181
### Parameters
Matt Williams's avatar
Matt Williams committed
182

183
- `model`: model name to delete
Matt Williams's avatar
Matt Williams committed
184

185
### Request
Matt Williams's avatar
Matt Williams committed
186

187
188
189
```
curl -X DELETE http://localhost:11434/api/delete -d '{
  "name": "llama2:13b"
Matt Williams's avatar
Matt Williams committed
190
191
192
}'
```

193
## Pull a Model
Matt Williams's avatar
Matt Williams committed
194

195
196
197
198
199
```
POST /api/pull
```

Download a model from a the model registry. Cancelled pulls are resumed from where they left off, and multiple calls to will share the same download progress.
Matt Williams's avatar
Matt Williams committed
200

201
### Parameters
Matt Williams's avatar
Matt Williams committed
202

203
- `name`: name of the model to pull
Matt Williams's avatar
Matt Williams committed
204
205
206

### Request

207
208
209
210
```
curl -X POST http://localhost:11434/api/pull -d '{
  "name": "llama2:7b"
}'
Matt Williams's avatar
Matt Williams committed
211
212
213
```

### Response
214

215
```json
Matt Williams's avatar
Matt Williams committed
216
{
217
218
219
  "status": "downloading digestname",
  "digest": "digestname",
  "total": 2142590208
Matt Williams's avatar
Matt Williams committed
220
221
}
```