mirror of
https://github.com/GNS3/gns3-server.git
synced 2026-10-22 02:42:22 +03:00
feat(agent): update import paths for gns3_copilot modules
Updated import statements across multiple agent files to use absolute paths starting with `gns3server.agent.gns3_copilot` instead of relative `gns3_copilot` imports. This ensures proper module resolution within the gns3-server package structure and prevents import errors when the agent is executed from different contexts.
This commit is contained in:
parent
73de248381
commit
dde2a00c5b
@ -43,17 +43,17 @@ from typing_extensions import TypedDict
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from gns3_copilot.agent.model_factory import (
|
from gns3server.agent.gns3_copilot.agent.model_factory import (
|
||||||
create_base_model_with_tools,
|
create_base_model_with_tools,
|
||||||
create_title_model,
|
create_title_model,
|
||||||
)
|
)
|
||||||
from gns3_copilot.gns3_client import GNS3TopologyTool
|
from gns3server.agent.gns3_copilot.gns3_client import GNS3TopologyTool
|
||||||
from gns3_copilot.prompts import TITLE_PROMPT, load_system_prompt
|
from gns3server.agent.gns3_copilot.prompts import TITLE_PROMPT, load_system_prompt
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
# Add backend to path for prompt_manager
|
# Add backend to path for prompt_manager
|
||||||
sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / "backend"))
|
sys.path.insert(0, str(Path(__file__).parent.parent.parent.parent / "backend"))
|
||||||
from gns3_copilot.tools_v2 import (
|
from gns3server.agent.gns3_copilot.tools_v2 import (
|
||||||
ExecuteMultipleDeviceCommands,
|
ExecuteMultipleDeviceCommands,
|
||||||
GNS3CreateNodeTool,
|
GNS3CreateNodeTool,
|
||||||
GNS3LinkTool,
|
GNS3LinkTool,
|
||||||
|
|||||||
@ -12,7 +12,7 @@ from uuid import UUID
|
|||||||
|
|
||||||
from langchain.chat_models import init_chat_model
|
from langchain.chat_models import init_chat_model
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import get_llm_config
|
from gns3server.agent.gns3_copilot.gns3_client import get_llm_config
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import aiosqlite
|
|||||||
from langchain_core.messages import HumanMessage, AIMessage, ToolMessage
|
from langchain_core.messages import HumanMessage, AIMessage, ToolMessage
|
||||||
from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver
|
from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver
|
||||||
|
|
||||||
from gns3_copilot.agent.gns3_copilot import agent_builder
|
from gns3server.agent.gns3_copilot.agent.gns3_copilot import agent_builder
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -14,7 +14,7 @@ Main Functions:
|
|||||||
get_gns3_connector: Create a Gns3Connector with JWT token
|
get_gns3_connector: Create a Gns3Connector with JWT token
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
from gns3_copilot.gns3_client import get_gns3_connector
|
from gns3server.agent.gns3_copilot.gns3_client import get_gns3_connector
|
||||||
|
|
||||||
# Auto-detect URL from Controller or Config
|
# Auto-detect URL from Controller or Config
|
||||||
connector = get_gns3_connector(jwt_token="your_token")
|
connector = get_gns3_connector(jwt_token="your_token")
|
||||||
@ -29,7 +29,7 @@ Authentication:
|
|||||||
import logging
|
import logging
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from gns3_copilot.gns3_client.custom_gns3fy import Gns3Connector
|
from gns3server.agent.gns3_copilot.gns3_client.custom_gns3fy import Gns3Connector
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -241,7 +241,7 @@ async def get_gns3_connector_with_llm_config(
|
|||||||
url = _detect_url_for_api()
|
url = _detect_url_for_api()
|
||||||
|
|
||||||
# Step 3: Get LLM config
|
# Step 3: Get LLM config
|
||||||
from gns3_copilot.utils.llm_config_helper import get_user_llm_config
|
from gns3server.agent.gns3_copilot.utils.llm_config_helper import get_user_llm_config
|
||||||
|
|
||||||
llm_config = await get_user_llm_config(
|
llm_config = await get_user_llm_config(
|
||||||
user_id=user_id,
|
user_id=user_id,
|
||||||
@ -316,7 +316,7 @@ def get_gns3_server_host() -> str:
|
|||||||
Hostname/IP address string
|
Hostname/IP address string
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
from gns3_copilot.gns3_client import get_gns3_server_host
|
from gns3server.agent.gns3_copilot.gns3_client import get_gns3_server_host
|
||||||
|
|
||||||
host = get_gns3_server_host()
|
host = get_gns3_server_host()
|
||||||
print(f"GNS3 server host: {host}")
|
print(f"GNS3 server host: {host}")
|
||||||
@ -353,7 +353,7 @@ def get_llm_config(user_id, jwt_token: str) -> Optional[dict]:
|
|||||||
or None if not found.
|
or None if not found.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
from gns3_copilot.gns3_client import get_llm_config
|
from gns3server.agent.gns3_copilot.gns3_client import get_llm_config
|
||||||
|
|
||||||
config = get_llm_config(user_id, jwt_token)
|
config = get_llm_config(user_id, jwt_token)
|
||||||
if config:
|
if config:
|
||||||
@ -372,7 +372,7 @@ def get_llm_config(user_id, jwt_token: str) -> Optional[dict]:
|
|||||||
url = _detect_url_for_api()
|
url = _detect_url_for_api()
|
||||||
|
|
||||||
# Import the async helper
|
# Import the async helper
|
||||||
from gns3_copilot.utils.llm_config_helper import get_user_llm_config
|
from gns3server.agent.gns3_copilot.utils.llm_config_helper import get_user_llm_config
|
||||||
|
|
||||||
# Run async function in sync context
|
# Run async function in sync context
|
||||||
loop = asyncio.get_event_loop()
|
loop = asyncio.get_event_loop()
|
||||||
|
|||||||
@ -9,7 +9,7 @@ from typing import Any
|
|||||||
|
|
||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import Project, get_gns3_connector
|
from gns3server.agent.gns3_copilot.gns3_client import Project, get_gns3_connector
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import get_gns3_server_host
|
from gns3server.agent.gns3_copilot.gns3_client import get_gns3_server_host
|
||||||
|
|
||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
@ -18,7 +18,7 @@ from nornir.core import Nornir
|
|||||||
from nornir.core.task import AggregatedResult, Result, Task
|
from nornir.core.task import AggregatedResult, Result, Task
|
||||||
from nornir_netmiko.tasks import netmiko_send_config
|
from nornir_netmiko.tasks import netmiko_send_config
|
||||||
|
|
||||||
from gns3_copilot.utils import get_device_ports_from_topology
|
from gns3server.agent.gns3_copilot.utils import get_device_ports_from_topology
|
||||||
|
|
||||||
# config log
|
# config log
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import os
|
|||||||
import re
|
import re
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import get_gns3_server_host
|
from gns3server.agent.gns3_copilot.gns3_client import get_gns3_server_host
|
||||||
|
|
||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
@ -19,7 +19,7 @@ from nornir.core import Nornir
|
|||||||
from nornir.core.task import AggregatedResult, Result, Task
|
from nornir.core.task import AggregatedResult, Result, Task
|
||||||
from nornir_netmiko.tasks import netmiko_multiline
|
from nornir_netmiko.tasks import netmiko_multiline
|
||||||
|
|
||||||
from gns3_copilot.utils import get_device_ports_from_topology
|
from gns3server.agent.gns3_copilot.utils import get_device_ports_from_topology
|
||||||
|
|
||||||
# config log
|
# config log
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -13,7 +13,7 @@ from typing import Any
|
|||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import Link, get_gns3_connector
|
from gns3server.agent.gns3_copilot.gns3_client import Link, get_gns3_connector
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -13,7 +13,7 @@ from typing import Any
|
|||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import Node, get_gns3_connector
|
from gns3server.agent.gns3_copilot.gns3_client import Node, get_gns3_connector
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -13,7 +13,7 @@ from typing import Any
|
|||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import get_gns3_connector
|
from gns3server.agent.gns3_copilot.gns3_client import get_gns3_connector
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -14,7 +14,7 @@ from typing import Any
|
|||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import Node, get_gns3_connector
|
from gns3server.agent.gns3_copilot.gns3_client import Node, get_gns3_connector
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -12,7 +12,7 @@ from typing import Any
|
|||||||
from langchain.tools import BaseTool
|
from langchain.tools import BaseTool
|
||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import Node, get_gns3_connector
|
from gns3server.agent.gns3_copilot.gns3_client import Node, get_gns3_connector
|
||||||
|
|
||||||
# Configure logging
|
# Configure logging
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -15,8 +15,8 @@ from langchain.tools import BaseTool
|
|||||||
from langchain_core.callbacks import CallbackManagerForToolRun
|
from langchain_core.callbacks import CallbackManagerForToolRun
|
||||||
from telnetlib3 import Telnet
|
from telnetlib3 import Telnet
|
||||||
|
|
||||||
from gns3_copilot.gns3_client import get_gns3_server_host
|
from gns3server.agent.gns3_copilot.gns3_client import get_gns3_server_host
|
||||||
from gns3_copilot.utils import get_device_ports_from_topology
|
from gns3server.agent.gns3_copilot.utils import get_device_ports_from_topology
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -34,7 +34,7 @@ def get_device_ports_from_topology(
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
# Lazy import to avoid circular dependency
|
# Lazy import to avoid circular dependency
|
||||||
from gns3_copilot.gns3_client import GNS3TopologyTool
|
from gns3server.agent.gns3_copilot.gns3_client import GNS3TopologyTool
|
||||||
|
|
||||||
# Get topology information
|
# Get topology information
|
||||||
topo = GNS3TopologyTool()
|
topo = GNS3TopologyTool()
|
||||||
|
|||||||
@ -11,7 +11,7 @@ This allows the copilot module to access API keys that are hidden from API respo
|
|||||||
while leveraging the API's default_config selection logic.
|
while leveraging the API's default_config selection logic.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
from gns3_copilot.utils.llm_config_helper import get_user_llm_config
|
from gns3server.agent.gns3_copilot.utils.llm_config_helper import get_user_llm_config
|
||||||
|
|
||||||
# Get user's default LLM config (with API key)
|
# Get user's default LLM config (with API key)
|
||||||
config = get_user_llm_config(user_id, jwt_token, gns3_url)
|
config = get_user_llm_config(user_id, jwt_token, gns3_url)
|
||||||
@ -232,7 +232,7 @@ def _detect_gns3_url() -> Optional[str]:
|
|||||||
GNS3 server URL, or None if detection failed
|
GNS3 server URL, or None if detection failed
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
from gns3_copilot.gns3_client.connector_factory import (
|
from gns3server.agent.gns3_copilot.gns3_client.connector_factory import (
|
||||||
_get_url_from_controller,
|
_get_url_from_controller,
|
||||||
_get_url_from_config,
|
_get_url_from_config,
|
||||||
DEFAULT_GNS3_URL
|
DEFAULT_GNS3_URL
|
||||||
|
|||||||
@ -21,7 +21,7 @@ API routes for GNS3 Copilot Chat integration.
|
|||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import uuid
|
import uuid
|
||||||
from typing import Optional
|
from typing import Optional, List
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, HTTPException, Request, status
|
from fastapi import APIRouter, Depends, HTTPException, Request, status
|
||||||
from fastapi.responses import StreamingResponse
|
from fastapi.responses import StreamingResponse
|
||||||
|
|||||||
@ -39,6 +39,14 @@ from .controller.llm_model_configs import (
|
|||||||
LLMModelConfigInheritedResponse,
|
LLMModelConfigInheritedResponse,
|
||||||
LLMModelConfigListResponse
|
LLMModelConfigListResponse
|
||||||
)
|
)
|
||||||
|
from .controller.chat import (
|
||||||
|
OpenAIToolCall,
|
||||||
|
ChatRequest,
|
||||||
|
ChatResponse,
|
||||||
|
OpenAIMessage,
|
||||||
|
ConversationHistory,
|
||||||
|
ChatSession
|
||||||
|
)
|
||||||
from .controller.rbac import RoleCreate, RoleUpdate, Role, Privilege, ACECreate, ACEUpdate, ACE
|
from .controller.rbac import RoleCreate, RoleUpdate, Role, Privilege, ACECreate, ACEUpdate, ACE
|
||||||
from .controller.pools import Resource, ResourceCreate, ResourcePoolCreate, ResourcePoolUpdate, ResourcePool
|
from .controller.pools import Resource, ResourceCreate, ResourcePoolCreate, ResourcePoolUpdate, ResourcePool
|
||||||
from .controller.tokens import Token
|
from .controller.tokens import Token
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user