Documentation
¶
Overview ¶
Package api implements the client-side API for code wishing to interact with the ollama service. The methods of the Client type correspond to the ollama REST API as described in https://github.com/ollama/ollama/blob/main/docs/api.md
The ollama command-line client itself uses this package to interact with the backend service.
Index ¶
- Variables
- func FormatParams(params map[string][]string) (map[string]interface{}, error)
- type ChatRequest
- type ChatResponse
- type ChatResponseFunc
- type Client
- func (c *Client) Chat(ctx context.Context, req *ChatRequest, fn ChatResponseFunc) error
- func (c *Client) Copy(ctx context.Context, req *CopyRequest) error
- func (c *Client) Create(ctx context.Context, req *CreateRequest, fn CreateProgressFunc) error
- func (c *Client) CreateBlob(ctx context.Context, digest string, r io.Reader) error
- func (c *Client) Delete(ctx context.Context, req *DeleteRequest) error
- func (c *Client) Embeddings(ctx context.Context, req *EmbeddingRequest) (*EmbeddingResponse, error)
- func (c *Client) Generate(ctx context.Context, req *GenerateRequest, fn GenerateResponseFunc) error
- func (c *Client) Heartbeat(ctx context.Context) error
- func (c *Client) List(ctx context.Context) (*ListResponse, error)
- func (c *Client) Pull(ctx context.Context, req *PullRequest, fn PullProgressFunc) error
- func (c *Client) Push(ctx context.Context, req *PushRequest, fn PushProgressFunc) error
- func (c *Client) Show(ctx context.Context, req *ShowRequest) (*ShowResponse, error)
- func (c *Client) Version(ctx context.Context) (string, error)
- type CopyRequest
- type CreateProgressFunc
- type CreateRequest
- type DeleteRequest
- type Duration
- type EmbeddingRequest
- type EmbeddingResponse
- type GenerateRequest
- type GenerateResponse
- type GenerateResponseFunc
- type ImageData
- type ListResponse
- type Message
- type Metrics
- type ModelDetails
- type ModelResponse
- type OllamaHost
- type Options
- type ProgressResponse
- type PullProgressFunc
- type PullRequest
- type PushProgressFunc
- type PushRequest
- type Runner
- type ShowRequest
- type ShowResponse
- type StatusError
- type TokenResponse
Constants ¶
This section is empty.
Variables ¶
var ErrInvalidHostPort = errors.New("invalid port specified in OLLAMA_HOST")
var ErrInvalidOpts = errors.New("invalid options")
Functions ¶
Types ¶
type ChatRequest ¶
type ChatResponse ¶
type ChatResponseFunc ¶
type ChatResponseFunc func(ChatResponse) error
ChatResponseFunc is a function that Client.Chat invokes every time a response is received from the service. If this function returns an error, Client.Chat will stop generating and return this error.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client encapsulates client state for interacting with the ollama service. Use ClientFromEnvironment to create new Clients.
func ClientFromEnvironment ¶
ClientFromEnvironment creates a new Client using configuration from the environment variable OLLAMA_HOST, which points to the network host and port on which the ollama service is listenting. The format of this variable is:
<scheme>://<host>:<port>
If the variable is not specified, a default ollama host and port will be used.
func (*Client) Chat ¶
func (c *Client) Chat(ctx context.Context, req *ChatRequest, fn ChatResponseFunc) error
Chat generates the next message in a chat. ChatRequest may contain a sequence of messages which can be used to maintain chat history with a model. fn is called for each response (there may be multiple responses, e.g. if case streaming is enabled).
func (*Client) Create ¶
func (c *Client) Create(ctx context.Context, req *CreateRequest, fn CreateProgressFunc) error
func (*Client) CreateBlob ¶
func (*Client) Embeddings ¶
func (c *Client) Embeddings(ctx context.Context, req *EmbeddingRequest) (*EmbeddingResponse, error)
func (*Client) Generate ¶
func (c *Client) Generate(ctx context.Context, req *GenerateRequest, fn GenerateResponseFunc) error
Generate generates a response for a given prompt. The req parameter should be populated with prompt details. fn is called for each response (there may be multiple responses, e.g. in case streaming is enabled).
func (*Client) Pull ¶
func (c *Client) Pull(ctx context.Context, req *PullRequest, fn PullProgressFunc) error
Pull downloads a model from the ollama library. fn is called each time progress is made on the request and can be used to display a progress bar, etc.
func (*Client) Push ¶
func (c *Client) Push(ctx context.Context, req *PushRequest, fn PushProgressFunc) error
func (*Client) Show ¶
func (c *Client) Show(ctx context.Context, req *ShowRequest) (*ShowResponse, error)
type CopyRequest ¶
type CreateProgressFunc ¶
type CreateProgressFunc func(ProgressResponse) error
type CreateRequest ¶
type DeleteRequest ¶
type EmbeddingRequest ¶
type EmbeddingResponse ¶
type EmbeddingResponse struct {
Embedding []float64 `json:"embedding"`
}
type GenerateRequest ¶
type GenerateRequest struct {
// Model is the model name; it should be a name familiar to Ollama from
// the library at https://ollama.com/library
Model string `json:"model"`
// Prompt is the textual prompt to send to the model.
Prompt string `json:"prompt"`
// System overrides the model's default system message/prompt.
System string `json:"system"`
// Template overrides the model's default prompt template.
Template string `json:"template"`
// Context is the context parameter returned from a previous call to
// Generate call. It can be used to keep a short conversational memory.
Context []int `json:"context,omitempty"`
// Stream specifies whether the response is streaming; it is true by default.
Stream *bool `json:"stream,omitempty"`
// Raw set to true means that no formatting will be applied to the prompt.
Raw bool `json:"raw,omitempty"`
// Format specifies the format to return a response in.
Format string `json:"format"`
// KeepAlive controls how long the model will stay loaded in memory following
// this request.
KeepAlive *Duration `json:"keep_alive,omitempty"`
// Images is an optional list of base64-encoded images accompanying this
// request, for multimodal models.
Images []ImageData `json:"images,omitempty"`
// Options lists model-specific options. For example, temperature can be
// set through this field, if the model supports it.
Options map[string]interface{} `json:"options"`
}
GenerateRequest describes a request sent by Client.Generate. While you have to specify the Model and Prompt fields, all the other fields have reasonable defaults for basic uses.
type GenerateResponse ¶
type GenerateResponseFunc ¶
type GenerateResponseFunc func(GenerateResponse) error
GenerateResponseFunc is a function that Client.Generate invokes every time a response is received from the service. If this function returns an error, Client.Generate will stop generating and return this error.
type ListResponse ¶
type ListResponse struct {
Models []ModelResponse `json:"models"`
}
type Metrics ¶
type Metrics struct {
TotalDuration time.Duration `json:"total_duration,omitempty"`
LoadDuration time.Duration `json:"load_duration,omitempty"`
PromptEvalCount int `json:"prompt_eval_count,omitempty"`
PromptEvalDuration time.Duration `json:"prompt_eval_duration,omitempty"`
EvalCount int `json:"eval_count,omitempty"`
EvalDuration time.Duration `json:"eval_duration,omitempty"`
}
type ModelDetails ¶
type ModelResponse ¶
type OllamaHost ¶ added in v0.1.33
func GetOllamaHost ¶ added in v0.1.33
func GetOllamaHost() (OllamaHost, error)
type Options ¶
type Options struct {
Runner
// Predict options used at runtime
NumKeep int `json:"num_keep,omitempty"`
Seed int `json:"seed,omitempty"`
NumPredict int `json:"num_predict,omitempty"`
TopK int `json:"top_k,omitempty"`
TopP float32 `json:"top_p,omitempty"`
TFSZ float32 `json:"tfs_z,omitempty"`
TypicalP float32 `json:"typical_p,omitempty"`
RepeatLastN int `json:"repeat_last_n,omitempty"`
Temperature float32 `json:"temperature,omitempty"`
RepeatPenalty float32 `json:"repeat_penalty,omitempty"`
PresencePenalty float32 `json:"presence_penalty,omitempty"`
FrequencyPenalty float32 `json:"frequency_penalty,omitempty"`
Mirostat int `json:"mirostat,omitempty"`
MirostatTau float32 `json:"mirostat_tau,omitempty"`
MirostatEta float32 `json:"mirostat_eta,omitempty"`
PenalizeNewline bool `json:"penalize_newline,omitempty"`
Stop []string `json:"stop,omitempty"`
}
Options specified in GenerateRequest, if you add a new option here add it to the API docs also
func DefaultOptions ¶
func DefaultOptions() Options
type ProgressResponse ¶
type PullProgressFunc ¶
type PullProgressFunc func(ProgressResponse) error
PullProgressFunc is a function that Client.Pull invokes every time there is progress with a "pull" request sent to the service. If this function returns an error, Client.Pull will stop the process and return this error.
type PullRequest ¶
type PushProgressFunc ¶
type PushProgressFunc func(ProgressResponse) error
type PushRequest ¶
type Runner ¶
type Runner struct {
UseNUMA bool `json:"numa,omitempty"`
NumCtx int `json:"num_ctx,omitempty"`
NumBatch int `json:"num_batch,omitempty"`
NumGQA int `json:"num_gqa,omitempty"`
NumGPU int `json:"num_gpu,omitempty"`
MainGPU int `json:"main_gpu,omitempty"`
LowVRAM bool `json:"low_vram,omitempty"`
F16KV bool `json:"f16_kv,omitempty"`
LogitsAll bool `json:"logits_all,omitempty"`
VocabOnly bool `json:"vocab_only,omitempty"`
UseMMap bool `json:"use_mmap,omitempty"`
UseMLock bool `json:"use_mlock,omitempty"`
NumThread int `json:"num_thread,omitempty"`
// Unused: RopeFrequencyBase is ignored. Instead the value in the model will be used
RopeFrequencyBase float32 `json:"rope_frequency_base,omitempty"`
// Unused: RopeFrequencyScale is ignored. Instead the value in the model will be used
RopeFrequencyScale float32 `json:"rope_frequency_scale,omitempty"`
}
Runner options which must be set when the model is loaded into memory
type ShowRequest ¶
type ShowResponse ¶
type ShowResponse struct {
License string `json:"license,omitempty"`
Modelfile string `json:"modelfile,omitempty"`
Parameters string `json:"parameters,omitempty"`
Template string `json:"template,omitempty"`
System string `json:"system,omitempty"`
Details ModelDetails `json:"details,omitempty"`
Messages []Message `json:"messages,omitempty"`
}
type StatusError ¶
func (StatusError) Error ¶
func (e StatusError) Error() string
type TokenResponse ¶
type TokenResponse struct {
Token string `json:"token"`
}