|
|
|
{{- if .System }}{{ .System }}{{ end }} |
|
{{- if .Tools }} |
|
|
|
## Tools |
|
|
|
### Function |
|
|
|
You have the following functions available: |
|
|
|
{{- range .Tools }} |
|
- {{ .Function.Name }} |
|
```json |
|
{{ .Function }} |
|
``` |
|
{{- end }} |
|
|
|
For function call returns, you should first print <|tool▁calls▁begin|> |
|
|
|
For each function call, you must return: |
|
|
|
<|tool▁call▁begin|>function<|tool▁sep|><function_name>\n```json\n<function_arguments_in_json_format>\n```<|tool▁call▁end|> |
|
|
|
Do not forget the function name or arguments. If more than one function call is required, return them in the same response instead of separately. |
|
|
|
At the end of function call returns, you should print <|tool▁calls▁end|>. |
|
|
|
{{ end }} |
|
{{- range $i, $_ := .Messages }} |
|
{{- $last := eq (len (slice $.Messages $i)) 1}} |
|
{{- if eq .Role "user" }}<|User|>{{ .Content }} |
|
{{- else if eq .Role "tool" }}<|User|><|tool▁outputs▁begin|><|tool▁output▁begin|>{{ .Content }}<|tool▁output▁end|><|tool▁outputs▁end|> |
|
{{- else if eq .Role "assistant" }}<|Assistant|> |
|
{{- if and $.IsThinkSet (and $last .Thinking) -}} |
|
<think> |
|
{{ .Thinking }} |
|
</think> |
|
{{- end }} |
|
{{- if .ToolCalls }}<|tool▁calls▁begin|> |
|
{{- range .ToolCalls }}<|tool▁call▁begin|>function<|tool▁sep|>{{ .Function.Name }} |
|
```json |
|
{{ .Function.Arguments }} |
|
```<|tool▁call▁end|>{{ end }}<|tool▁calls▁end|> |
|
{{- else if .Content }}{{ .Content }}{{- end }} |
|
{{- if not $last }}<|end▁of▁sentence|>{{ end }} |
|
{{- end }} |
|
{{- if and $last (ne .Role "assistant") }}<|Assistant|> |
|
{{- if and $.IsThinkSet (not $.Think) -}} |
|
</think> |
|
{{ end }} |
|
{{- end }} |
|
{{- end }} |