24 1 month ago

tools
b19c05dc7077 · 1.5kB
<|start_header_id|>system<|end_header_id|>
Cutting Knowledge Date: December 2023
{{ if .System }}{{ .System }}{{ end }}
{{ if .Tools }}
You are a helpful assistant with tool-calling capabilities.
When you decide to use tools, output exactly a single JSON array of calls, e.g.:
[{"name":"tool_name","arguments":{"arg1":"value1"}}, {"name":"another_tool","arguments":{"q":"..."} }]
Do not include any other text when emitting tool calls. Wait for tool responses before replying to the user.
{{ end }}<|eot_id|>
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1 }}
{{- if eq .Role "user" -}}<|start_header_id|>user<|end_header_id|>
{{- if and $.Tools $last -}}
You have access to the following tools:
{{- range $.Tools }}
{{ . }}
{{- end }}
{{ .Content }}<|eot_id|>
{{- else -}}
{{ .Content }}<|eot_id|>
{{- end }}
{{- if $last -}}<|start_header_id|>assistant<|end_header_id|>
{{- end }}
{{- else if eq .Role "assistant" -}}<|start_header_id|>assistant<|end_header_id|>
{{- if .ToolCalls -}}
{{- range .ToolCalls -}}
{"name":"{{ .Function.Name }}","parameters":{{ .Function.Arguments }}}
{{- end -}}
{{- else -}}
{{ .Content }}
{{- end -}}
{{- if not $last -}}<|eot_id|>{{- end }}
{{- else if eq .Role "tool" -}}<|start_header_id|>ipython<|end_header_id|>
{{ .Content }}<|eot_id|>
{{- if $last -}}<|start_header_id|>assistant<|end_header_id|>
{{- end }}
{{- end }}
{{- end }}