Skip to content

Instantly share code, notes, and snippets.

@razhangwei
Last active September 2, 2024 18:25
Show Gist options
  • Save razhangwei/6c0240a528ca1f240d4a457a9f6901ff to your computer and use it in GitHub Desktop.
Save razhangwei/6c0240a528ca1f240d4a457a9f6901ff to your computer and use it in GitHub Desktop.
chat template

Jinja

Go

Delimiters:

{{ and }} are used to enclose template actions.

Conditionals:

{{ if .Condition }} starts an if block {{ end }} ends a conditional block

Variable access:

.VariableName accesses a field or method on the data structure passed to the template

Whitespace control:

Unlike Jinja, there are no special whitespace control characters (like - in Jinja)

No explicit else statements in this template

{{- if or .System .Tools }}<|start_header_id|>system<|end_header_id|>
{{- if .System }}
{{ .System }}
{{- end }}
{{- if .Tools }}
You are a helpful assistant with tool calling capabilities. When you receive a tool call response, use the output to format an answer to the orginal use question.
{{- end }}
{{- 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 }}
Given the following functions, please respond with a JSON for a function call with its proper arguments that best answers the given prompt.
Respond in the format {"name": function name, "parameters": dictionary of argument name and its value}. Do not use variables.
{{ $.Tools }}
{{- end }}
{{ .Content }}<|eot_id|>{{ 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 }}{{ if not $last }}<|eot_id|>{{ end }}
{{- 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 }}
{{ if .System }}
<|start_header_id|>system<|end_header_id|> {{ .System }}<|eot_id|>
{{ end }}
{{ if .Prompt }}
<|start_header_id|>user<|end_header_id|>{{ .Prompt }}<|eot_id|>
{{ end }}
<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment