[GH-ISSUE #7778] tool_choice parameter #67025

Closed
opened 2026-05-04 09:16:09 -05:00 by GiteaMirror · 4 comments
Owner

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

What is the issue?

Hello,

I use the model Mixtral 8*22B Q4_0.

I want to use function calling but the model don't send very good the tool to call (2 times / 10 (in tool_call tag))

so i add the parameter : "tool_choice": "required",

but it's seems have no effect .

Is this capacity is take into account in ollama ?
what doing else?

example frame sending :

      {"messages": [{"content": "\nTu es un assistant d\u00e9di\u00e9 \u00e0 supporter un utilisateur dans sa compr\u00e9hension des donn\u00e9es issues des espaces d'un b\u00e2timent. \nVotre r\u00f4le principal est de r\u00e9pondre pr\u00e9cis\u00e9ment aux demandes de l'utilisateur en coordonnant des agents sp\u00e9cialis\u00e9s, chacun ayant des comp\u00e9tences sp\u00e9cifiques pour r\u00e9cup\u00e9rer et analyser les donn\u00e9es.\n\n\u00c9tapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compl\u00e9ter par toi-m\u00eame. Une demande peut te paraitre incompl\u00e8te mais seul l'agent concern\u00e9 est en capacit\u00e9 de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\".  l'agent sp\u00e9cialis\u00e9 charg\u00e9 de r\u00e9cup\u00e9rer les donn\u00e9es sait que statistiques correspond au besoin d'avoir les statistiques de toutes les m\u00e9triques de l'espace concern\u00e9. \n</exemple>\n 2. V\u00e9rifier les droits d'acc\u00e8s de l'utilisateur \u00e0 l'espace concern\u00e9.\n 3. Planifier la meilleure d\u00e9marche en d\u00e9terminant quels agents sp\u00e9cialis\u00e9s solliciter.\n 4. D\u00e9l\u00e9guer les t\u00e2ches aux agents appropri\u00e9s via les appels de fonction correspondants.\n 5. Rassembler les r\u00e9ponses des agents et fournir une r\u00e9ponse coh\u00e9rente \u00e0 l'utilisateur.\n\nTu d\u00e9l\u00e8gues la t\u00e2che \u00e0 l'assistant sp\u00e9cialis\u00e9 appropri\u00e9 en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants sp\u00e9cialis\u00e9s sont autoris\u00e9s \u00e0 le faire pour l'utilisateur. L'utilisateur n'est pas au courant des diff\u00e9rents assistants sp\u00e9cialis\u00e9s, ne les mentionnez donc pas;\nD\u00e9l\u00e9guez simplement discr\u00e8tement via des appels de fonction. Assurez-vous de respecter la confidentialit\u00e9 des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des donn\u00e9es.\nApr\u00e8s avoir fourni une r\u00e9ponse, demandez \u00e0 l'utilisateur s'il a besoin d'informations suppl\u00e9mentaires ou d'assistance suppl\u00e9mentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498.\n", "role": "system"}, {"content": "quelles sont les statistiques au workcafe ce matin", "role": "user"}], "model": "mixtral:8x22b", "n": 1, "stream": false, "temperature": 0.3, "tool_choice": "required", "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 \u00e0 un agent sp\u00e9cialis\u00e9 dans la gestion des droits d'acc\u00e8s.", "parameters": {"properties": {"request": {"description": "Toutes les questions concernant les droits d'acc\u00e8s de l'utilisateur aux diff\u00e9rents espaces du b\u00e2timent.", "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 \u00e0 un agent sp\u00e9cialis\u00e9 dans la r\u00e9cup\u00e9ration des donn\u00e9es.", "parameters": {"properties": {"request": {"description": "Toutes les questions n\u00e9cessitant la r\u00e9cup\u00e9ration des donn\u00e9es d'espaces du b\u00e2timent.", "type": "string"}}, "required": ["request"], "type": "object"}}}, {"type": "function", "function": {"name": "ToKpiPoliciesAgent", "description": "Transfert du travail \u00e0 un agent sp\u00e9cialis\u00e9 dans la r\u00e9cup\u00e9ration de r\u00e8gles permettant l'interpr\u00e9tation des donn\u00e9es.", "parameters": {"properties": {"request": {"description": "Toutes les questions li\u00e9es \u00e0 l'interpr\u00e9tation des donn\u00e9es d'espaces du b\u00e2timent.", "type": "string"}}, "required": ["request"], "type": "object"}}}]}

log ollama:

      time=2024-11-21T13:09:00.410Z level=DEBUG source=routes.go:1457 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. \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\nÉtapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compléter par toi-même. Une demande peut te paraitre incomplète mais seul l'agent concerné est en capacité de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\".  l'agent spécialisé chargé de récupérer les données sait que statistiques correspond au besoin d'avoir les statistiques de toutes les métriques de l'espace concerné. \n</exemple>\n 2. Vérifier les droits d'accès de l'utilisateur à l'espace concerné.\n 3. Planifier la meilleure démarche en déterminant quels agents spécialisés solliciter.\n 4. Déléguer les tâches aux agents appropriés via les appels de fonction correspondants.\n 5. Rassembler les réponses des agents et fournir une réponse cohérente à l'utilisateur.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur. L'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas;\nDéléguez simplement discrètement via des appels de fonction. Assurez-vous de respecter la confidentialité des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des données.\nAprès avoir fourni une réponse, demandez à l'utilisateur s'il a besoin d'informations supplémentaires ou d'assistance supplémentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498.\n\nquelles sont les statistiques au workcafe ce matin[/INST]"

answer:

{"id":"chatcmpl-676","object":"chat.completion","created":1732194556,"model":"mixtral:8x22b","system_fingerprint":"fp_ollama","choices":[{"index":0,"message":{"role":"assistant","content":" Compr..hension de la demande : L'utilisateur souhaite conna..tre les statistiques du Workcaf.. pour le matin en cours. Il s'agit probablement des m..triques telles que l'occupation, la temp..rature, etc.\n\nV..rification des droits d'acc..s : Pour v..rifier si l'utilisateur a les droits n..cessaires pour acc..der aux donn..es du Workcaf.., j'appelle ToAccesRightAgent avec les informations suivantes :\n```json\n{\n  \"request\": \"V..rification des droits d'acc..s de l'utilisateur au Workcaf..\",\n  \"username\": \"\u003cUser_Name\u003e\",\n  \"user_id\": \"3\"\n}\n```\nPlanifier la meilleure d..marche : Pour r..cup..rer les statistiques du Workcaf.., je dois solliciter l'agent sp..cialis.. dans la r..cup..ration des donn..es. Je vais donc appeler ToDatasFetchingAgent avec la demande suivante :\n```json\n{\n  \"request\": \"R..cup..rer les statistiques du Workcaf.. pour le matin en cours\"\n}\n```\nApr..s avoir re..u les donn..es, je devrai ..galement solliciter l'agent sp..cialis.. dans la r..cup..ration de r..gles permettant d'interpr..ter ces donn..es. Je vais donc appeler ToKpiPoliciesAgent avec la demande suivante :\n```json\n{\n  \"request\": \"R..cup..rer les r..gles pour interpr..ter les statistiques du Workcaf..\"\n}\n```\nUne fois que j'aurai re..u toutes ces informations, je fournirai une r..ponse coh..rente .. l'utilisateur."},"finish_reason":"stop"}],"usage":{"prompt_tokens":1087,"completion_tokens":421,"total_tokens":1508}}

OS

Linux

GPU

Nvidia

CPU

Intel

Ollama version

0.4.2

Originally created by @nicho2 on GitHub (Nov 21, 2024). Original GitHub issue: https://github.com/ollama/ollama/issues/7778 ### What is the issue? Hello, I use the model **Mixtral 8*22B Q4_0.** I want to use **function calling** but the model don't send very good the tool to call (2 times / 10 (in tool_call tag)) so i add the parameter : "tool_choice": "required", but it's seems have no effect . Is this capacity is take into account in ollama ? what doing else? example frame sending : {"messages": [{"content": "\nTu es un assistant d\u00e9di\u00e9 \u00e0 supporter un utilisateur dans sa compr\u00e9hension des donn\u00e9es issues des espaces d'un b\u00e2timent. \nVotre r\u00f4le principal est de r\u00e9pondre pr\u00e9cis\u00e9ment aux demandes de l'utilisateur en coordonnant des agents sp\u00e9cialis\u00e9s, chacun ayant des comp\u00e9tences sp\u00e9cifiques pour r\u00e9cup\u00e9rer et analyser les donn\u00e9es.\n\n\u00c9tapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compl\u00e9ter par toi-m\u00eame. Une demande peut te paraitre incompl\u00e8te mais seul l'agent concern\u00e9 est en capacit\u00e9 de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\". l'agent sp\u00e9cialis\u00e9 charg\u00e9 de r\u00e9cup\u00e9rer les donn\u00e9es sait que statistiques correspond au besoin d'avoir les statistiques de toutes les m\u00e9triques de l'espace concern\u00e9. \n</exemple>\n 2. V\u00e9rifier les droits d'acc\u00e8s de l'utilisateur \u00e0 l'espace concern\u00e9.\n 3. Planifier la meilleure d\u00e9marche en d\u00e9terminant quels agents sp\u00e9cialis\u00e9s solliciter.\n 4. D\u00e9l\u00e9guer les t\u00e2ches aux agents appropri\u00e9s via les appels de fonction correspondants.\n 5. Rassembler les r\u00e9ponses des agents et fournir une r\u00e9ponse coh\u00e9rente \u00e0 l'utilisateur.\n\nTu d\u00e9l\u00e8gues la t\u00e2che \u00e0 l'assistant sp\u00e9cialis\u00e9 appropri\u00e9 en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants sp\u00e9cialis\u00e9s sont autoris\u00e9s \u00e0 le faire pour l'utilisateur. L'utilisateur n'est pas au courant des diff\u00e9rents assistants sp\u00e9cialis\u00e9s, ne les mentionnez donc pas;\nD\u00e9l\u00e9guez simplement discr\u00e8tement via des appels de fonction. Assurez-vous de respecter la confidentialit\u00e9 des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des donn\u00e9es.\nApr\u00e8s avoir fourni une r\u00e9ponse, demandez \u00e0 l'utilisateur s'il a besoin d'informations suppl\u00e9mentaires ou d'assistance suppl\u00e9mentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498.\n", "role": "system"}, {"content": "quelles sont les statistiques au workcafe ce matin", "role": "user"}], "model": "mixtral:8x22b", "n": 1, "stream": false, "temperature": 0.3, "tool_choice": "required", "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 \u00e0 un agent sp\u00e9cialis\u00e9 dans la gestion des droits d'acc\u00e8s.", "parameters": {"properties": {"request": {"description": "Toutes les questions concernant les droits d'acc\u00e8s de l'utilisateur aux diff\u00e9rents espaces du b\u00e2timent.", "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 \u00e0 un agent sp\u00e9cialis\u00e9 dans la r\u00e9cup\u00e9ration des donn\u00e9es.", "parameters": {"properties": {"request": {"description": "Toutes les questions n\u00e9cessitant la r\u00e9cup\u00e9ration des donn\u00e9es d'espaces du b\u00e2timent.", "type": "string"}}, "required": ["request"], "type": "object"}}}, {"type": "function", "function": {"name": "ToKpiPoliciesAgent", "description": "Transfert du travail \u00e0 un agent sp\u00e9cialis\u00e9 dans la r\u00e9cup\u00e9ration de r\u00e8gles permettant l'interpr\u00e9tation des donn\u00e9es.", "parameters": {"properties": {"request": {"description": "Toutes les questions li\u00e9es \u00e0 l'interpr\u00e9tation des donn\u00e9es d'espaces du b\u00e2timent.", "type": "string"}}, "required": ["request"], "type": "object"}}}]} log ollama: time=2024-11-21T13:09:00.410Z level=DEBUG source=routes.go:1457 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. \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\nÉtapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compléter par toi-même. Une demande peut te paraitre incomplète mais seul l'agent concerné est en capacité de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\". l'agent spécialisé chargé de récupérer les données sait que statistiques correspond au besoin d'avoir les statistiques de toutes les métriques de l'espace concerné. \n</exemple>\n 2. Vérifier les droits d'accès de l'utilisateur à l'espace concerné.\n 3. Planifier la meilleure démarche en déterminant quels agents spécialisés solliciter.\n 4. Déléguer les tâches aux agents appropriés via les appels de fonction correspondants.\n 5. Rassembler les réponses des agents et fournir une réponse cohérente à l'utilisateur.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur. L'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas;\nDéléguez simplement discrètement via des appels de fonction. Assurez-vous de respecter la confidentialité des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des données.\nAprès avoir fourni une réponse, demandez à l'utilisateur s'il a besoin d'informations supplémentaires ou d'assistance supplémentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498.\n\nquelles sont les statistiques au workcafe ce matin[/INST]" answer: {"id":"chatcmpl-676","object":"chat.completion","created":1732194556,"model":"mixtral:8x22b","system_fingerprint":"fp_ollama","choices":[{"index":0,"message":{"role":"assistant","content":" Compr..hension de la demande : L'utilisateur souhaite conna..tre les statistiques du Workcaf.. pour le matin en cours. Il s'agit probablement des m..triques telles que l'occupation, la temp..rature, etc.\n\nV..rification des droits d'acc..s : Pour v..rifier si l'utilisateur a les droits n..cessaires pour acc..der aux donn..es du Workcaf.., j'appelle ToAccesRightAgent avec les informations suivantes :\n```json\n{\n \"request\": \"V..rification des droits d'acc..s de l'utilisateur au Workcaf..\",\n \"username\": \"\u003cUser_Name\u003e\",\n \"user_id\": \"3\"\n}\n```\nPlanifier la meilleure d..marche : Pour r..cup..rer les statistiques du Workcaf.., je dois solliciter l'agent sp..cialis.. dans la r..cup..ration des donn..es. Je vais donc appeler ToDatasFetchingAgent avec la demande suivante :\n```json\n{\n \"request\": \"R..cup..rer les statistiques du Workcaf.. pour le matin en cours\"\n}\n```\nApr..s avoir re..u les donn..es, je devrai ..galement solliciter l'agent sp..cialis.. dans la r..cup..ration de r..gles permettant d'interpr..ter ces donn..es. Je vais donc appeler ToKpiPoliciesAgent avec la demande suivante :\n```json\n{\n \"request\": \"R..cup..rer les r..gles pour interpr..ter les statistiques du Workcaf..\"\n}\n```\nUne fois que j'aurai re..u toutes ces informations, je fournirai une r..ponse coh..rente .. l'utilisateur."},"finish_reason":"stop"}],"usage":{"prompt_tokens":1087,"completion_tokens":421,"total_tokens":1508}} ### OS Linux ### GPU Nvidia ### CPU Intel ### Ollama version 0.4.2
GiteaMirror added the bug label 2026-05-04 09:16:09 -05:00
Author
Owner

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

The system message is not being passed into the prompt. If you add full logs it will be easier to debug, but my guess is that your context length is too small and the system message is being truncated.

<!-- gh-comment-id:2491312963 --> @rick-github commented on GitHub (Nov 21, 2024): The system message is not being passed into the prompt. If you add full logs it will be easier to debug, but my guess is that your context length is too small and the system message is being truncated.
Author
Owner

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

hello,

the system is present:

    "messages": [
	    {
		    "content": "\nTu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \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\nÉtapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compléter par toi-même. Une demande peut te paraitre incomplète mais seul l'agent concerné est en capacité de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\".  l'agent spécialisé chargé de récupérer les données sait que statistiques correspond au besoin d'avoir les statistiques de toutes les métriques de l'espace concerné. \n</exemple>\n 2. Vérifier les droits d'accès de l'utilisateur à l'espace concerné.\n 3. Planifier la meilleure démarche en déterminant quels agents spécialisés solliciter.\n 4. Déléguer les tâches aux agents appropriés via les appels de fonction correspondants.\n 5. Rassembler les réponses des agents et fournir une réponse cohérente à l'utilisateur.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur. L'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas;\nDéléguez simplement discrètement via des appels de fonction. Assurez-vous de respecter la confidentialité des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des données.\nAprès avoir fourni une réponse, demandez à l'utilisateur s'il a besoin d'informations supplémentaires ou d'assistance supplémentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498.\n",
		    "role": "system"
	    },
	    {
		    "content": "quelles sont les statistiques au workcafe ce matin",
		    "role": "user"
	    }
    ],
    "model": "mixtral:8x22b",
    "n": 1,
    "stream": false,
    "temperature": 0.3,
    "tool_choice": "required",
    "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"
			    }
		    }
	    }
    ]
}

