Sync from v0.13
This commit is contained in:
62
examples/tool_chat_template_phi4_mini.jinja
Normal file
62
examples/tool_chat_template_phi4_mini.jinja
Normal file
@@ -0,0 +1,62 @@
|
||||
{%- if messages and messages[0]['role'] == 'system' %}
|
||||
{%- set system_message = messages[0]['content']|trim %}
|
||||
{%- set messages = messages[1:] %}
|
||||
{%- else %}
|
||||
{%- set system_message = "You are a helpful assistant." %}
|
||||
{%- endif %}
|
||||
|
||||
{%- if messages %}
|
||||
<|system|>
|
||||
{{ system_message }}
|
||||
{%- if tools %}
|
||||
In addition to plain text responses, you can choose to call one or more of the provided functions.
|
||||
|
||||
Use the following rule to decide when to call a function:
|
||||
* if the response can be generated from your internal knowledge (e.g., as in the case of queries like "What is the capital of Poland?"), do so
|
||||
* if you need external information that can be obtained by calling one or more of the provided functions, generate a function calls
|
||||
|
||||
If you decide to call functions:
|
||||
* prefix function calls with functools marker (no closing marker required)
|
||||
* all function calls should be generated in a single JSON list formatted as functools[{"name": [function name], "arguments": [function arguments as JSON]}, ...]
|
||||
* follow the provided JSON schema. Do not hallucinate arguments or values. Do to blindly copy values from the provided samples
|
||||
* respect the argument type formatting. E.g., if the type is number and format is float, write value 7 as 7.0
|
||||
* make sure you pick the right functions that match the user intent
|
||||
|
||||
|
||||
{%- for t in tools %}
|
||||
{{- t | tojson(indent=4) }}
|
||||
{{- "\n\n" }}
|
||||
{%- endfor %}
|
||||
{%- endif %}<|end|>
|
||||
|
||||
{%- for message in messages %}
|
||||
{%- if message.role != "system" %}
|
||||
<|{{ message.role }}|>
|
||||
{%- if message.content and message.role == "tools" %}
|
||||
{"result": {{ message.content }}}
|
||||
{%- elif message.content %}
|
||||
{{ message.content }}
|
||||
{%- elif message.tool_calls %}
|
||||
{%- for call in message.tool_calls %}
|
||||
{"name": "{{ call.function.name }}", "arguments": {{ call.function.arguments }}}
|
||||
{%- if not loop.last %},{% endif %}
|
||||
{%- endfor %}
|
||||
{%- endif %}<|end|>
|
||||
{%- endif %}
|
||||
{%- endfor %}<|assistant|>
|
||||
|
||||
{%- else %}
|
||||
{%- if system_message %}
|
||||
<|system|>
|
||||
|
||||
{{ system_message }}<|end|>
|
||||
{%- endif %}
|
||||
{%- if prompt %}
|
||||
<|user|>
|
||||
|
||||
{{ prompt }}<|end|>
|
||||
{%- endif %}<|assistant|>
|
||||
|
||||
{%- endif %}
|
||||
{{ response }}
|
||||
{%- if response %}<|user|>{% endif %}
|
||||
Reference in New Issue
Block a user