diff --git a/cmd/llm/chat.go b/cmd/llm/chat.go index 42abf47..bd14f6e 100644 --- a/cmd/llm/chat.go +++ b/cmd/llm/chat.go @@ -19,6 +19,7 @@ type ChatCmd struct { Model string `arg:"" help:"Model name"` NoStream bool `flag:"nostream" help:"Disable streaming"` NoTools bool `flag:"nostream" help:"Disable tool calling"` + Prompt string `flag:"prompt" help:"Set the initial user prompt"` System string `flag:"system" help:"Set the system prompt"` } @@ -60,11 +61,17 @@ func (cmd *ChatCmd) Run(globals *Globals) error { // Continue looping until end of input for { - input, err := globals.term.ReadLine(model.Name() + "> ") - if errors.Is(err, io.EOF) { - return nil - } else if err != nil { - return err + var input string + if cmd.Prompt != "" { + input = cmd.Prompt + cmd.Prompt = "" + } else { + input, err = globals.term.ReadLine(model.Name() + "> ") + if errors.Is(err, io.EOF) { + return nil + } else if err != nil { + return err + } } // Ignore empty input diff --git a/cmd/llm/models.go b/cmd/llm/models.go index 1bb96ee..e304507 100644 --- a/cmd/llm/models.go +++ b/cmd/llm/models.go @@ -60,7 +60,7 @@ func (*ListAgentsCmd) Run(globals *Globals) error { return fmt.Errorf("No agents found") } - var agents []string + agents := make([]string, 0, len(agent.Agents())) for _, agent := range agent.Agents() { agents = append(agents, agent.Name()) } diff --git a/pkg/mistral/model.go b/pkg/mistral/model.go index 3093b91..24420b6 100644 --- a/pkg/mistral/model.go +++ b/pkg/mistral/model.go @@ -12,8 +12,8 @@ import ( // TYPES type model struct { - *Client - meta Model + *Client `json:"-"` + meta Model } type Model struct { diff --git a/pkg/ollama/model.go b/pkg/ollama/model.go index b3c1db5..94fb7d4 100644 --- a/pkg/ollama/model.go +++ b/pkg/ollama/model.go @@ -16,7 +16,7 @@ import ( // model is the implementation of the llm.Model interface type model struct { - *Client + *Client `json:"-"` ModelMeta } @@ -60,8 +60,12 @@ type PullStatus struct { /////////////////////////////////////////////////////////////////////////////// // STRINGIFY +func (m model) MarshalJSON() ([]byte, error) { + return json.Marshal(m.ModelMeta) +} + func (m model) String() string { - data, err := json.MarshalIndent(m.ModelMeta, "", " ") + data, err := json.MarshalIndent(m, "", " ") if err != nil { return err.Error() }