From e29dbaf2a3fea2ce9f6f02ea1be7caa200020d49 Mon Sep 17 00:00:00 2001 From: Matt Low Date: Wed, 29 Nov 2023 05:10:44 +0000 Subject: [PATCH] Code deduplication --- pkg/cli/cmd.go | 91 +++++++++++++------------------------------------- 1 file changed, 24 insertions(+), 67 deletions(-) diff --git a/pkg/cli/cmd.go b/pkg/cli/cmd.go index 5cf311f..c09ad02 100644 --- a/pkg/cli/cmd.go +++ b/pkg/cli/cmd.go @@ -78,6 +78,22 @@ func LLMRequest(messages []Message) ([]Message, error) { return replies, err } +func (c *Conversation) GenerateAndSaveReplies(messages []Message) { + replies, err := LLMRequest(messages) + if err != nil { + Fatal("Error fetching LLM response: %v\n", err) + } + + for _, reply := range replies { + reply.ConversationID = c.ID + + err = store.SaveMessage(&reply) + if err != nil { + Warn("Could not save reply: %v\n", err) + } + } +} + // InputFromArgsOrEditor returns either the provided input from the args slice // (joined with spaces), or if len(args) is 0, opens an editor and returns // whatever input was provided there. placeholder is a string which populates @@ -318,24 +334,9 @@ var replyCmd = &cobra.Command{ messages = append(messages, userReply) RenderConversation(messages, true) - // output an message heading - (&Message{ - Role: MessageRoleAssistant, - }).RenderTTY() + (&Message{Role: MessageRoleAssistant}).RenderTTY() - replies, err := LLMRequest(messages) - if err != nil { - Fatal("Error fetching LLM response: %v\n", err) - } - - for _, reply := range replies { - reply.ConversationID = conversation.ID - - err = store.SaveMessage(&reply) - if err != nil { - Warn("Could not save reply: %v\n", err) - } - } + conversation.GenerateAndSaveReplies(messages) }, ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { compMode := cobra.ShellCompDirectiveNoFileComp @@ -382,25 +383,9 @@ var newCmd = &cobra.Command{ } RenderConversation(messages, true) + (&Message{Role: MessageRoleAssistant}).RenderTTY() - // output an message heading - (&Message{ - Role: MessageRoleAssistant, - }).RenderTTY() - - replies, err := LLMRequest(messages) - if err != nil { - Fatal("Error fetching LLM response: %v\n", err) - } - - for _, reply := range replies { - reply.ConversationID = conversation.ID - - err = store.SaveMessage(&reply) - if err != nil { - Warn("Could not save reply: %v\n", err) - } - } + conversation.GenerateAndSaveReplies(messages) err = conversation.GenerateTitle() if err != nil { @@ -485,23 +470,9 @@ var retryCmd = &cobra.Command{ messages = messages[:lastUserMessageIndex+1] RenderConversation(messages, true) - (&Message{ - Role: MessageRoleAssistant, - }).RenderTTY() + (&Message{Role: MessageRoleAssistant}).RenderTTY() - replies, err := LLMRequest(messages) - if err != nil { - Fatal("Error fetching LLM response: %v\n", err) - } - - for _, reply := range replies { - reply.ConversationID = conversation.ID - - err = store.SaveMessage(&reply) - if err != nil { - Warn("Could not save reply: %v\n", err) - } - } + conversation.GenerateAndSaveReplies(messages) }, ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { compMode := cobra.ShellCompDirectiveNoFileComp @@ -536,23 +507,9 @@ var continueCmd = &cobra.Command{ } RenderConversation(messages, true) - (&Message{ - Role: MessageRoleAssistant, - }).RenderTTY() + (&Message{Role: MessageRoleAssistant}).RenderTTY() - replies, err := LLMRequest(messages) - if err != nil { - Fatal("Error fetching LLM response: %v\n", err) - } - - for _, reply := range replies { - reply.ConversationID = conversation.ID - - err = store.SaveMessage(&reply) - if err != nil { - Warn("Could not save reply: %v\n", err) - } - } + conversation.GenerateAndSaveReplies(messages) }, ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) { compMode := cobra.ShellCompDirectiveNoFileComp