Commit Graph

59 Commits

Author SHA1 Message Date
Matt Low 6249fbc8f8 Refactor streamed response handling
Update CreateChangeCompletionStream to return the entire response upon
stream completion. Renamed HandleDelayedResponse to
HandleDelayedContent, which no longer returns the content.

Removes the need wrapping HandleDelayedContent in an immediately invoked
function and the passing of the completed response over a channel. Also
allows us to better handle the case of partial a response.
2023-11-24 03:45:43 +00:00
Matt Low 303c4193cb Update README.md
Clarify planned features, we wouldn't want the model to have free access
to read any file in the system.
2023-11-23 17:44:57 +00:00
Matt Low a2bd911ac8 Add `retry` and `continue` commands 2023-11-22 06:53:22 +00:00
Matt Low cb9e27542e Add --system-prompt and --system-prompt-file flags
These allow to set a different system prompt for conversations and
one-shot prompts.

Also add a new `modelDefaults.systemPrompt` configuration key to define
the default system prompt, which can be overriden per-execution with the
--system-prompt or --system-prompt-file flags.
2023-11-22 04:45:06 +00:00
Matt Low db27a22347 Removed 'get' prefix from DataDir() and ConfigDir() 2023-11-22 03:17:13 +00:00
Matt Low c8a1e3e105 Allow message input from either args or editor on all relevant commands
Those (sub-)commands being: `new`, `reply`, and `prompt`
2023-11-20 16:50:56 +00:00
Matt Low b5f066ff34 Increase max token length for conversation title generation 2023-11-20 03:48:32 +00:00
Matt Low e6dcefacf5 Add syntax highlighting 2023-11-19 05:00:59 +00:00
Matt Low 815cb0c4b8 Bump dependencies 2023-11-19 04:56:40 +00:00
Matt Low 8780856854 Set config defaults using a "default" struct tag
Add new SetStructDefaults function to handle the "defaults" struct tag.

Only works on struct fields which are pointers (in order to be able to
distinguish between not set (nil) and zero values). So, the Config
struct has been updated to use pointer fields and we now need to
dereference those pointers to use them.
2023-11-19 04:37:14 +00:00
Matt Low 6426b04e2c Add RenderConversation to split out common message rendering logic 2023-11-18 16:17:13 +00:00
Matt Low 965043c908 Add --model flag to control which language model to use 2023-11-18 16:17:13 +00:00
Matt Low 8bc8312154 Add --length flag to control model output "maxTokens" 2023-11-18 16:17:13 +00:00
Matt Low 681b52a55c Handle empty reply 2023-11-18 16:17:13 +00:00
Matt Low 22e0ff4115 Alter format and add colouring to user/role message headings 2023-11-18 16:16:46 +00:00
Matt Low cac2a1e80c Removed blank line 2023-11-14 17:04:44 +00:00
Matt Low 6599af042b Minor refactor
- Use init() function to set up commands
- Expose an Execute() function instead of the root command
2023-11-14 17:04:12 +00:00
Matt Low dd5f166767 Update README.md 2023-11-14 05:50:41 +00:00
Matt Low 90d85e676d Implement `lmcli reply` 2023-11-14 02:09:09 +00:00
Matt Low ec013236b8 Small cleanup/fix 2023-11-14 02:08:20 +00:00
Matt Low 6fde3f8932 Add "last 6 hours" to `lmcli ls` categories 2023-11-13 06:56:14 +00:00
Matt Low 6af9377cf5 Implement `lmcli rm` 2023-11-13 06:56:05 +00:00
Matt Low cf0e98f656 Generate titles for new conversations 2023-11-13 06:39:06 +00:00
Matt Low e66016aedd Sort conversations properly in `lmcli ls` 2023-11-13 06:35:57 +00:00
Matt Low 9a1aae83da Update go.mod to go 1.21 2023-11-13 06:33:47 +00:00
Matt Low b0e4739f4f Fixed `lmcli view` completions
- Don't return completions if an arg is already present
- Fixed typo in method name
2023-11-13 05:27:21 +00:00
Matt Low 4e3976fc73 Remove Get prefix from Store methods
It feels better this way (and to the rest of Go, apparently)
2023-11-13 00:20:54 +00:00
Matt Low b87c3ffc53 Implement `lmcli view [conversation]` with completions
Separate out logic to retrieve a message's "friendly" role (System,
User, Assistant)
2023-11-12 23:33:16 +00:00
Matt Low b0a1299e0b Implement `lmcli ls` 2023-11-12 14:30:42 -07:00
Matt Low ae424530f9 Parameterize the openai model used
Add `openai.defaultConfig` to set the default, will allow overriding
with CLI flag
2023-11-09 06:07:52 +00:00
Matt Low 168e0cf5d3 Parameterize maxTokens
Minor formatting/commet changes
2023-11-05 18:45:12 +00:00
Matt Low 9c9b8fa412 Refactor Store/Config initialization
Renamed initialize functions from `Initialize*` to `New*`, return an
error from them instead of using Fatal.
2023-11-05 17:44:16 +00:00
Matt Low 1bfdeb23ec Add README.md 2023-11-05 09:22:09 +00:00
Matt Low 6eca84dab8 Pull message rendering into its own method 2023-11-05 08:50:07 +00:00
Matt Low 2c64ab501b Treat the system message like any other
Removed the system parameter on ChatCopmletion functions, and persist it
in conversations as well.
2023-11-05 07:55:07 +00:00
Matt Low 3d518efd6f Implement persistence for `lmcli new` 2023-11-05 07:47:24 +00:00
Matt Low 78bcc11a4b Update HandleDelayedResponse to return to complete output 2023-11-05 07:40:55 +00:00
Matt Low 1ac8f7d046 Trim content before returning InputFromEditor 2023-11-05 07:22:45 +00:00
Matt Low bb895460ad Formatting 2023-11-05 06:55:38 +00:00
Matt Low b46bbef80b Spelling 2023-11-05 06:51:56 +00:00
Matt Low 794ccc52ff Show waiting animation while waiting for LLM response 2023-11-05 06:50:28 +00:00
Matt Low 200ec57f29 Run gofmt/goimports on go sources 2023-11-04 22:56:31 +00:00
Matt Low 4590f1db38 Better `lmcli prompt` input handling 2023-11-04 22:53:09 +00:00
Matt Low 6465ce5146 Trim placeholder from input via InputFromEditor 2023-11-04 22:52:48 +00:00
Matt Low ca45159ec3 Change `msgCmd` to `replyCmd` 2023-11-04 22:37:51 +00:00
Matt Low 5c6ec5e4e2 Include system prompt in OpenAI chat completion requests 2023-11-04 22:29:53 +00:00
Matt Low 04478cbbd1 Refactor store and config handling
- Moved global `store` and `config` variables to cli.go
- Add Fatal() function for outputting an error and exiting
2023-11-04 14:22:16 -06:00
Matt Low 9f75be615e Update .gitignore 2023-11-04 13:35:23 -06:00
Matt Low 16454a0bbd Project restructure
Moved source files into cmd/ and pkg/ directories
2023-11-04 13:35:23 -06:00
Matt Low f91ae88fcd Add config file handling, get OpenAPI API key using it 2023-11-04 18:49:01 +00:00