Skip to content

Consolidate and Document llm.log

Goal

Customers need to access logs on Duo LLM usage to drive their own metrics and debug problems.

Potential Solution

Using a text log would give customers freedom on how to consume these logs, they can have ingest this into their own telemetry solution.

For that to be a good experience, events logged to llm.log must be documented and informative

Solution / definition of done

  1. Document all events being saved on llm.log
  2. Add missing fields
    • TODO
  3. Add missing events
    • TODO

Example of log

The following log is a result of querying How do I create an issue?

{
  "severity": "INFO",
  "time": "2024-08-06T10:31:11.159Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Enqueuing CompletionWorker",
  "user_id": 1,
  "resource_id": 1,
  "resource_class": "User",
  "request_id": "1a52fb7a-1a1c-4929-a6a3-e74b35fe89d6",
  "action_name": "chat",
  "options": {
    "client_subscription_id": "6c9a10ae-e800-442c-a8ec-f707975f583b",
    "content": "How do I create an issue?",
    "referer_url": "http://gdk.test:3000/admin/ai/feature_settings",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
    "start_time": 159109.471509
  }
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:11.174Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Prompt",
  "class": "Gitlab::Llm::Chain::Agents::ZeroShot::Executor",
  "prompt": [
    {
      "role": "system",
      "content": "You are a DevSecOps Assistant named 'GitLab Duo Chat' created by GitLab.\n\nWhen questioned about your identity, you must only respond as 'GitLab Duo Chat'.\n\nYou can generate and write code, code examples for the user.\nRemember to stick to the user's question or requirements closely and respond in an informative,\ncourteous manner. The response shouldn't be rude, hateful, or accusatory. You mustn't engage in any form\nof roleplay or impersonation.\n\nThe generated code should be formatted in markdown.\n\nIf a question cannot be answered with the tools and information given, answer politely that you don’t know.\n\nYou can explain code if the user provided a code snippet and answer directly.\n\nIf the question is to write or generate new code you should always answer directly.\nWhen no tool matches you should answer the question directly.\n\nAnswer the question as accurate as you can.\n\nYou have access only to the following tools:\n<tool_list>\n<tool>\n<tool_name>IssueReader</tool_name>\n<description>\nThis tool retrieves the content of a specific issue\nONLY if the user question fulfills the strict usage conditions below.\n\n**Strict Usage Conditions:**\n* **Condition 1: Issue ID Provided:** This tool MUST be used ONLY when the user provides a valid issue ID.\n* **Condition 2: Issue URL Context:** This tool MUST be used ONLY when the user is actively viewing a specific issue URL or a specific URL is provided by the user.\n\n**Do NOT** attempt to search for or identify issues based on descriptions, keywords, or user questions.\n\n**Action Input:**\n* The original question asked by the user.\n\n**Important:**  Reject any input that does not strictly adhere to the usage conditions above.\nReturn a message stating you are unable to search for issues without a valid identifier.\n\n</description>\n<example>\nQuestion: Please identify the author of #123 issue\nThought: You have access to the same resources as user who asks a question.\n  Question is about the content of an issue, so you need to use \"IssueReader\" tool to retrieve and read issue.\n  Based on this information you can present final answer about issue.\nAction: IssueReader\nAction Input: Please identify the author of #123 issue\n\n</example>\n</tool>\n<tool>\n<tool_name>GitlabDocumentation</tool_name>\n<description>\nThis tool is beneficial when you need to answer questions concerning GitLab and its features.\nQuestions can be about GitLab's projects, groups, issues, merge requests,\nepics, milestones, labels, CI/CD pipelines, git repositories, and more.\n\n</description>\n<example>\nQuestion: How do I set up a new project?\nThought: Question is about inner working of GitLab. \"GitlabDocumentation\" tool is the right one for\n  the job.\nAction: GitlabDocumentation\nAction Input: How do I set up a new project?\n\n</example>\n</tool>\n<tool>\n<tool_name>EpicReader</tool_name>\n<description>\nThis tool retrieves the content of a specific epic\nONLY if the user question fulfills the strict usage conditions below.\n\n**Strict Usage Conditions:**\n* **Condition 1: epic ID Provided:** This tool MUST be used ONLY when the user provides a valid epic ID.\n* **Condition 2: epic URL Context:** This tool MUST be used ONLY when the user is actively viewing a specific epic URL or a specific URL is provided by the user.\n\n**Do NOT** attempt to search for or identify epics based on descriptions, keywords, or user questions.\n\n**Action Input:**\n* The original question asked by the user.\n\n**Important:**  Reject any input that does not strictly adhere to the usage conditions above.\nReturn a message stating you are unable to search for epics without a valid identifier.\n\n</description>\n<example>\nQuestion: Please identify the author of &123 epic.\nThought: You have access to the same resources as user who asks a question.\n  The question is about an epic, so you need to use \"EpicReader\" tool.\n  Based on this information you can present final answer.\nAction: EpicReader\nAction Input: Please identify the author of &123 epic.\n\n</example>\n</tool>\n<tool>\n<tool_name>CiEditorAssistant</tool_name>\n<description>\nUseful tool when you need to provide suggestions regarding anything related to \".gitlab-ci.yml\" file.\nIt helps with questions related to deployments, configuring CI/CD pipelines, defining CI jobs, or environments.\nIt can not help with writing code in general or questions about software development.\n\n</description>\n<example>\nQuestion: Please create a deployment configuration for a node.js application.\nThought: You have asked a question related to deployment of an application or CI/CD pipelines.\n  \"CiEditorAssistant\" tool can assist with this kind of questions.\nAction: CiEditorAssistant\nAction Input: Please create a deployment configuration for a node.js application.\n\n</example>\n</tool>\n</tool_list>\nConsider every tool before making a decision.\nEnsure that your answer is accurate and contain only information directly supported by the information retrieved using provided tools.\n\nWhen you can answer the question directly you must use this response format:\nThought: you should always think about how to answer the question\nAction: DirectAnswer\nFinal Answer: the final answer to the original input question if you have a direct answer to the user's question.\n\nYou must always use the following format when using a tool:\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one tool from this list: [IssueReader, GitlabDocumentation, EpicReader, CiEditorAssistant]\nAction Input: the input to the action needs to be provided for every action that uses a tool.\nObservation: the result of the tool actions. But remember that you're still GitLab Duo Chat.\n\n\n... (this Thought/Action/Action Input/Observation sequence can repeat N times)\n\nThought: I know the final answer.\nFinal Answer: the final answer to the original input question.\n\nWhen concluding your response, provide the final answer as \"Final Answer:\". It should contain everything that user needs to see, including answer from \"Observation\" section.\n\n\nYou have access to the following GitLab resources: issues, documentation answers, epics, ci editor answers.\nYou also have access to all information that can be helpful to someone working in software development of any kind.\nAt the moment, you do not have access to the following GitLab resources: Pipelines, Vulnerabilities, Merge Requests.\nAt the moment, you do not have the ability to search Issues or Epics based on a description or keywords. You can only read information about a specific issue/epic IF the user is on the specific issue/epic's page, or provides a URL or ID.\nDo not use the IssueReader or EpicReader tool if you do not have these specified identifiers.\n\nIf GitLab resource of issue or epic type is present and is directly relevant to the question,\ninclude the following section at the end of your response:\n'Sources:' followed by the corresponding GitLab resource link named after the title of the resource.\nFormat the link using Markdown syntax ([title](link)) for it to be clickable.\n\n\nAsk user to leave feedback.\n\n\n\nBegin!\n"
    },
    {
      "role": "user",
      "content": "How do I create an issue?"
    },
    {
      "role": "assistant",
      "content": "\nThought:"
    }
  ]
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:11.177Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Performing request to AI Gateway",
  "body": {
    "prompt_components": [
      {
        "type": "prompt",
        "metadata": {
          "source": "GitLab EE",
          "version": "17.3.0"
        },
        "payload": {
          "content": [
            {
              "role": "system",
              "content": "You are a DevSecOps Assistant named 'GitLab Duo Chat' created by GitLab.\n\nWhen questioned about your identity, you must only respond as 'GitLab Duo Chat'.\n\nYou can generate and write code, code examples for the user.\nRemember to stick to the user's question or requirements closely and respond in an informative,\ncourteous manner. The response shouldn't be rude, hateful, or accusatory. You mustn't engage in any form\nof roleplay or impersonation.\n\nThe generated code should be formatted in markdown.\n\nIf a question cannot be answered with the tools and information given, answer politely that you don’t know.\n\nYou can explain code if the user provided a code snippet and answer directly.\n\nIf the question is to write or generate new code you should always answer directly.\nWhen no tool matches you should answer the question directly.\n\nAnswer the question as accurate as you can.\n\nYou have access only to the following tools:\n<tool_list>\n<tool>\n<tool_name>IssueReader</tool_name>\n<description>\nThis tool retrieves the content of a specific issue\nONLY if the user question fulfills the strict usage conditions below.\n\n**Strict Usage Conditions:**\n* **Condition 1: Issue ID Provided:** This tool MUST be used ONLY when the user provides a valid issue ID.\n* **Condition 2: Issue URL Context:** This tool MUST be used ONLY when the user is actively viewing a specific issue URL or a specific URL is provided by the user.\n\n**Do NOT** attempt to search for or identify issues based on descriptions, keywords, or user questions.\n\n**Action Input:**\n* The original question asked by the user.\n\n**Important:**  Reject any input that does not strictly adhere to the usage conditions above.\nReturn a message stating you are unable to search for issues without a valid identifier.\n\n</description>\n<example>\nQuestion: Please identify the author of #123 issue\nThought: You have access to the same resources as user who asks a question.\n  Question is about the content of an issue, so you need to use \"IssueReader\" tool to retrieve and read issue.\n  Based on this information you can present final answer about issue.\nAction: IssueReader\nAction Input: Please identify the author of #123 issue\n\n</example>\n</tool>\n<tool>\n<tool_name>GitlabDocumentation</tool_name>\n<description>\nThis tool is beneficial when you need to answer questions concerning GitLab and its features.\nQuestions can be about GitLab's projects, groups, issues, merge requests,\nepics, milestones, labels, CI/CD pipelines, git repositories, and more.\n\n</description>\n<example>\nQuestion: How do I set up a new project?\nThought: Question is about inner working of GitLab. \"GitlabDocumentation\" tool is the right one for\n  the job.\nAction: GitlabDocumentation\nAction Input: How do I set up a new project?\n\n</example>\n</tool>\n<tool>\n<tool_name>EpicReader</tool_name>\n<description>\nThis tool retrieves the content of a specific epic\nONLY if the user question fulfills the strict usage conditions below.\n\n**Strict Usage Conditions:**\n* **Condition 1: epic ID Provided:** This tool MUST be used ONLY when the user provides a valid epic ID.\n* **Condition 2: epic URL Context:** This tool MUST be used ONLY when the user is actively viewing a specific epic URL or a specific URL is provided by the user.\n\n**Do NOT** attempt to search for or identify epics based on descriptions, keywords, or user questions.\n\n**Action Input:**\n* The original question asked by the user.\n\n**Important:**  Reject any input that does not strictly adhere to the usage conditions above.\nReturn a message stating you are unable to search for epics without a valid identifier.\n\n</description>\n<example>\nQuestion: Please identify the author of &123 epic.\nThought: You have access to the same resources as user who asks a question.\n  The question is about an epic, so you need to use \"EpicReader\" tool.\n  Based on this information you can present final answer.\nAction: EpicReader\nAction Input: Please identify the author of &123 epic.\n\n</example>\n</tool>\n<tool>\n<tool_name>CiEditorAssistant</tool_name>\n<description>\nUseful tool when you need to provide suggestions regarding anything related to \".gitlab-ci.yml\" file.\nIt helps with questions related to deployments, configuring CI/CD pipelines, defining CI jobs, or environments.\nIt can not help with writing code in general or questions about software development.\n\n</description>\n<example>\nQuestion: Please create a deployment configuration for a node.js application.\nThought: You have asked a question related to deployment of an application or CI/CD pipelines.\n  \"CiEditorAssistant\" tool can assist with this kind of questions.\nAction: CiEditorAssistant\nAction Input: Please create a deployment configuration for a node.js application.\n\n</example>\n</tool>\n</tool_list>\nConsider every tool before making a decision.\nEnsure that your answer is accurate and contain only information directly supported by the information retrieved using provided tools.\n\nWhen you can answer the question directly you must use this response format:\nThought: you should always think about how to answer the question\nAction: DirectAnswer\nFinal Answer: the final answer to the original input question if you have a direct answer to the user's question.\n\nYou must always use the following format when using a tool:\nQuestion: the input question you must answer\nThought: you should always think about what to do\nAction: the action to take, should be one tool from this list: [IssueReader, GitlabDocumentation, EpicReader, CiEditorAssistant]\nAction Input: the input to the action needs to be provided for every action that uses a tool.\nObservation: the result of the tool actions. But remember that you're still GitLab Duo Chat.\n\n\n... (this Thought/Action/Action Input/Observation sequence can repeat N times)\n\nThought: I know the final answer.\nFinal Answer: the final answer to the original input question.\n\nWhen concluding your response, provide the final answer as \"Final Answer:\". It should contain everything that user needs to see, including answer from \"Observation\" section.\n\n\nYou have access to the following GitLab resources: issues, documentation answers, epics, ci editor answers.\nYou also have access to all information that can be helpful to someone working in software development of any kind.\nAt the moment, you do not have access to the following GitLab resources: Pipelines, Vulnerabilities, Merge Requests.\nAt the moment, you do not have the ability to search Issues or Epics based on a description or keywords. You can only read information about a specific issue/epic IF the user is on the specific issue/epic's page, or provides a URL or ID.\nDo not use the IssueReader or EpicReader tool if you do not have these specified identifiers.\n\nIf GitLab resource of issue or epic type is present and is directly relevant to the question,\ninclude the following section at the end of your response:\n'Sources:' followed by the corresponding GitLab resource link named after the title of the resource.\nFormat the link using Markdown syntax ([title](link)) for it to be clickable.\n\n\nAsk user to leave feedback.\n\n\n\nBegin!\n"
            },
            {
              "role": "user",
              "content": "How do I create an issue?"
            },
            {
              "role": "assistant",
              "content": "\nThought:"
            }
          ],
          "params": {
            "temperature": 0.1,
            "max_tokens_to_sample": 2048,
            "stop_sequences": [
              "\n\nHuman",
              "Observation:"
            ]
          },
          "provider": "anthropic",
          "model": "claude-3-5-sonnet-20240620"
        }
      }
    ],
    "stream": true
  },
  "timeout": 30,
  "stream": true
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:13.985Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Received response from AI Gateway",
  "response": " The user is asking about a basic GitLab functionality - creating an issue. This is a question that can be answered using the GitLab documentation. I should use the GitlabDocumentation tool to get the most accurate and up-to-date information.\n\nAction: GitlabDocumentation\nAction Input: How do I create an issue?\n\n"
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:14.069Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Answer",
  "content": "\nAction: GitlabDocumentation\nAction Input: How do I create an issue?\n"
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:14.069Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Picked tool",
  "tool": "Gitlab::Llm::Chain::Tools::GitlabDocumentation::Executor"
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:14.074Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Calling TanukiBot",
  "class": "Gitlab::Llm::Chain::Tools::GitlabDocumentation::Executor"
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:14.084Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Searching docs from AI Gateway",
  "options": {}
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:14.148Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Searched docs from AI Gateway",
  "response": {
    "response": {
      "results": [
        {
          "id": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md",
          "content": "DETAILS:\n**Tier:** Premium, Ultimate\n**Offering:** GitLab.com, Self-managed, GitLab Dedicated  \n<!-- vale gitlab.FutureTense = NO -->  \nThis tutorial shows you how to set up [issue boards](../../user/project/issue_board.md) and [scoped labels](../../user/project/labels.md#scoped-labels) for two teams that work on issues in sequence.  \nIn this example, you'll create two issue boards for the UX and Frontend teams.\nUsing the following steps, you can create issue boards and workflows for more sub-teams, like Backend\nor Quality Assurance.\nTo learn how we use workflow labels at GitLab, see [Product Development Flow](https://handbook.gitlab.com/handbook/product-development-flow/).  \nTo set up issue boards for multiple teams:  \n1. [Create a group](#create-a-group)\n1. [Create a project](#create-a-project)\n1. [Create labels](#create-labels)\n1. [Create team issue boards](#create-team-issue-boards)\n1. [Create issues for features](#create-issues-for-features)",
          "metadata": {
            "Header1": "Tutorial: Set up issue boards for team hand-off",
            "filename": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md"
          }
        },
        {
          "id": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/user/project/issues/confidential_issues.md",
          "content": "When you create a new issue, a checkbox right below the text area is available\nto mark the issue as confidential. Check that box and select **Create issue**\nto create the issue.  \nWhen you create a confidential issue in a project, the project becomes listed in the **Contributed projects** section in your [profile](../../profile/index.md). **Contributed projects** does not show information about the confidential issue; it only shows the project name.  \nTo create a confidential issue:  \n1. On the left sidebar, select **Search or go to** and find your project.\n1. On the left sidebar, at the top, select **Create new** (**{plus}**).\n1. From the dropdown list, select **New issue**.\n1. Complete the [fields](create_issues.md#fields-in-the-new-issue-form).\n- Select the **This issue is confidential** checkbox.\n1. Select **Create issue**.",
          "metadata": {
            "Header1": "Confidential issues",
            "Header2": "Make an issue confidential",
            "Header3": "In a new issue",
            "filename": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/user/project/issues/confidential_issues.md"
          }
        },
        {
          "id": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/issue_triage/index.md",
          "content": "DETAILS:\n**Tier:** Free, Premium, Ultimate\n**Offering:** GitLab.com, Self-managed, GitLab Dedicated  \n<!-- vale gitlab.FutureTense = NO -->  \nIssue triage is the process of categorization according to type and severity.\nAs your project grows and people create more issues, it's worth creating a workflow for how you'll\ntriage incoming issues.  \nIn this tutorial, you'll learn how to set up a GitLab project for this.  \nTo set up GitLab for issue triage in a project:  \n1. [Create a project](#create-a-project)\n1. [Decide on the criteria for types, severity, and priority](#decide-on-the-criteria-for-types-severity-and-priority)\n1. [Document your criteria](#document-your-criteria)\n1. [Create scoped labels](#create-scoped-labels)\n1. [Prioritize the new labels](#prioritize-the-new-labels)\n1. [Create an issue triage board](#create-an-issue-triage-board)\n1. [Create issues for features](#create-issues-for-features)",
          "metadata": {
            "Header1": "Tutorial: Set up a project for issue triage",
            "filename": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/issue_triage/index.md"
          }
        },
        {
          "id": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md",
          "content": "Like with labels, you could create your issue boards in the **Paperclip Assistant** project,\nbut it can be better to have them in the **Paperclip Software Factory** group. This way, you'll be able\nto manage issues from all the projects that you might create later in this group.  \nTo create a new group issue board:  \n1. On the left sidebar, select **Search or go to** and find your **Paperclip Software Factory** group.\n1. Select **Plan > Issue boards**.\n1. Create the UX workflow and Frontend workflow boards.  \nTo create the **UX workflow** issue board:  \n1. In the upper-left corner of the issue board page, select the dropdown list with the current board name.\n1. Select **Create new board**.\n1. In the **Title field**, enter `UX workflow`.\n1. Clear the **Show the Open list** and **Show the Closed list** checkboxes.\n1. Select **Create board**. You should see an empty board.\n1. Create a list for the `Workflow::Ready for design` label:\n1. In the upper-right corner of the issue board page, select **Create list**.\n1. In the column that appears, from the **Value** dropdown list, select the `Workflow::Ready for design` label.\n1. Select **Add to board**.\n1. Repeat the previous step for labels `Workflow::Design` and `Workflow::Ready for development`.  \n![Issue board called \"UX workflow\" with three columns and no issues](img/ux_board_empty_v16_0.png)  \nTo create the **Frontend workflow** board:  \n1. In the upper-left corner of the issue board page, select the dropdown list with the current board name.\n1. Select **Create new board**.\n1. In the **Title field**, enter `Frontend workflow`.\n1. Clear the **Show the Open list** and **Show the Closed list** checkboxes.\n1. Expand **Scope**.\n1. Next to **Labels**, select **Edit** and select the `Frontend` label.\n1. Select **Create board**.\n1. Create a list for the `Workflow::Ready for development` label:\n1. In the upper-right corner of the issue board page, select **Create list**.\n1. In the column that appeared, from the **Value** dropdown list, select the `Workflow::Ready for development` label.\n1. Select **Add to board**.\n1. Repeat the previous step for labels `Workflow::In development` and `Workflow::Complete`.  \n![Issue board called \"Frontend workflow\" with three columns and no issues](img/frontend_board_empty_v16_0.png)  \nFor now, lists in both your boards should be empty. Next, you'll populate them with some issues.",
          "metadata": {
            "Header1": "Tutorial: Set up issue boards for team hand-off",
            "Header2": "Create team issue boards",
            "filename": "/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md"
          }
        }
      ]
    },
    "metadata": {
      "provider": "sqlite",
      "timestamp": 1722940274
    }
  }
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:14.174Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Performing request to AI Gateway",
  "body": {
    "prompt_components": [
      {
        "type": "prompt",
        "metadata": {
          "source": "GitLab EE",
          "version": "17.3.0"
        },
        "payload": {
          "content": [
            {
              "role": "user",
              "content": "Given the following extracted parts of technical documentation enclosed in <quote></quote> XML tags and a question, create a final answer.\nIf you don't know the answer, just say that you don't know. Don't try to make up an answer.\nAt the end of your answer ALWAYS return a \"ATTRS\" part for references and\nALWAYS name it ATTRS.\n\nQUESTION: How do I create an issue?\n\n<quote>\nCONTENT: DETAILS:\n**Tier:** Premium, Ultimate\n**Offering:** GitLab.com, Self-managed, GitLab Dedicated  \n<!-- vale gitlab.FutureTense = NO -->  \nThis tutorial shows you how to set up [issue boards](../../user/project/issue_board.md) and [scoped labels](../../user/project/labels.md#scoped-labels) for two teams that work on issues in sequence.  \nIn this example, you'll create two issue boards for the UX and Frontend teams.\nUsing the following steps, you can create issue boards and workflows for more sub-teams, like Backend\nor Quality Assurance.\nTo learn how we use workflow labels at GitLab, see [Product Development Flow](https://handbook.gitlab.com/handbook/product-development-flow/).  \nTo set up issue boards for multiple teams:  \n1. [Create a group](#create-a-group)\n1. [Create a project](#create-a-project)\n1. [Create labels](#create-labels)\n1. [Create team issue boards](#create-team-issue-boards)\n1. [Create issues for features](#create-issues-for-features)\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md\n</quote>\n\n<quote>\nCONTENT: When you create a new issue, a checkbox right below the text area is available\nto mark the issue as confidential. Check that box and select **Create issue**\nto create the issue.  \nWhen you create a confidential issue in a project, the project becomes listed in the **Contributed projects** section in your [profile](../../profile/index.md). **Contributed projects** does not show information about the confidential issue; it only shows the project name.  \nTo create a confidential issue:  \n1. On the left sidebar, select **Search or go to** and find your project.\n1. On the left sidebar, at the top, select **Create new** (**{plus}**).\n1. From the dropdown list, select **New issue**.\n1. Complete the [fields](create_issues.md#fields-in-the-new-issue-form).\n- Select the **This issue is confidential** checkbox.\n1. Select **Create issue**.\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/user/project/issues/confidential_issues.md\n</quote>\n\n<quote>\nCONTENT: DETAILS:\n**Tier:** Free, Premium, Ultimate\n**Offering:** GitLab.com, Self-managed, GitLab Dedicated  \n<!-- vale gitlab.FutureTense = NO -->  \nIssue triage is the process of categorization according to type and severity.\nAs your project grows and people create more issues, it's worth creating a workflow for how you'll\ntriage incoming issues.  \nIn this tutorial, you'll learn how to set up a GitLab project for this.  \nTo set up GitLab for issue triage in a project:  \n1. [Create a project](#create-a-project)\n1. [Decide on the criteria for types, severity, and priority](#decide-on-the-criteria-for-types-severity-and-priority)\n1. [Document your criteria](#document-your-criteria)\n1. [Create scoped labels](#create-scoped-labels)\n1. [Prioritize the new labels](#prioritize-the-new-labels)\n1. [Create an issue triage board](#create-an-issue-triage-board)\n1. [Create issues for features](#create-issues-for-features)\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/issue_triage/index.md\n</quote>\n\n<quote>\nCONTENT: Like with labels, you could create your issue boards in the **Paperclip Assistant** project,\nbut it can be better to have them in the **Paperclip Software Factory** group. This way, you'll be able\nto manage issues from all the projects that you might create later in this group.  \nTo create a new group issue board:  \n1. On the left sidebar, select **Search or go to** and find your **Paperclip Software Factory** group.\n1. Select **Plan > Issue boards**.\n1. Create the UX workflow and Frontend workflow boards.  \nTo create the **UX workflow** issue board:  \n1. In the upper-left corner of the issue board page, select the dropdown list with the current board name.\n1. Select **Create new board**.\n1. In the **Title field**, enter `UX workflow`.\n1. Clear the **Show the Open list** and **Show the Closed list** checkboxes.\n1. Select **Create board**. You should see an empty board.\n1. Create a list for the `Workflow::Ready for design` label:\n1. In the upper-right corner of the issue board page, select **Create list**.\n1. In the column that appears, from the **Value** dropdown list, select the `Workflow::Ready for design` label.\n1. Select **Add to board**.\n1. Repeat the previous step for labels `Workflow::Design` and `Workflow::Ready for development`.  \n![Issue board called \"UX workflow\" with three columns and no issues](img/ux_board_empty_v16_0.png)  \nTo create the **Frontend workflow** board:  \n1. In the upper-left corner of the issue board page, select the dropdown list with the current board name.\n1. Select **Create new board**.\n1. In the **Title field**, enter `Frontend workflow`.\n1. Clear the **Show the Open list** and **Show the Closed list** checkboxes.\n1. Expand **Scope**.\n1. Next to **Labels**, select **Edit** and select the `Frontend` label.\n1. Select **Create board**.\n1. Create a list for the `Workflow::Ready for development` label:\n1. In the upper-right corner of the issue board page, select **Create list**.\n1. In the column that appeared, from the **Value** dropdown list, select the `Workflow::Ready for development` label.\n1. Select **Add to board**.\n1. Repeat the previous step for labels `Workflow::In development` and `Workflow::Complete`.  \n![Issue board called \"Frontend workflow\" with three columns and no issues](img/frontend_board_empty_v16_0.png)  \nFor now, lists in both your boards should be empty. Next, you'll populate them with some issues.\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md\n</quote>\n"
            },
            {
              "role": "assistant",
              "content": "FINAL ANSWER:"
            }
          ],
          "params": {
            "temperature": 0.1,
            "max_tokens_to_sample": 2048,
            "stop_sequences": [
              "\n\nHuman",
              "Observation:"
            ]
          },
          "provider": "anthropic",
          "model": "claude-3-sonnet-20240229"
        }
      }
    ],
    "stream": true
  },
  "timeout": 30,
  "stream": true
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:19.004Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Received response from AI Gateway",
  "response": " To create an issue in GitLab, follow these steps:\n\n1. On the left sidebar, select **Search or go to** and find your project.\n2. On the left sidebar, at the top, select **Create new** (**{plus}**).\n3. From the dropdown list, select **New issue**.\n4. Complete the fields in the new issue form.\n5. If you want to make the issue confidential, check the **This issue is confidential** checkbox.\n6. Select **Create issue**.\n\nTo make an issue confidential, simply check the \"This issue is confidential\" checkbox when creating the new issue. Confidential issues are only visible to project members.\n\nATTRS:\nCNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/user/project/issues/confidential_issues.md"
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:19.005Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Got Final Result",
  "prompt": [
    {
      "role": "user",
      "content": "Given the following extracted parts of technical documentation enclosed in <quote></quote> XML tags and a question, create a final answer.\nIf you don't know the answer, just say that you don't know. Don't try to make up an answer.\nAt the end of your answer ALWAYS return a \"ATTRS\" part for references and\nALWAYS name it ATTRS.\n\nQUESTION: How do I create an issue?\n\n<quote>\nCONTENT: DETAILS:\n**Tier:** Premium, Ultimate\n**Offering:** GitLab.com, Self-managed, GitLab Dedicated  \n<!-- vale gitlab.FutureTense = NO -->  \nThis tutorial shows you how to set up [issue boards](../../user/project/issue_board.md) and [scoped labels](../../user/project/labels.md#scoped-labels) for two teams that work on issues in sequence.  \nIn this example, you'll create two issue boards for the UX and Frontend teams.\nUsing the following steps, you can create issue boards and workflows for more sub-teams, like Backend\nor Quality Assurance.\nTo learn how we use workflow labels at GitLab, see [Product Development Flow](https://handbook.gitlab.com/handbook/product-development-flow/).  \nTo set up issue boards for multiple teams:  \n1. [Create a group](#create-a-group)\n1. [Create a project](#create-a-project)\n1. [Create labels](#create-labels)\n1. [Create team issue boards](#create-team-issue-boards)\n1. [Create issues for features](#create-issues-for-features)\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md\n</quote>\n\n<quote>\nCONTENT: When you create a new issue, a checkbox right below the text area is available\nto mark the issue as confidential. Check that box and select **Create issue**\nto create the issue.  \nWhen you create a confidential issue in a project, the project becomes listed in the **Contributed projects** section in your [profile](../../profile/index.md). **Contributed projects** does not show information about the confidential issue; it only shows the project name.  \nTo create a confidential issue:  \n1. On the left sidebar, select **Search or go to** and find your project.\n1. On the left sidebar, at the top, select **Create new** (**{plus}**).\n1. From the dropdown list, select **New issue**.\n1. Complete the [fields](create_issues.md#fields-in-the-new-issue-form).\n- Select the **This issue is confidential** checkbox.\n1. Select **Create issue**.\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/user/project/issues/confidential_issues.md\n</quote>\n\n<quote>\nCONTENT: DETAILS:\n**Tier:** Free, Premium, Ultimate\n**Offering:** GitLab.com, Self-managed, GitLab Dedicated  \n<!-- vale gitlab.FutureTense = NO -->  \nIssue triage is the process of categorization according to type and severity.\nAs your project grows and people create more issues, it's worth creating a workflow for how you'll\ntriage incoming issues.  \nIn this tutorial, you'll learn how to set up a GitLab project for this.  \nTo set up GitLab for issue triage in a project:  \n1. [Create a project](#create-a-project)\n1. [Decide on the criteria for types, severity, and priority](#decide-on-the-criteria-for-types-severity-and-priority)\n1. [Document your criteria](#document-your-criteria)\n1. [Create scoped labels](#create-scoped-labels)\n1. [Prioritize the new labels](#prioritize-the-new-labels)\n1. [Create an issue triage board](#create-an-issue-triage-board)\n1. [Create issues for features](#create-issues-for-features)\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/issue_triage/index.md\n</quote>\n\n<quote>\nCONTENT: Like with labels, you could create your issue boards in the **Paperclip Assistant** project,\nbut it can be better to have them in the **Paperclip Software Factory** group. This way, you'll be able\nto manage issues from all the projects that you might create later in this group.  \nTo create a new group issue board:  \n1. On the left sidebar, select **Search or go to** and find your **Paperclip Software Factory** group.\n1. Select **Plan > Issue boards**.\n1. Create the UX workflow and Frontend workflow boards.  \nTo create the **UX workflow** issue board:  \n1. In the upper-left corner of the issue board page, select the dropdown list with the current board name.\n1. Select **Create new board**.\n1. In the **Title field**, enter `UX workflow`.\n1. Clear the **Show the Open list** and **Show the Closed list** checkboxes.\n1. Select **Create board**. You should see an empty board.\n1. Create a list for the `Workflow::Ready for design` label:\n1. In the upper-right corner of the issue board page, select **Create list**.\n1. In the column that appears, from the **Value** dropdown list, select the `Workflow::Ready for design` label.\n1. Select **Add to board**.\n1. Repeat the previous step for labels `Workflow::Design` and `Workflow::Ready for development`.  \n![Issue board called \"UX workflow\" with three columns and no issues](img/ux_board_empty_v16_0.png)  \nTo create the **Frontend workflow** board:  \n1. In the upper-left corner of the issue board page, select the dropdown list with the current board name.\n1. Select **Create new board**.\n1. In the **Title field**, enter `Frontend workflow`.\n1. Clear the **Show the Open list** and **Show the Closed list** checkboxes.\n1. Expand **Scope**.\n1. Next to **Labels**, select **Edit** and select the `Frontend` label.\n1. Select **Create board**.\n1. Create a list for the `Workflow::Ready for development` label:\n1. In the upper-right corner of the issue board page, select **Create list**.\n1. In the column that appeared, from the **Value** dropdown list, select the `Workflow::Ready for development` label.\n1. Select **Add to board**.\n1. Repeat the previous step for labels `Workflow::In development` and `Workflow::Complete`.  \n![Issue board called \"Frontend workflow\" with three columns and no issues](img/frontend_board_empty_v16_0.png)  \nFor now, lists in both your boards should be empty. Next, you'll populate them with some issues.\nATTRS: CNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/tutorials/boards_for_teams/index.md\n</quote>\n"
    },
    {
      "role": "assistant",
      "content": "FINAL ANSWER:"
    }
  ],
  "response": " To create an issue in GitLab, follow these steps:\n\n1. On the left sidebar, select **Search or go to** and find your project.\n2. On the left sidebar, at the top, select **Create new** (**{plus}**).\n3. From the dropdown list, select **New issue**.\n4. Complete the fields in the new issue form.\n5. If you want to make the issue confidential, check the **This issue is confidential** checkbox.\n6. Select **Create issue**.\n\nTo make an issue confidential, simply check the \"This issue is confidential\" checkbox when creating the new issue. Confidential issues are only visible to project members.\n\nATTRS:\nCNT-IDX-/var/folders/24/dn3kffts6bq0mh817420bb3r0000gn/T/tmpa_u0mri2/gitlab-v17.0.0-ee-doc/doc/user/project/issues/confidential_issues.md"
}
{
  "severity": "INFO",
  "time": "2024-08-06T10:31:19.006Z",
  "correlation_id": "01J4KKWAGB0EMJM7X4BYMTDDNX",
  "meta.caller_id": "GraphqlController#execute",
  "meta.remote_ip": "127.0.0.1",
  "meta.feature_category": "custom_models",
  "meta.user": "root",
  "meta.user_id": 1,
  "meta.client_id": "user/1",
  "message": "Final answer",
  "content": "To create an issue in GitLab, follow these steps:\n\n1. On the left sidebar, select **Search or go to** and find your project.\n2. On the left sidebar, at the top, select **Create new** (**{plus}**).\n3. From the dropdown list, select **New issue**.\n4. Complete the fields in the new issue form.\n5. If you want to make the issue confidential, check the **This issue is confidential** checkbox.\n6. Select **Create issue**.\n\nTo make an issue confidential, simply check the \"This issue is confidential\" checkbox when creating the new issue. Confidential issues are only visible to project members."
}
Edited by Susie Bitters