In the prompt:

      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]

SYSTEM -->

  [INST] Tu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \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\nÉtapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compléter par toi-même. Une demande peut te paraitre incomplète mais seul l'agent concerné est en capacité de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\".  l'agent spécialisé chargé de récupérer les données sait que statistiques correspond au besoin d'avoir les statistiques de toutes les métriques de l'espace concerné. \n</exemple>\n 2. Vérifier les droits d'accès de l'utilisateur à l'espace concerné.\n 3. Planifier la meilleure démarche en déterminant quels agents spécialisés solliciter.\n 4. Déléguer les tâches aux agents appropriés via les appels de fonction correspondants.\n 5. Rassembler les réponses des agents et fournir une réponse cohérente à l'utilisateur.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur. L'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas;\nDéléguez simplement discrètement via des appels de fonction. Assurez-vous de respecter la confidentialité des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des données.\nAprès avoir fourni une réponse, demandez à l'utilisateur s'il a besoin d'informations supplémentaires ou d'assistance supplémentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498.

USER -->

  \n\nquelles sont les statistiques au workcafe ce matin
          [/INST]"
<!-- gh-comment-id:2493103464 --> @nicho2 commented on GitHub (Nov 22, 2024): hello, the system is present: "messages": [ { "content": "\nTu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \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\nÉtapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compléter par toi-même. Une demande peut te paraitre incomplète mais seul l'agent concerné est en capacité de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\". l'agent spécialisé chargé de récupérer les données sait que statistiques correspond au besoin d'avoir les statistiques de toutes les métriques de l'espace concerné. \n</exemple>\n 2. Vérifier les droits d'accès de l'utilisateur à l'espace concerné.\n 3. Planifier la meilleure démarche en déterminant quels agents spécialisés solliciter.\n 4. Déléguer les tâches aux agents appropriés via les appels de fonction correspondants.\n 5. Rassembler les réponses des agents et fournir une réponse cohérente à l'utilisateur.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur. L'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas;\nDéléguez simplement discrètement via des appels de fonction. Assurez-vous de respecter la confidentialité des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des données.\nAprès avoir fourni une réponse, demandez à l'utilisateur s'il a besoin d'informations supplémentaires ou d'assistance supplémentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498.\n", "role": "system" }, { "content": "quelles sont les statistiques au workcafe ce matin", "role": "user" } ], "model": "mixtral:8x22b", "n": 1, "stream": false, "temperature": 0.3, "tool_choice": "required", "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" } } } ] } ## In the prompt: 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] **SYSTEM** --> [INST] Tu es un assistant dédié à supporter un utilisateur dans sa compréhension des données issues des espaces d'un bâtiment. \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\nÉtapes pour traiter la demande de l'utilisateur :\n 1. Comprendre la demande de l'utilisateur, identifier les informations manquantes et les compléter par toi-même. Une demande peut te paraitre incomplète mais seul l'agent concerné est en capacité de l'exprimer.\n<example>\n- l'utilisateur demande: \"quelles sont les statistiques au workcafe ce matin?\". l'agent spécialisé chargé de récupérer les données sait que statistiques correspond au besoin d'avoir les statistiques de toutes les métriques de l'espace concerné. \n</exemple>\n 2. Vérifier les droits d'accès de l'utilisateur à l'espace concerné.\n 3. Planifier la meilleure démarche en déterminant quels agents spécialisés solliciter.\n 4. Déléguer les tâches aux agents appropriés via les appels de fonction correspondants.\n 5. Rassembler les réponses des agents et fournir une réponse cohérente à l'utilisateur.\n\nTu délègues la tâche à l'assistant spécialisé approprié en invoquant l'outil correspondant parmi ceux disponibles.\nSeuls les assistants spécialisés sont autorisés à le faire pour l'utilisateur. L'utilisateur n'est pas au courant des différents assistants spécialisés, ne les mentionnez donc pas;\nDéléguez simplement discrètement via des appels de fonction. Assurez-vous de respecter la confidentialité des informations de l'utilisateur. Ne divulguez pas d'informations sensibles et conformez-vous aux politiques de protection des données.\nAprès avoir fourni une réponse, demandez à l'utilisateur s'il a besoin d'informations supplémentaires ou d'assistance supplémentaire. \n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User> \nCurrent time: 2024-11-21 14:08:44.800498. **USER** --> \n\nquelles sont les statistiques au workcafe ce matin [/INST]"
Author
Owner

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

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

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

@whisper-bye commented on GitHub (Dec 11, 2024):

According to the document, tool_choice is not yet supported.

https://github.com/ollama/ollama/blob/main/docs/openai.md

<!-- gh-comment-id:2535231727 --> @whisper-bye commented on GitHub (Dec 11, 2024): According to the document, tool_choice is not yet supported. https://github.com/ollama/ollama/blob/main/docs/openai.md
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/ollama#67025