(requested string, models []string)
| 85 | } |
| 86 | |
| 87 | func resolveChatModel(requested string, models []string) (string, error) { |
| 88 | switch { |
| 89 | case requested == "" && len(models) == 0: |
| 90 | return "", errors.New(`no chat models are installed. |
| 91 | |
| 92 | Install a model first, for example: |
| 93 | local-ai models list |
| 94 | local-ai models install <model> |
| 95 | local-ai run |
| 96 | |
| 97 | Then start a chat session: |
| 98 | local-ai chat --model <model>`) |
| 99 | case requested == "" && len(models) == 1: |
| 100 | return models[0], nil |
| 101 | case requested == "" && len(models) > 1: |
| 102 | var b strings.Builder |
| 103 | b.WriteString("multiple models are available; choose one with --model:\n") |
| 104 | b.WriteString(formatChatModelList(models, "")) |
| 105 | return "", errors.New(b.String()) |
| 106 | case !modelExists(models, requested): |
| 107 | return "", fmt.Errorf("model %q is not available. Use `local-ai models list` and `local-ai models install <model>`, or pass an installed model with --model", requested) |
| 108 | default: |
| 109 | return requested, nil |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | func modelExists(models []string, name string) bool { |
| 114 | for _, model := range models { |
no test coverage detected