[GH-ISSUE #7792] Mistral Large instruct template #30739

Open
opened 2026-04-22 10:38:21 -05:00 by GiteaMirror · 3 comments
Owner

Originally created by @nicho2 on GitHub (Nov 22, 2024).
Original GitHub issue: https://github.com/ollama/ollama/issues/7792

Originally assigned to: @jmorganca on GitHub.

What is the issue?

Hello ,

Ollama seems no apply a good template for Mistral Large:

https://huggingface.co/mistralai/Mistral-Large-Instruct-2411#basic-instruct-template-v7

mistral gives a SYSTEM_PROMPT token not apply:

<s>[SYSTEM_PROMPT] <system prompt>[/SYSTEM_PROMPT][INST] <user message>[/INST] <assistant response></s>[INST] <user message>[/INST]

example:

API messages
{
    "model": "mistral-large:123b",
    "messages": [
	    {
		    "role": "system",
		    "content": "\nTu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \n\nVotre rôle principal est de répondre précisément aux demandes de l'utilisateur en coordonnant des agents spécialisés, chacun ayant des compétences spécifiques pour récupérer et analyser les données.\n\nPour chaque demande de l'utilisateur, tu réfléchis à quels assistants spécialisés tu dois faire appel. Il est possible que tu doives faire appel à plusieurs assistants à la suite , pour cela tu dois faire un plan de la meilleure démarche pour répondre au besoin du client. Tu sollicites l'utilisateur pour demander des informations complémentaires si sa demande n'est pas complète.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant. \n\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur.\n\nL'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas ; Déléguez simplement discrètement via des appels de fonction.\n\nPour répondre aux requêtes de l'utilisateur, tu devras vérifier qu'il a le droit d'accéder aux données de l'espace concerné.\n\nTu ne peut faire appel qu'à un seul agent à la fois.\n\n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-22 09:01:08.995806.\n",
		    "images": []
	    },
	    {
		    "role": "user",
		    "content": "quelles sont les statistiques au workcafe ce matin",
		    "images": []
	    }
    ],
    "tools": [
	    {
		    "type": "function",
		    "function": {
			    "name": "tavily_search_results_json",
			    "description": "A search engine optimized for comprehensive, accurate, and trusted results. Useful for when you need to answer questions about current events. Input should be a search query.",
			    "parameters": {
				    "properties": {
					    "query": {
						    "description": "search query to look up",
						    "type": "string"
					    }
				    },
				    "required": [
					    "query"
				    ],
				    "type": "object"
			    }
		    }
	    },
	    {
		    "type": "function",
		    "function": {
			    "name": "ToAccesRightAgent",
			    "description": "Transfert du travail à un agent spécialisé dans la gestion des droits d'accès.",
			    "parameters": {
				    "properties": {
					    "request": {
						    "description": "Toutes les questions concernant les droits d'accès de l'utilisateur aux différents espaces du bâtiment.",
						    "type": "string"
					    },
					    "username": {
						    "anyOf": [
							    {
								    "type": "string"
							    },
							    {
								    "type": "null"
							    }
						    ],
						    "description": "le login utilisateur"
					    },
					    "user_id": {
						    "description": "le user_id de l'utilisateur",
						    "type": "string"
					    }
				    },
				    "required": [
					    "request",
					    "username",
					    "user_id"
				    ],
				    "type": "object"
			    }
		    }
	    },
	    {
		    "type": "function",
		    "function": {
			    "name": "ToDatasFetchingAgent",
			    "description": "Transfert du travail à un agent spécialisé dans la récupération des données.",
			    "parameters": {
				    "properties": {
					    "request": {
						    "description": "Toutes les questions nécessitant la récupération des données d'espaces du bâtiment.",
						    "type": "string"
					    }
				    },
				    "required": [
					    "request"
				    ],
				    "type": "object"
			    }
		    }
	    },
	    {
		    "type": "function",
		    "function": {
			    "name": "ToKpiPoliciesAgent",
			    "description": "Transfert du travail à un agent spécialisé dans la récupération de règles permettant l'interprétation des données.",
			    "parameters": {
				    "properties": {
					    "request": {
						    "description": "Toutes les questions liées à l'interprétation des données d'espaces du bâtiment.",
						    "type": "string"
					    }
				    },
				    "required": [
					    "request"
				    ],
				    "type": "object"
			    }
		    }
	    }
    ],
    "stream": false,
    "format": "",
    "options": {
	    "mirostat": null,
	    "mirostat_eta": null,
	    "mirostat_tau": null,
	    "num_ctx": null,
	    "num_gpu": null,
	    "num_thread": null,
	    "num_predict": null,
	    "repeat_last_n": null,
	    "repeat_penalty": null,
	    "temperature": 0.3,
	    "seed": null,
	    "stop": null,
	    "tfs_z": null,
	    "top_k": null,
	    "top_p": null
    },
    "keep_alive": null
}
Prompt Ollama
    ~time=2024-11-22T08:01:22.589Z level=DEBUG source=routes.go:1465 msg="chat request" images=0 
    prompt="[AVAILABLE_TOOLS] [{\"type\":\"function\",\"function\":{\"name\":\"tavily_search_results_json\",\"description\":\"A search engine optimized for comprehensive, accurate, and trusted results. Useful for when you need to answer questions about current events. Input should be a search query.\",\"parameters\":{\"type\":\"object\",\"required\":[\"query\"],\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"search query to look up\"}}}}},{\"type\":\"function\",\"function\":{\"name\":\"ToAccesRightAgent\",\"description\":\"Transfert du travail à un agent spécialisé dans la gestion des droits d'accès.\",\"parameters\":{\"type\":\"object\",\"required\":[\"request\",\"username\",\"user_id\"],\"properties\":{\"request\":{\"type\":\"string\",\"description\":\"Toutes les questions concernant les droits d'accès de l'utilisateur aux différents espaces du bâtiment.\"},\"user_id\":{\"type\":\"string\",\"description\":\"le user_id de l'utilisateur\"},\"username\":{\"type\":\"\",\"description\":\"le login utilisateur\"}}}}},{\"type\":\"function\",\"function\":{\"name\":\"ToDatasFetchingAgent\",\"description\":\"Transfert du travail à un agent spécialisé dans la récupération des données.\",\"parameters\":{\"type\":\"object\",\"required\":[\"request\"],\"properties\":{\"request\":{\"type\":\"string\",\"description\":\"Toutes les questions nécessitant la récupération des données d'espaces du bâtiment.\"}}}}},{\"type\":\"function\",\"function\":{\"name\":\"ToKpiPoliciesAgent\",\"description\":\"Transfert du travail à un agent spécialisé dans la récupération de règles permettant l'interprétation des données.\",\"parameters\":{\"type\":\"object\",\"required\":[\"request\"],\"properties\":{\"request\":{\"type\":\"string\",\"description\":\"Toutes les questions liées à l'interprétation des données d'espaces du bâtiment.\"}}}}}]
    [/AVAILABLE_TOOLS]
    [INST] Tu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \n\nVotre rôle principal est de répondre précisément aux demandes de l'utilisateur en coordonnant des agents spécialisés, chacun ayant des compétences spécifiques pour récupérer et analyser les données.\n\nPour chaque demande de l'utilisateur, tu réfléchis à quels assistants spécialisés tu dois faire appel. Il est possible que tu doives faire appel à plusieurs assistants à la suite , pour cela tu dois faire un plan de la meilleure démarche pour répondre au besoin du client. Tu sollicites l'utilisateur pour demander des informations complémentaires si sa demande n'est pas complète.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant. \n\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur.\n\nL'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas ; Déléguez simplement discrètement via des appels de fonction.\n\nPour répondre aux requêtes de l'utilisateur, tu devras vérifier qu'il a le droit d'accéder aux données de l'espace concerné.\n\nTu ne peut faire appel qu'à un seul agent à la fois.\n\n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-22 09:01:08.995806.\n\nquelles sont les statistiques au workcafe ce matin
    [/INST]\n"

OS

Linux

GPU

Nvidia

CPU

Intel

Ollama version

0.4.3

Originally created by @nicho2 on GitHub (Nov 22, 2024). Original GitHub issue: https://github.com/ollama/ollama/issues/7792 Originally assigned to: @jmorganca on GitHub. ### What is the issue? Hello , Ollama seems no apply a good template for Mistral Large: https://huggingface.co/mistralai/Mistral-Large-Instruct-2411#basic-instruct-template-v7 mistral gives a SYSTEM_PROMPT token not apply: <s>[SYSTEM_PROMPT] <system prompt>[/SYSTEM_PROMPT][INST] <user message>[/INST] <assistant response></s>[INST] <user message>[/INST] example: <details> <summary>API messages</summary> { "model": "mistral-large:123b", "messages": [ { "role": "system", "content": "\nTu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \n\nVotre rôle principal est de répondre précisément aux demandes de l'utilisateur en coordonnant des agents spécialisés, chacun ayant des compétences spécifiques pour récupérer et analyser les données.\n\nPour chaque demande de l'utilisateur, tu réfléchis à quels assistants spécialisés tu dois faire appel. Il est possible que tu doives faire appel à plusieurs assistants à la suite , pour cela tu dois faire un plan de la meilleure démarche pour répondre au besoin du client. Tu sollicites l'utilisateur pour demander des informations complémentaires si sa demande n'est pas complète.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant. \n\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur.\n\nL'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas ; Déléguez simplement discrètement via des appels de fonction.\n\nPour répondre aux requêtes de l'utilisateur, tu devras vérifier qu'il a le droit d'accéder aux données de l'espace concerné.\n\nTu ne peut faire appel qu'à un seul agent à la fois.\n\n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-22 09:01:08.995806.\n", "images": [] }, { "role": "user", "content": "quelles sont les statistiques au workcafe ce matin", "images": [] } ], "tools": [ { "type": "function", "function": { "name": "tavily_search_results_json", "description": "A search engine optimized for comprehensive, accurate, and trusted results. Useful for when you need to answer questions about current events. Input should be a search query.", "parameters": { "properties": { "query": { "description": "search query to look up", "type": "string" } }, "required": [ "query" ], "type": "object" } } }, { "type": "function", "function": { "name": "ToAccesRightAgent", "description": "Transfert du travail à un agent spécialisé dans la gestion des droits d'accès.", "parameters": { "properties": { "request": { "description": "Toutes les questions concernant les droits d'accès de l'utilisateur aux différents espaces du bâtiment.", "type": "string" }, "username": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "le login utilisateur" }, "user_id": { "description": "le user_id de l'utilisateur", "type": "string" } }, "required": [ "request", "username", "user_id" ], "type": "object" } } }, { "type": "function", "function": { "name": "ToDatasFetchingAgent", "description": "Transfert du travail à un agent spécialisé dans la récupération des données.", "parameters": { "properties": { "request": { "description": "Toutes les questions nécessitant la récupération des données d'espaces du bâtiment.", "type": "string" } }, "required": [ "request" ], "type": "object" } } }, { "type": "function", "function": { "name": "ToKpiPoliciesAgent", "description": "Transfert du travail à un agent spécialisé dans la récupération de règles permettant l'interprétation des données.", "parameters": { "properties": { "request": { "description": "Toutes les questions liées à l'interprétation des données d'espaces du bâtiment.", "type": "string" } }, "required": [ "request" ], "type": "object" } } } ], "stream": false, "format": "", "options": { "mirostat": null, "mirostat_eta": null, "mirostat_tau": null, "num_ctx": null, "num_gpu": null, "num_thread": null, "num_predict": null, "repeat_last_n": null, "repeat_penalty": null, "temperature": 0.3, "seed": null, "stop": null, "tfs_z": null, "top_k": null, "top_p": null }, "keep_alive": null } </details> <details> <summary>Prompt Ollama</summary> ~time=2024-11-22T08:01:22.589Z level=DEBUG source=routes.go:1465 msg="chat request" images=0 prompt="[AVAILABLE_TOOLS] [{\"type\":\"function\",\"function\":{\"name\":\"tavily_search_results_json\",\"description\":\"A search engine optimized for comprehensive, accurate, and trusted results. Useful for when you need to answer questions about current events. Input should be a search query.\",\"parameters\":{\"type\":\"object\",\"required\":[\"query\"],\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"search query to look up\"}}}}},{\"type\":\"function\",\"function\":{\"name\":\"ToAccesRightAgent\",\"description\":\"Transfert du travail à un agent spécialisé dans la gestion des droits d'accès.\",\"parameters\":{\"type\":\"object\",\"required\":[\"request\",\"username\",\"user_id\"],\"properties\":{\"request\":{\"type\":\"string\",\"description\":\"Toutes les questions concernant les droits d'accès de l'utilisateur aux différents espaces du bâtiment.\"},\"user_id\":{\"type\":\"string\",\"description\":\"le user_id de l'utilisateur\"},\"username\":{\"type\":\"\",\"description\":\"le login utilisateur\"}}}}},{\"type\":\"function\",\"function\":{\"name\":\"ToDatasFetchingAgent\",\"description\":\"Transfert du travail à un agent spécialisé dans la récupération des données.\",\"parameters\":{\"type\":\"object\",\"required\":[\"request\"],\"properties\":{\"request\":{\"type\":\"string\",\"description\":\"Toutes les questions nécessitant la récupération des données d'espaces du bâtiment.\"}}}}},{\"type\":\"function\",\"function\":{\"name\":\"ToKpiPoliciesAgent\",\"description\":\"Transfert du travail à un agent spécialisé dans la récupération de règles permettant l'interprétation des données.\",\"parameters\":{\"type\":\"object\",\"required\":[\"request\"],\"properties\":{\"request\":{\"type\":\"string\",\"description\":\"Toutes les questions liées à l'interprétation des données d'espaces du bâtiment.\"}}}}}] [/AVAILABLE_TOOLS] [INST] Tu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \n\nVotre rôle principal est de répondre précisément aux demandes de l'utilisateur en coordonnant des agents spécialisés, chacun ayant des compétences spécifiques pour récupérer et analyser les données.\n\nPour chaque demande de l'utilisateur, tu réfléchis à quels assistants spécialisés tu dois faire appel. Il est possible que tu doives faire appel à plusieurs assistants à la suite , pour cela tu dois faire un plan de la meilleure démarche pour répondre au besoin du client. Tu sollicites l'utilisateur pour demander des informations complémentaires si sa demande n'est pas complète.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant. \n\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur.\n\nL'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas ; Déléguez simplement discrètement via des appels de fonction.\n\nPour répondre aux requêtes de l'utilisateur, tu devras vérifier qu'il a le droit d'accéder aux données de l'espace concerné.\n\nTu ne peut faire appel qu'à un seul agent à la fois.\n\n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-22 09:01:08.995806.\n\nquelles sont les statistiques au workcafe ce matin [/INST]\n" </details> ### OS Linux ### GPU Nvidia ### CPU Intel ### Ollama version 0.4.3
GiteaMirror added the bug label 2026-04-22 10:38:21 -05:00
Author
Owner

@rick-github commented on GitHub (Nov 22, 2024):

If you add full logs it will be easier to debug.

<!-- gh-comment-id:2493518598 --> @rick-github commented on GitHub (Nov 22, 2024): If you add full logs it will be easier to debug.
Author
Owner

@nicho2 commented on GitHub (Nov 22, 2024):

log below:
_ollama_logs system_prompt.txt

<!-- gh-comment-id:2493603683 --> @nicho2 commented on GitHub (Nov 22, 2024): log below: [_ollama_logs system_prompt.txt](https://github.com/user-attachments/files/17869814/_ollama_logs.system_prompt.txt)
Author
Owner

@nize commented on GitHub (Feb 18, 2025):

@nicho2, did you manage to use the system role for mistral-large? I was trying using the openai interface, but had to convert all messages from system to user.

<!-- gh-comment-id:2666288618 --> @nize commented on GitHub (Feb 18, 2025): @nicho2, did you manage to use the system role for mistral-large? I was trying using the openai interface, but had to convert all messages from system to user.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/ollama#30739