message.go
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,
}
}