2-1. contexts

1

Instead of adding system prompt in LM Studio, put it a key value in Agent class.

@dataclass
class Agent:
    system_prompt: str = "answer in french only"
    model: str = "qwen/qwen3.5-9b"
    base_url: str = "http://127.0.0.1:1234/v1"
    api_key:  str = field(default="NO_API_KEY", repr=False)
    contexts: dict[str, Callable[[],str]] = field(default_factory=dict)
    messages: list[dict[str,Any]] = field(default_factory=list)

    def __post_init__(self) -> None:
        self.base_url = self.base_url.rstrip('/')

1

Add a contexts to Agent class and context decorator below that class in to previous script

@dataclass
class Agent:
    system_prompt: str = "answer in french only"
    model: str = "qwen/qwen3.5-9b"
    base_url: str = "http://127.0.0.1:1234/v1"
    api_key:  str = field(default="NO_API_KEY", repr=False)
    contexts: dict[str, Callable[[],str]] = field(default_factory=dict)
    messages: list[dict[str,Any]] = field(default_factory=list)

    def __post_init__(self) -> None:
        self.base_url = self.base_url.rstrip('/')
    
    def context(self, func: Callable[[], str]) -> Callable[[],str]:
        self.contexts[func.__name__] = func
        return func

1

Traditional chabots gets prompts once at beggining, ... ? I don't quite get this, but he explains it starting at 7:33mins ish