/*--------------------------------------------------------------------------------------------- * 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. * *
{@code
* var config = new SystemMessageConfig().setMode(SystemMessageMode.APPEND)
* .setContent("Always respond in a formal tone.");
* }
*
* {@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; } }