[GH-ISSUE #7796] prompt truncated #30743

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

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

What is the issue?

Hello,

Loss of Context When Using Tools in a Conversation with Ollama

Description

When using Ollama to verify a user's access rights, I noticed that the generated prompt after the initial processing is truncated. The issue manifests as the loss of initial context or information (e.g., details about available tools or system instructions). This prevents the model or agents from effectively utilizing the defined tools, reducing the relevance of the responses.

Despite sending a complete initial message with clear instructions and defined tools, the generated prompt no longer reflects this information and is reduced to the user's simple request.


Steps to Reproduce the Issue

  1. Send an initial complete message with:
    • A system role specifying the context.
    • A list of available tools in the tools field.
    • A clear user request.
  2. Observe that the system correctly handles the first message.
  3. Check the generated prompt for tools in the model's response.
  4. Observation: the generated prompt is incomplete and does not retain the initial context.

Expected Behavior

The generated prompt for tools should include:

  1. The initial instructions (defined in the system role).
  2. Details about the available tools.
  3. A reformulation of the user request within the defined context.

Observed Behavior

The generated prompt is simplified and only contains:

  • The user's direct request.
  • Missing initial contextual instructions and defined tools.

Examples of Messages and Prompts

Initial Message Sent:

   {
    "model": "mistral-large:123b",
    "messages": [
        {
            "role": "system",
            "content": " \nVous êtes un agent LLM chargé de vérifier les droits d'accès d'un utilisateur. Votre tâche consiste à utiliser les outils et fonctions disponibles pour répondre aux questions relatives aux droits d'accès. \nLa demande n'est pas forcément directe et peut être implicite. Le fait que l'utilisateur souhaite accéder à des données concernant un lieu ou un espace nécessite de vérifier ses accès.\nTu t'intéresses exclusivement à répondre aux droits d'accès de l'utilisateur, les autres besoins sont résolus par d'autres agents et tu ne dois pas les mentionner. \nVoici quelques exemples de questions que vous pourriez recevoir :\n\n<example>\n - \"L'utilisateur {user_id} a-t-il accès à l'espace workcafe ?\" \n - \"Quels sont les droits d'accès de l'utilisateur {user_id} sur le système Y ?\"\n - \"Peux-tu vérifier si l'utilisateur {user_id} peut modifier le fichier Z ?\" \n - \"je veux les statistiques concernant le workcafe\"\n</example>\n\nUn utilisateur est toujours identifié avec son user_id\nAssurez-vous de fournir des réponses précises et pertinentes en fonction des informations disponibles concernant les droits d'accès.\n\n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User>\n \nCurrent time: 2024-11-22 09:56:22.961947.\n \n\nSi aucun outil n'est adapté pour répondre à la demande de l'utilisateur, envoyez lui la liste des espaces auxquels il peut accéder.\nSi une erreur survient lors de l'utilisation d'un outil, en informez l'assistant principal en utilisant 'CompleteOrEscalate' avec les détails de l'erreur. Ne faites pas perdre de temps à l'utilisateur. N'inventez pas d'outils ou de fonctions non valides.",
            "images": []
        },
        {
            "role": "user",
            "content": "quels sont les espaces auxquels je peux accéder",
            "images": []
        },
        {
            "role": "assistant",
            "content": "",
            "images": [],
            "tool_calls": [
                {
                    "type": "function",
                    "id": "b5e02ab2-9b62-44b4-9dfa-bbe6669605f3",
                    "function": {
                        "name": "ToAccesRightAgent",
                        "arguments": {
                            "request": "quels sont les espaces auxquels l'utilisateur peut accéder",
                            "user_id": "3"
                        }
                    }
                }
            ]
        },
        {
            "role": "tool",
            "content": "\nL'assistant est désormais le Access Right Assistant. Réfléchissez à la conversation ci-dessus entre l'assistant hôte et l'utilisateur.\nL'intention de l'utilisateur n'est pas satisfaite. Utilisez les outils fournis pour aider l'utilisateur. N'oubliez pas que vous êtes Access Right Assistant.\nSi l'utilisateur change d'avis ou a besoin d'aide pour d'autres tâches, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nSi votre réponse n'est pas suffisante pour remplir les exigences de l'utilisateur, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nNe mentionnez pas qui vous êtes - agissez simplement en tant que proxy pour l'assistant. \n",
            "images": [],
            "tool_call_id": "b5e02ab2-9b62-44b4-9dfa-bbe6669605f3"
        }
    ],
    "tools": [
        {
            "type": "function",
            "function": {
                "name": "fetch_user_spacename_authorization",
                "description": "Retrieve the list of spaces the user can access.\n\n    Args:\n        user_id (str): The user ID.\n\n    Returns:\n        list[dict]: A list of space names.",
                "parameters": {
                    "properties": {
                        "user_id": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "user_id"
                    ],
                    "type": "object"
                }
            }
        },
        {
            "type": "function",
            "function": {
                "name": "CompleteOrEscalate",
                "description": "A tool to mark the current task as completed and/or to escalate control of the dialog to the main assistant,\nwho can re-route the dialog based on the user's needs.",
                "parameters": {
                    "example": {
                        "cancel": true,
                        "reason": "User changed their mind about the current task."
                    },
                    "example 2": {
                        "cancel": true,
                        "reason": "I have fully completed the task."
                    },
                    "example 3": {
                        "cancel": false,
                        "reason": "I need to search the user's emails or calendar for more information."
                    },
                    "properties": {
                        "cancel": {
                            "default": true,
                            "type": "boolean"
                        },
                        "reason": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "reason"
                    ],
                    "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
}

Observed Generated Prompt:

  [INST] quels sont les espaces auxquels je peux accéder[/INST]
  [TOOL_CALLS] [{"name": "ToAccesRightAgent", "arguments": {"request":"Quels sont les espaces auxquels l'utilisateur a le droit d'accéder ?","user_id":"3"}}]
  [/TOOL_RESULTS]
  {\"content\": L'assistant est désormais le Access Right Assistant. Réfléchissez à la conversation ci-dessus entre l'assistant hôte et l'utilisateur.\nL'intention de l'utilisateur n'est pas satisfaite. Utilisez les outils fournis pour aider l'utilisateur. N'oubliez pas que vous êtes Access Right Assistant.\nSi l'utilisateur change d'avis ou a besoin d'aide pour d'autres tâches, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nSi votre réponse n'est pas suffisante pour remplir les exigences de l'utilisateur, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nNe mentionnez pas qui vous êtes - agissez simplement en tant que proxy pour l'assistant.}
[/TOOL_RESULTS]\n

Identified Issue:

In the generated prompt, the system instructions defined in the system role and the description of available tools are omitted. This limits the tool's ability to provide relevant and coherent responses.

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/7796 ### What is the issue? Hello, # Loss of Context When Using Tools in a Conversation with Ollama ## Description When using Ollama to verify a user's access rights, I noticed that the **generated prompt** after the initial processing is truncated. The issue manifests as the loss of initial context or information (e.g., details about available tools or system instructions). This prevents the model or agents from effectively utilizing the defined tools, reducing the relevance of the responses. Despite sending a complete initial message with clear instructions and defined tools, the **generated prompt** no longer reflects this information and is reduced to the user's simple request. --- ## Steps to Reproduce the Issue 1. Send an initial complete message with: - A `system` role specifying the context. - A list of available tools in the `tools` field. - A clear user request. 2. Observe that the system correctly handles the first message. 3. Check the **generated prompt** for tools in the model's response. 4. Observation: the **generated prompt** is incomplete and does not retain the initial context. --- ## Expected Behavior The **generated prompt** for tools should include: 1. The initial instructions (defined in the `system` role). 2. Details about the available tools. 3. A reformulation of the user request within the defined context. --- ## Observed Behavior The **generated prompt** is simplified and only contains: - The user's direct request. - Missing initial contextual instructions and defined tools. --- ## Examples of Messages and Prompts ### Initial Message Sent: <details> { "model": "mistral-large:123b", "messages": [ { "role": "system", "content": " \nVous êtes un agent LLM chargé de vérifier les droits d'accès d'un utilisateur. Votre tâche consiste à utiliser les outils et fonctions disponibles pour répondre aux questions relatives aux droits d'accès. \nLa demande n'est pas forcément directe et peut être implicite. Le fait que l'utilisateur souhaite accéder à des données concernant un lieu ou un espace nécessite de vérifier ses accès.\nTu t'intéresses exclusivement à répondre aux droits d'accès de l'utilisateur, les autres besoins sont résolus par d'autres agents et tu ne dois pas les mentionner. \nVoici quelques exemples de questions que vous pourriez recevoir :\n\n<example>\n - \"L'utilisateur {user_id} a-t-il accès à l'espace workcafe ?\" \n - \"Quels sont les droits d'accès de l'utilisateur {user_id} sur le système Y ?\"\n - \"Peux-tu vérifier si l'utilisateur {user_id} peut modifier le fichier Z ?\" \n - \"je veux les statistiques concernant le workcafe\"\n</example>\n\nUn utilisateur est toujours identifié avec son user_id\nAssurez-vous de fournir des réponses précises et pertinentes en fonction des informations disponibles concernant les droits d'accès.\n\n\n\nCurrent user:\n<User>\n{'user_id': '3'}\n</User>\n \nCurrent time: 2024-11-22 09:56:22.961947.\n \n\nSi aucun outil n'est adapté pour répondre à la demande de l'utilisateur, envoyez lui la liste des espaces auxquels il peut accéder.\nSi une erreur survient lors de l'utilisation d'un outil, en informez l'assistant principal en utilisant 'CompleteOrEscalate' avec les détails de l'erreur. Ne faites pas perdre de temps à l'utilisateur. N'inventez pas d'outils ou de fonctions non valides.", "images": [] }, { "role": "user", "content": "quels sont les espaces auxquels je peux accéder", "images": [] }, { "role": "assistant", "content": "", "images": [], "tool_calls": [ { "type": "function", "id": "b5e02ab2-9b62-44b4-9dfa-bbe6669605f3", "function": { "name": "ToAccesRightAgent", "arguments": { "request": "quels sont les espaces auxquels l'utilisateur peut accéder", "user_id": "3" } } } ] }, { "role": "tool", "content": "\nL'assistant est désormais le Access Right Assistant. Réfléchissez à la conversation ci-dessus entre l'assistant hôte et l'utilisateur.\nL'intention de l'utilisateur n'est pas satisfaite. Utilisez les outils fournis pour aider l'utilisateur. N'oubliez pas que vous êtes Access Right Assistant.\nSi l'utilisateur change d'avis ou a besoin d'aide pour d'autres tâches, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nSi votre réponse n'est pas suffisante pour remplir les exigences de l'utilisateur, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nNe mentionnez pas qui vous êtes - agissez simplement en tant que proxy pour l'assistant. \n", "images": [], "tool_call_id": "b5e02ab2-9b62-44b4-9dfa-bbe6669605f3" } ], "tools": [ { "type": "function", "function": { "name": "fetch_user_spacename_authorization", "description": "Retrieve the list of spaces the user can access.\n\n Args:\n user_id (str): The user ID.\n\n Returns:\n list[dict]: A list of space names.", "parameters": { "properties": { "user_id": { "type": "string" } }, "required": [ "user_id" ], "type": "object" } } }, { "type": "function", "function": { "name": "CompleteOrEscalate", "description": "A tool to mark the current task as completed and/or to escalate control of the dialog to the main assistant,\nwho can re-route the dialog based on the user's needs.", "parameters": { "example": { "cancel": true, "reason": "User changed their mind about the current task." }, "example 2": { "cancel": true, "reason": "I have fully completed the task." }, "example 3": { "cancel": false, "reason": "I need to search the user's emails or calendar for more information." }, "properties": { "cancel": { "default": true, "type": "boolean" }, "reason": { "type": "string" } }, "required": [ "reason" ], "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> ### Observed Generated Prompt: [INST] quels sont les espaces auxquels je peux accéder[/INST] [TOOL_CALLS] [{"name": "ToAccesRightAgent", "arguments": {"request":"Quels sont les espaces auxquels l'utilisateur a le droit d'accéder ?","user_id":"3"}}] [/TOOL_RESULTS] {\"content\": L'assistant est désormais le Access Right Assistant. Réfléchissez à la conversation ci-dessus entre l'assistant hôte et l'utilisateur.\nL'intention de l'utilisateur n'est pas satisfaite. Utilisez les outils fournis pour aider l'utilisateur. N'oubliez pas que vous êtes Access Right Assistant.\nSi l'utilisateur change d'avis ou a besoin d'aide pour d'autres tâches, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nSi votre réponse n'est pas suffisante pour remplir les exigences de l'utilisateur, appelez la fonction CompleteOrEscalate pour laisser l'assistant hôte principal prendre le contrôle.\nNe mentionnez pas qui vous êtes - agissez simplement en tant que proxy pour l'assistant.} [/TOOL_RESULTS]\n ### Identified Issue: In the generated prompt, the system instructions defined in the system role and the description of available tools are omitted. This limits the tool's ability to provide relevant and coherent responses. ### OS Linux ### GPU Nvidia ### CPU Intel ### Ollama version 0.4.3
GiteaMirror added the bug label 2026-04-22 10:38:43 -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:2493518845 --> @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
log_ollama.txt

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

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

The logs don't seem to contain the Observed Generated Prompt, specifically the phrase quels sont les espaces auxquels je peux accéder is not found. Do you have logs for the time that the problem presented itself?

<!-- gh-comment-id:2493644298 --> @rick-github commented on GitHub (Nov 22, 2024): The logs don't seem to contain the `Observed Generated Prompt`, specifically the phrase `quels sont les espaces auxquels je peux accéder` is not found. Do you have logs for the time that the problem presented itself?
Author
Owner

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

sorry!!

log_ollama_trucated_prompt.txt

<!-- gh-comment-id:2493670299 --> @nicho2 commented on GitHub (Nov 22, 2024): sorry!! [log_ollama_trucated_prompt.txt](https://github.com/user-attachments/files/17870201/log_ollama_trucated_prompt.txt)
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/ollama#30743