update voice system prompt override
This commit is contained in:
parent
47c5956e24
commit
f237aba2a3
2 changed files with 64 additions and 22 deletions
|
|
@ -79,6 +79,7 @@ type processOptions struct {
|
||||||
UserMessage string // User message content (may include prefix)
|
UserMessage string // User message content (may include prefix)
|
||||||
SystemPromptOverride string // Override the default system prompt (Used by SubTurns)
|
SystemPromptOverride string // Override the default system prompt (Used by SubTurns)
|
||||||
Media []string // media:// refs from inbound message
|
Media []string // media:// refs from inbound message
|
||||||
|
IsVoice bool // True if this message comes from an audio/voice call
|
||||||
InitialSteeringMessages []providers.Message // Steering messages from refactor/agent
|
InitialSteeringMessages []providers.Message // Steering messages from refactor/agent
|
||||||
DefaultResponse string // Response when LLM returns empty
|
DefaultResponse string // Response when LLM returns empty
|
||||||
EnableSummary bool // Whether to trigger summarization
|
EnableSummary bool // Whether to trigger summarization
|
||||||
|
|
@ -1295,6 +1296,12 @@ func (al *AgentLoop) processMessage(ctx context.Context, msg bus.InboundMessage)
|
||||||
"route_channel": route.Channel,
|
"route_channel": route.Channel,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
isVoice := msg.Metadata != nil && msg.Metadata["is_voice"] == "true"
|
||||||
|
var systemPromptOverride string
|
||||||
|
if isVoice {
|
||||||
|
systemPromptOverride = "You are a helpful AI assistant. The user is speaking to you over voice chat. Reply in a concise, conversational, and natural oral style suitable for text-to-speech. Get straight to the point. Do not use Markdown, emojis, asterisks, or code blocks."
|
||||||
|
}
|
||||||
|
|
||||||
opts := processOptions{
|
opts := processOptions{
|
||||||
SessionKey: sessionKey,
|
SessionKey: sessionKey,
|
||||||
Channel: msg.Channel,
|
Channel: msg.Channel,
|
||||||
|
|
@ -1302,7 +1309,9 @@ func (al *AgentLoop) processMessage(ctx context.Context, msg bus.InboundMessage)
|
||||||
SenderID: msg.SenderID,
|
SenderID: msg.SenderID,
|
||||||
SenderDisplayName: msg.Sender.DisplayName,
|
SenderDisplayName: msg.Sender.DisplayName,
|
||||||
UserMessage: msg.Content,
|
UserMessage: msg.Content,
|
||||||
|
SystemPromptOverride: systemPromptOverride,
|
||||||
Media: msg.Media,
|
Media: msg.Media,
|
||||||
|
IsVoice: isVoice,
|
||||||
DefaultResponse: defaultResponse,
|
DefaultResponse: defaultResponse,
|
||||||
EnableSummary: true,
|
EnableSummary: true,
|
||||||
SendResponse: false,
|
SendResponse: false,
|
||||||
|
|
@ -1598,7 +1607,28 @@ func (al *AgentLoop) runTurn(ctx context.Context, ts *turnState) (turnResult, er
|
||||||
}
|
}
|
||||||
ts.captureRestorePoint(history, summary)
|
ts.captureRestorePoint(history, summary)
|
||||||
|
|
||||||
messages := ts.agent.ContextBuilder.BuildMessages(
|
var messages []providers.Message
|
||||||
|
if ts.opts.SystemPromptOverride != "" {
|
||||||
|
messages = append(messages, providers.Message{
|
||||||
|
Role: "system",
|
||||||
|
Content: ts.opts.SystemPromptOverride,
|
||||||
|
})
|
||||||
|
messages = append(messages, history...)
|
||||||
|
if summary != "" {
|
||||||
|
messages = append(messages, providers.Message{
|
||||||
|
Role: "system",
|
||||||
|
Content: "CONTEXT_SUMMARY: " + summary,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if ts.userMessage != "" || len(ts.media) > 0 {
|
||||||
|
messages = append(messages, providers.Message{
|
||||||
|
Role: "user",
|
||||||
|
Content: ts.userMessage,
|
||||||
|
Media: ts.media,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
messages = ts.agent.ContextBuilder.BuildMessages(
|
||||||
history,
|
history,
|
||||||
summary,
|
summary,
|
||||||
ts.userMessage,
|
ts.userMessage,
|
||||||
|
|
@ -1608,13 +1638,17 @@ func (al *AgentLoop) runTurn(ctx context.Context, ts *turnState) (turnResult, er
|
||||||
ts.opts.SenderID,
|
ts.opts.SenderID,
|
||||||
ts.opts.SenderDisplayName,
|
ts.opts.SenderDisplayName,
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
cfg := al.GetConfig()
|
cfg := al.GetConfig()
|
||||||
maxMediaSize := cfg.Agents.Defaults.GetMaxMediaSize()
|
maxMediaSize := cfg.Agents.Defaults.GetMaxMediaSize()
|
||||||
messages = resolveMediaRefs(messages, al.mediaStore, maxMediaSize)
|
messages = resolveMediaRefs(messages, al.mediaStore, maxMediaSize)
|
||||||
|
|
||||||
if !ts.opts.NoHistory {
|
if !ts.opts.NoHistory {
|
||||||
toolDefs := ts.agent.Tools.ToProviderDefs()
|
var toolDefs []providers.ToolDefinition
|
||||||
|
if !ts.opts.IsVoice {
|
||||||
|
toolDefs = ts.agent.Tools.ToProviderDefs()
|
||||||
|
}
|
||||||
if isOverContextBudget(ts.agent.ContextWindow, messages, toolDefs, ts.agent.MaxTokens) {
|
if isOverContextBudget(ts.agent.ContextWindow, messages, toolDefs, ts.agent.MaxTokens) {
|
||||||
logger.WarnCF("agent", "Proactive compression: context budget exceeded before LLM call",
|
logger.WarnCF("agent", "Proactive compression: context budget exceeded before LLM call",
|
||||||
map[string]any{"session_key": ts.sessionKey})
|
map[string]any{"session_key": ts.sessionKey})
|
||||||
|
|
@ -1752,7 +1786,10 @@ turnLoop:
|
||||||
})
|
})
|
||||||
|
|
||||||
gracefulTerminal, _ := ts.gracefulInterruptRequested()
|
gracefulTerminal, _ := ts.gracefulInterruptRequested()
|
||||||
providerToolDefs := ts.agent.Tools.ToProviderDefs()
|
var providerToolDefs []providers.ToolDefinition
|
||||||
|
if !ts.opts.IsVoice {
|
||||||
|
providerToolDefs = ts.agent.Tools.ToProviderDefs()
|
||||||
|
}
|
||||||
|
|
||||||
// Native web search support (from HEAD)
|
// Native web search support (from HEAD)
|
||||||
_, hasWebSearch := ts.agent.Tools.Get("web_search")
|
_, hasWebSearch := ts.agent.Tools.Get("web_search")
|
||||||
|
|
|
||||||
|
|
@ -65,3 +65,8 @@ func DerefStr(s *string, fallback string) string {
|
||||||
}
|
}
|
||||||
return *s
|
return *s
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsTruncationDisabled returns whether truncation is disabled globally
|
||||||
|
func IsTruncationDisabled() bool {
|
||||||
|
return disableTruncation.Load()
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue