/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. *--------------------------------------------------------------------------------------------*/ package com.github.copilot.sdk.json; import com.fasterxml.jackson.annotation.JsonInclude; import com.github.copilot.sdk.SystemMessageMode; /** * Configuration for customizing the system message. *

* The system message controls the behavior and personality of the AI assistant. * This configuration allows you to either append to or replace the default * system message. * *

Example - Append Mode

* *
{@code
 * var config = new SystemMessageConfig().setMode(SystemMessageMode.APPEND)
 * 		.setContent("Always respond in a formal tone.");
 * }
* *

Example - Replace Mode

* *
{@code
 * var config = new SystemMessageConfig().setMode(SystemMessageMode.REPLACE)
 * 		.setContent("You are a helpful coding assistant.");
 * }
* * @see SessionConfig#setSystemMessage(SystemMessageConfig) * @see SystemMessageMode * @since 1.0.0 */ @JsonInclude(JsonInclude.Include.NON_NULL) public class SystemMessageConfig { private SystemMessageMode mode; private String content; /** * Gets the system message mode. * * @return the mode (APPEND or REPLACE) */ public SystemMessageMode getMode() { return mode; } /** * Sets the system message mode. *

* Use {@link SystemMessageMode#APPEND} to add to the default system message * while preserving guardrails, or {@link SystemMessageMode#REPLACE} to fully * customize the system message. * * @param mode * the mode (APPEND or REPLACE) * @return this config for method chaining */ public SystemMessageConfig setMode(SystemMessageMode mode) { this.mode = mode; return this; } /** * Gets the system message content. * * @return the content to append or use as replacement */ public String getContent() { return content; } /** * Sets the system message content. *

* This is the text that will be appended to or replace the default system * message, depending on the configured mode. * * @param content * the system message content * @return this config for method chaining */ public SystemMessageConfig setContent(String content) { this.content = content; return this; } }