--- name: "chatml-hercules" config_file: | mmap: true function: # disable injecting the "answer" tool disable_no_action: true grammar: # This allows the grammar to also return messages mixed_mode: true return_name_in_function_response: true # Without grammar uncomment the lines below # Warning: this is relying only on the capability of the # LLM model to generate the correct function call. json_regex_match: - "(?s)<|im_start|>call(.*?)<|im_end|>" - "(?s)<|im_start|>call(.*?)" replace_function_results: # Replace everything that is not JSON array or object - key: '(?s)^[^{\[]*' value: "" - key: '(?s)[^}\]]*$' value: "" - key: "'([^']*?)'" value: "_DQUOTE_${1}_DQUOTE_" - key: '\\"' value: "__TEMP_QUOTE__" - key: "\'" value: "'" - key: "_DQUOTE_" value: '"' - key: "__TEMP_QUOTE__" value: '"' template: chat_message: | <|im_start|>{{ if .FunctionCall -}}call{{else if eq .RoleName "tool"}}function{{else}}{{ .RoleName }}{{end}} {{ if .Content -}} {{.Content }} {{ end -}} {{ if .FunctionCall -}} {{toJson .FunctionCall}} {{ end -}}<|im_end|> function: | <|im_start|>system You are a function calling AI model. You are provided with functions to execute. You may call one or more functions to assist with the user query. Don't make assumptions about what values to plug into functions. Here are the available tools: {{range .Functions}} {'type': 'function', 'function': {'name': '{{.Name}}', 'description': '{{.Description}}', 'parameters': {{toJson .Parameters}} }} {{end}} For each function call return a json object with function name and arguments <|im_end|> {{.Input -}} chat: | {{.Input -}} <|im_start|>assistant completion: | {{.Input}} context_size: 4096 stopwords: - '<|im_end|>' - '' - ''