message.go

59 lines
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
package assistant

// Message roles
const (
	RoleSystem    = "system"
	RoleUser      = "user"
	RoleAssistant = "assistant"
	RoleTool      = "tool"
)

// Message represents a chat message.
type Message struct {
	Role       string     // "system", "user", "assistant", or "tool"
	Content    string     // Message text content
	ToolCalls  []ToolCall // Tool calls (assistant messages only)
	ToolCallID string     // ID of the tool call this is a result for (tool messages only)
}

// NewSystemMessage creates a system message.
func NewSystemMessage(content string) Message {
	return Message{
		Role:    RoleSystem,
		Content: content,
	}
}

// NewUserMessage creates a user message.
func NewUserMessage(content string) Message {
	return Message{
		Role:    RoleUser,
		Content: content,
	}
}

// NewAssistantMessage creates an assistant message.
func NewAssistantMessage(content string) Message {
	return Message{
		Role:    RoleAssistant,
		Content: content,
	}
}

// NewAssistantToolCallMessage creates an assistant message with tool calls.
func NewAssistantToolCallMessage(content string, toolCalls []ToolCall) Message {
	return Message{
		Role:      RoleAssistant,
		Content:   content,
		ToolCalls: toolCalls,
	}
}

// NewToolResultMessage creates a tool result message.
func NewToolResultMessage(toolCallID, result string) Message {
	return Message{
		Role:       RoleTool,
		Content:    result,
		ToolCallID: toolCallID,
	}
}