mirror of
https://github.com/ollama/ollama.git
synced 2025-05-11 18:36:41 +02:00
parser: add commands format
This commit is contained in:
parent
4d08363580
commit
176ad3aa6e
3 changed files with 108 additions and 15 deletions
|
@ -31,6 +31,33 @@ var (
|
|||
errInvalidRole = errors.New("role must be one of \"system\", \"user\", or \"assistant\"")
|
||||
)
|
||||
|
||||
func Format(cmds []Command) string {
|
||||
var b bytes.Buffer
|
||||
for _, cmd := range cmds {
|
||||
name := cmd.Name
|
||||
args := cmd.Args
|
||||
|
||||
switch cmd.Name {
|
||||
case "model":
|
||||
name = "from"
|
||||
args = cmd.Args
|
||||
case "license", "template", "system", "adapter":
|
||||
args = quote(args)
|
||||
// pass
|
||||
case "message":
|
||||
role, message, _ := strings.Cut(cmd.Args, ": ")
|
||||
args = role + " " + quote(message)
|
||||
default:
|
||||
name = "parameter"
|
||||
args = cmd.Name + " " + cmd.Args
|
||||
}
|
||||
|
||||
fmt.Fprintln(&b, strings.ToUpper(name), args)
|
||||
}
|
||||
|
||||
return b.String()
|
||||
}
|
||||
|
||||
func Parse(r io.Reader) (cmds []Command, err error) {
|
||||
var cmd Command
|
||||
var curr state
|
||||
|
@ -197,6 +224,18 @@ func parseRuneForState(r rune, cs state) (state, rune, error) {
|
|||
}
|
||||
}
|
||||
|
||||
func quote(s string) string {
|
||||
if strings.Contains(s, "\n") || strings.HasSuffix(s, " ") {
|
||||
if strings.Contains(s, "\"") {
|
||||
return `"""` + s + `"""`
|
||||
}
|
||||
|
||||
return strconv.Quote(s)
|
||||
}
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
func unquote(s string) (string, bool) {
|
||||
if len(s) == 0 {
|
||||
return "", false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue