
Signed-off-by: Kinfey <kinfeylo@microsoft.com> Co-authored-by: Cyrus Leung <tlleungac@connect.ust.hk>
60 lines
2.1 KiB
Django/Jinja
60 lines
2.1 KiB
Django/Jinja
{%- if messages %}
|
|
{%- if system_message or tools %}
|
|
<|system|>
|
|
|
|
{%- if system_message %}
|
|
{{ system_message }}
|
|
{%- endif %}
|
|
In addition to plain text responses, you can chose 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 if number and format is float, write value 7 as 7.0
|
|
* make sure you pick the right functions that match the user intent
|
|
|
|
|
|
{%- if tools %}
|
|
{%- for t in tools %}
|
|
{{- t | tojson(indent=4) }}
|
|
{{- "\n\n" }}
|
|
{%- endfor %}
|
|
{%- endif %}<|end|>
|
|
{%- endif %}
|
|
|
|
{%- 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 %} |