mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-09-14 14:05:20 +03:00
Updated the author name and copyright statements across the gns3_copilot module. The name has been standardized from "Guobin Yue" to "Yue Guobin (岳国宾)" to reflect the correct author attribution including Chinese characters.
74 lines
2.8 KiB
Python
74 lines
2.8 KiB
Python
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
#
|
|
# GNS3-Copilot - AI-powered Network Lab Assistant for GNS3
|
|
#
|
|
# This file is part of GNS3-Copilot project.
|
|
#
|
|
# GNS3-Copilot is free software: you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by the
|
|
# Free Software Foundation, either version 3 of the License, or (at your
|
|
# option) any later version.
|
|
#
|
|
# GNS3-Copilot is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
# for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with GNS3-Copilot. If not, see <https://www.gnu.org/licenses/>.
|
|
#
|
|
# Copyright (C) 2025 Yue Guobin (岳国宾)
|
|
# Author: Yue Guobin (岳国宾)
|
|
#
|
|
# Project Home: https://github.com/yueguobin/gns3-copilot
|
|
#
|
|
|
|
"""
|
|
Prompt Loader for GNS3-Copilot
|
|
|
|
This module provides utilities for loading system prompts.
|
|
Supports multiple prompt variants based on LLM model configuration.
|
|
|
|
Available Modes (controlled by config.copilot_mode in llm_model_configs):
|
|
- "teaching_assistant" (default): Teaching assistant mode - diagnostics only, no configuration
|
|
- "lab_automation_assistant": Full lab automation assistant mode - diagnostics and configuration enabled
|
|
|
|
"""
|
|
|
|
import logging
|
|
|
|
from .teaching_assistant_prompt import TEACHING_ASSISTANT_PROMPT
|
|
from .lab_automation_assistant_prompt import LAB_AUTOMATION_ASSISTANT_PROMPT
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def load_system_prompt(llm_config: dict | None = None) -> str:
|
|
"""
|
|
Load the system prompt for GNS3-Copilot.
|
|
|
|
The prompt mode is controlled by the `copilot_mode` field in the LLM model config:
|
|
- "teaching_assistant" (default): Teaching assistant mode - diagnostics only, no configuration
|
|
- "lab_automation_assistant": Full lab automation assistant mode - diagnostics and configuration enabled
|
|
|
|
Args:
|
|
llm_config: LLM model configuration dictionary (flattened structure from get_user_llm_config_full)
|
|
|
|
Returns:
|
|
str: The system prompt string.
|
|
"""
|
|
if not llm_config:
|
|
logger.info("No LLM config provided, using default TEACHING_ASSISTANT prompt mode")
|
|
return TEACHING_ASSISTANT_PROMPT
|
|
|
|
# llm_config is a flattened dict with copilot_mode at the top level
|
|
# Example: {"provider": "...", "model": "...", "copilot_mode": "...", ...}
|
|
mode = llm_config.get("copilot_mode", "teaching_assistant").lower()
|
|
|
|
if mode == "lab_automation_assistant":
|
|
logger.info("Using LAB_AUTOMATION_ASSISTANT prompt mode (diagnostics + configuration)")
|
|
return LAB_AUTOMATION_ASSISTANT_PROMPT
|
|
else:
|
|
logger.info("Using TEACHING_ASSISTANT prompt mode (diagnostics only)")
|
|
return TEACHING_ASSISTANT_PROMPT
|