Improve TUI system prompt handling
+ allow setting a default agent
This commit is contained in:
parent
676aa7b004
commit
a46d211e10
@ -15,8 +15,7 @@ type Config struct {
|
|||||||
Temperature *float32 `yaml:"temperature" default:"0.2"`
|
Temperature *float32 `yaml:"temperature" default:"0.2"`
|
||||||
SystemPrompt string `yaml:"systemPrompt,omitempty"`
|
SystemPrompt string `yaml:"systemPrompt,omitempty"`
|
||||||
SystemPromptFile string `yaml:"systemPromptFile,omitempty"`
|
SystemPromptFile string `yaml:"systemPromptFile,omitempty"`
|
||||||
// CLI only
|
Agent string `yaml:"agent"`
|
||||||
Agent string `yaml:"-"`
|
|
||||||
} `yaml:"defaults"`
|
} `yaml:"defaults"`
|
||||||
Conversations *struct {
|
Conversations *struct {
|
||||||
TitleGenerationModel *string `yaml:"titleGenerationModel" default:"gpt-3.5-turbo"`
|
TitleGenerationModel *string `yaml:"titleGenerationModel" default:"gpt-3.5-turbo"`
|
||||||
|
@ -37,6 +37,25 @@ func (m *AppModel) ClearConversation() {
|
|||||||
m.RootMessages = []api.Message{}
|
m.RootMessages = []api.Message{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *AppModel) ApplySystemPrompt() {
|
||||||
|
var system string
|
||||||
|
agent := m.Ctx.GetAgent(m.Ctx.Config.Defaults.Agent)
|
||||||
|
if agent != nil && agent.SystemPrompt != "" {
|
||||||
|
system = agent.SystemPrompt
|
||||||
|
}
|
||||||
|
if system == "" {
|
||||||
|
system = m.Ctx.DefaultSystemPrompt()
|
||||||
|
}
|
||||||
|
if system != "" {
|
||||||
|
m.Messages = api.ApplySystemPrompt(m.Messages, system, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *AppModel) NewConversation() {
|
||||||
|
m.ClearConversation()
|
||||||
|
m.ApplySystemPrompt()
|
||||||
|
}
|
||||||
|
|
||||||
func (m *AppModel) LoadConversations() (error, []LoadedConversation) {
|
func (m *AppModel) LoadConversations() (error, []LoadedConversation) {
|
||||||
messages, err := m.Ctx.Store.LatestConversationMessages()
|
messages, err := m.Ctx.Store.LatestConversationMessages()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -38,6 +38,7 @@ func initialModel(ctx *lmcli.Context, opts LaunchOptions) *Model {
|
|||||||
Ctx: ctx,
|
Ctx: ctx,
|
||||||
Conversation: opts.InitialConversation,
|
Conversation: opts.InitialConversation,
|
||||||
}
|
}
|
||||||
|
app.NewConversation()
|
||||||
|
|
||||||
m := Model{
|
m := Model{
|
||||||
App: app,
|
App: app,
|
||||||
|
@ -139,17 +139,6 @@ func Chat(app *model.AppModel) *Model {
|
|||||||
m.replyCursor.SetChar(" ")
|
m.replyCursor.SetChar(" ")
|
||||||
m.replyCursor.Focus()
|
m.replyCursor.Focus()
|
||||||
|
|
||||||
system := app.Ctx.DefaultSystemPrompt()
|
|
||||||
|
|
||||||
agent := app.Ctx.GetAgent(app.Ctx.Config.Defaults.Agent)
|
|
||||||
if agent != nil && agent.SystemPrompt != "" {
|
|
||||||
system = agent.SystemPrompt
|
|
||||||
}
|
|
||||||
|
|
||||||
if system != "" {
|
|
||||||
m.App.Messages = api.ApplySystemPrompt(m.App.Messages, system, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
m.input.Focus()
|
m.input.Focus()
|
||||||
m.input.MaxHeight = 0
|
m.input.MaxHeight = 0
|
||||||
m.input.CharLimit = 0
|
m.input.CharLimit = 0
|
||||||
|
@ -53,7 +53,7 @@ func (m *Model) handleInput(msg tea.KeyMsg) tea.Cmd {
|
|||||||
m.updateContent()
|
m.updateContent()
|
||||||
return shared.KeyHandled(msg)
|
return shared.KeyHandled(msg)
|
||||||
case "ctrl+n":
|
case "ctrl+n":
|
||||||
m.App.ClearConversation()
|
m.App.NewConversation()
|
||||||
m.rebuildMessageCache()
|
m.rebuildMessageCache()
|
||||||
m.updateContent()
|
m.updateContent()
|
||||||
return shared.KeyHandled(msg)
|
return shared.KeyHandled(msg)
|
||||||
|
@ -97,7 +97,7 @@ func (m *Model) handleInput(msg tea.KeyMsg) tea.Cmd {
|
|||||||
}
|
}
|
||||||
return shared.KeyHandled(msg)
|
return shared.KeyHandled(msg)
|
||||||
case "n":
|
case "n":
|
||||||
m.App.ClearConversation()
|
m.App.NewConversation()
|
||||||
return shared.ChangeView(shared.ViewChat)
|
return shared.ChangeView(shared.ViewChat)
|
||||||
case "d":
|
case "d":
|
||||||
if !m.confirmPrompt.Focused() && len(m.App.Conversations) > 0 && m.cursor < len(m.App.Conversations) {
|
if !m.confirmPrompt.Focused() && len(m.App.Conversations) > 0 && m.cursor < len(m.App.Conversations) {
|
||||||
|
Loading…
Reference in New Issue
Block a user