60 lines
1.8 KiB
Markdown
60 lines
1.8 KiB
Markdown
# go-ollama — Project Specification
|
|
|
|
## Module
|
|
|
|
- **Path:** `gitea.neitzel.de/konrad/go-ollama`
|
|
- **Package:** `gollama`
|
|
- **Dependency:** `github.com/ollama/ollama/api` (pinned in `go.mod`)
|
|
|
|
Thin wrapper around the official Ollama Go API. Adds ergonomic defaults, option builders, and tiered prompt helpers.
|
|
|
|
## Client
|
|
|
|
```go
|
|
client, _ := gollama.FromEnv() // OLLAMA_HOST
|
|
client, _ := gollama.New("http://localhost:11434")
|
|
client, _ := gollama.New(host, gollama.WithDefaultModel("llama3.2"))
|
|
```
|
|
|
|
## Model management
|
|
|
|
| Method | Purpose |
|
|
|--------|---------|
|
|
| `ModelNames` | Sorted local model names |
|
|
| `Models` | Local models with metadata |
|
|
| `Pull` / `PullWithProgress` | Download/load model |
|
|
| `Show` | Model details |
|
|
| `ModelDefaults` | Parse modelfile parameters to `OptionSet` |
|
|
| `Delete` | Remove model |
|
|
| `RunningModels` | Models loaded in memory |
|
|
|
|
## Prompt API tiers
|
|
|
|
| Tier | Methods | Use case |
|
|
|------|---------|----------|
|
|
| 1 | `Complete`, `CompleteWithSystem`, `CompleteRaw` | Single prompt |
|
|
| 2 | `Chat`, `ChatWithSystem` | One chat turn |
|
|
| 3 | `ChatMessages` + `User`/`System`/`Assistant` | History + new message |
|
|
| 4 | `Session.Send` | Stateful multi-turn |
|
|
| 5 | `CompleteJSON`, `ChatJSON` | Structured output |
|
|
| 6 | `CompleteStream`, `ChatStream` | Streaming |
|
|
| 7 | `Embed` | Embeddings |
|
|
|
|
## Options
|
|
|
|
- `NewOptions()` / fluent builder (`Temperature`, `NumCtx`, `Stop`, …)
|
|
- `KnownOptions()` — documented option keys
|
|
- Precedence: per-call `WithOptions` > session > client defaults > server
|
|
|
|
## Integration tests
|
|
|
|
Config load order: env vars → `testconfig/local.toml` → `testconfig/defaults.toml`.
|
|
|
|
Default host: `http://debian:11434`
|
|
|
|
```bash
|
|
go test -tags=integration ./...
|
|
OLLAMA_HOST=http://other:11434 go test -tags=integration ./...
|
|
GOLLAMA_TEST_PULL=1 go test -tags=integration -run Pull ./...
|
|
```
|