ollama

Форк
0
/
llama.go 
100 строк · 1.9 Кб
1
package llm
2

3
import (
4
	_ "embed"
5
	"fmt"
6
	"time"
7

8
	"github.com/jmorganca/ollama/api"
9
)
10

11
const jsonGrammar = `
12
root   ::= object
13
value  ::= object | array | string | number | ("true" | "false" | "null") ws
14

15
object ::=
16
  "{" ws (
17
            string ":" ws value
18
    ("," ws string ":" ws value)*
19
  )? "}" ws
20

21
array  ::=
22
  "[" ws (
23
            value
24
    ("," ws value)*
25
  )? "]" ws
26

27
string ::=
28
  "\"" (
29
    [^"\\] |
30
    "\\" (["\\/bfnrt] | "u" [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F] [0-9a-fA-F]) # escapes
31
  )* "\"" ws
32

33
number ::= ("-"? ([0-9] | [1-9] [0-9]*)) ("." [0-9]+)? ([eE] [-+]? [0-9]+)? ws
34

35
# Optional space: by convention, applied in this grammar after literal chars when allowed
36
ws ::= ([ \t\n] ws)?
37
`
38

39
type ImageData struct {
40
	Data []byte `json:"data"`
41
	ID   int    `json:"id"`
42
}
43

44
var payloadMissing = fmt.Errorf("expected dynamic library payloads not included in this build of ollama")
45

46
type prediction struct {
47
	Content string `json:"content"`
48
	Model   string `json:"model"`
49
	Prompt  string `json:"prompt"`
50
	Stop    bool   `json:"stop"`
51

52
	Timings struct {
53
		PredictedN  int     `json:"predicted_n"`
54
		PredictedMS float64 `json:"predicted_ms"`
55
		PromptN     int     `json:"prompt_n"`
56
		PromptMS    float64 `json:"prompt_ms"`
57
	}
58
}
59

60
const maxRetries = 3
61

62
type PredictOpts struct {
63
	Prompt  string
64
	Format  string
65
	Images  []ImageData
66
	Options api.Options
67
}
68

69
type PredictResult struct {
70
	Content            string
71
	Done               bool
72
	PromptEvalCount    int
73
	PromptEvalDuration time.Duration
74
	EvalCount          int
75
	EvalDuration       time.Duration
76
}
77

78
type TokenizeRequest struct {
79
	Content string `json:"content"`
80
}
81

82
type TokenizeResponse struct {
83
	Tokens []int `json:"tokens"`
84
}
85

86
type DetokenizeRequest struct {
87
	Tokens []int `json:"tokens"`
88
}
89

90
type DetokenizeResponse struct {
91
	Content string `json:"content"`
92
}
93

94
type EmbeddingRequest struct {
95
	Content string `json:"content"`
96
}
97

98
type EmbeddingResponse struct {
99
	Embedding []float64 `json:"embedding"`
100
}
101

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.