mirror of
https://github.com/ollama/ollama.git
synced 2026-01-11 09:00:53 -05:00
Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2113c1fc7 | ||
|
|
6452e2ecb8 | ||
|
|
aabd71aede | ||
|
|
f321b13a03 | ||
|
|
5ebcde1541 | ||
|
|
45206cb7cc | ||
|
|
6e65b84f54 | ||
|
|
c00ce12e83 | ||
|
|
e1cd3152c9 | ||
|
|
0bef3778c9 | ||
|
|
6ebab38b89 | ||
|
|
5d8e864d44 | ||
|
|
786288829e | ||
|
|
72dcc952b6 | ||
|
|
779e196ef6 | ||
|
|
c1a5220860 | ||
|
|
3b15175a70 |
@@ -216,6 +216,10 @@ See the [API documentation](./docs/api.md) for all endpoints.
|
||||
|
||||
## Community Integrations
|
||||
|
||||
### Mobile
|
||||
|
||||
- [Mobile Artificial Intelligence Distribution](https://github.com/MaidFoundation/Maid) (Maid)
|
||||
|
||||
### Web & Desktop
|
||||
|
||||
- [HTML UI](https://github.com/rtcfirefly/ollama-ui)
|
||||
@@ -236,6 +240,8 @@ See the [API documentation](./docs/api.md) for all endpoints.
|
||||
- [ollama.nvim](https://github.com/nomnivore/ollama.nvim)
|
||||
- [ogpt.nvim](https://github.com/huynle/ogpt.nvim)
|
||||
- [gptel Emacs client](https://github.com/karthink/gptel)
|
||||
- [ollama package for archlinux](https://archlinux.org/packages/extra/x86_64/ollama/)
|
||||
- [Oatmeal](https://github.com/dustinblackman/oatmeal)
|
||||
|
||||
### Libraries
|
||||
|
||||
|
||||
@@ -42,6 +42,19 @@ func NewBar(message string, maxValue, initialValue int64) *Bar {
|
||||
}
|
||||
}
|
||||
|
||||
// formatDuration limits the rendering of a time.Duration to 2 units
|
||||
func formatDuration(d time.Duration) string {
|
||||
if d >= 100*time.Hour {
|
||||
return "99h+"
|
||||
}
|
||||
|
||||
if d >= time.Hour {
|
||||
return fmt.Sprintf("%dh%dm", int(d.Hours()), int(d.Minutes())%60)
|
||||
}
|
||||
|
||||
return d.Round(time.Second).String()
|
||||
}
|
||||
|
||||
func (b *Bar) String() string {
|
||||
termWidth, _, err := term.GetSize(int(os.Stderr.Fd()))
|
||||
if err != nil {
|
||||
@@ -65,39 +78,42 @@ func (b *Bar) String() string {
|
||||
}
|
||||
|
||||
fmt.Fprintf(&pre, "%3.0f%% ", math.Floor(b.percent()))
|
||||
|
||||
fmt.Fprintf(&suf, "(%s/%s", format.HumanBytes(b.currentValue), format.HumanBytes(b.maxValue))
|
||||
|
||||
stats := b.Stats()
|
||||
rate := int64(stats.rate)
|
||||
if rate > 0 {
|
||||
fmt.Fprintf(&suf, ", %s/s", format.HumanBytes(rate))
|
||||
rate := stats.rate
|
||||
if stats.value > b.initialValue && stats.value < b.maxValue {
|
||||
fmt.Fprintf(&suf, ", %s/s", format.HumanBytes(int64(rate)))
|
||||
}
|
||||
|
||||
fmt.Fprintf(&suf, ")")
|
||||
|
||||
elapsed := time.Since(b.started)
|
||||
if b.percent() < 100 && rate > 0 {
|
||||
fmt.Fprintf(&suf, " [%s:%s]", elapsed.Round(time.Second), stats.remaining)
|
||||
} else {
|
||||
fmt.Fprintf(&suf, " ")
|
||||
var timing string
|
||||
if stats.value > b.initialValue && stats.value < b.maxValue {
|
||||
timing = fmt.Sprintf("[%s:%s]", formatDuration(time.Since(b.started)), formatDuration(stats.remaining))
|
||||
}
|
||||
|
||||
mid.WriteString("▕")
|
||||
// 44 is the maximum width for the stats on the right of the progress bar
|
||||
pad := 44 - suf.Len() - len(timing)
|
||||
if pad > 0 {
|
||||
suf.WriteString(strings.Repeat(" ", pad))
|
||||
}
|
||||
suf.WriteString(timing)
|
||||
|
||||
// add 3 extra spaces: 2 boundary characters and 1 space at the end
|
||||
f := termWidth - pre.Len() - suf.Len() - 3
|
||||
n := int(float64(f) * b.percent() / 100)
|
||||
|
||||
if n > 0 {
|
||||
if f > 0 {
|
||||
mid.WriteString("▕")
|
||||
mid.WriteString(strings.Repeat("█", n))
|
||||
if f-n > 0 {
|
||||
mid.WriteString(strings.Repeat(" ", f-n))
|
||||
}
|
||||
mid.WriteString("▏")
|
||||
}
|
||||
|
||||
if f-n > 0 {
|
||||
mid.WriteString(strings.Repeat(" ", f-n))
|
||||
}
|
||||
|
||||
mid.WriteString("▏")
|
||||
|
||||
return pre.String() + mid.String() + suf.String()
|
||||
}
|
||||
|
||||
@@ -140,6 +156,8 @@ func (b *Bar) Stats() Stats {
|
||||
var remaining time.Duration
|
||||
if rate > 0 {
|
||||
remaining = time.Second * time.Duration((float64(b.maxValue-b.currentValue))/(float64(rate)))
|
||||
} else {
|
||||
remaining = time.Duration(math.MaxInt64)
|
||||
}
|
||||
|
||||
b.stats = Stats{
|
||||
|
||||
Reference in New Issue
Block a user