|
80 | 80 | :type "function")) |
81 | 81 |
|
82 | 82 | (defn complete! |
83 | | - [{:keys [model model-config instructions reason? user-messages config on-first-response-received |
| 83 | + [{:keys [model provider model-config instructions reason? user-messages config on-first-response-received |
84 | 84 | on-message-received on-error on-prepare-tool-call on-tools-called on-reason on-usage-updated |
85 | 85 | past-messages tools]}] |
86 | 86 | (let [first-response-received* (atom false) |
|
105 | 105 | (mapv tool->llm-tool tools)) |
106 | 106 | web-search (:web-search model-config) |
107 | 107 | max-output-tokens (:max-output-tokens model-config) |
108 | | - reason-tokens (:reason-tokens model-config) |
109 | 108 | custom-providers (:customProviders config) |
110 | 109 | custom-models (set (mapcat (fn [[k v]] |
111 | 110 | (map #(str (name k) "/" %) (:models v))) |
|
118 | 117 | :on-reason on-reason-wrapper |
119 | 118 | :on-usage-updated on-usage-updated}] |
120 | 119 | (cond |
121 | | - (contains? #{"o4-mini" |
122 | | - "o3" |
123 | | - "gpt-4.1" |
124 | | - "gpt-5" |
125 | | - "gpt-5-mini" |
126 | | - "gpt-5-nano"} model) |
| 120 | + (= "openai" provider) |
127 | 121 | (llm-providers.openai/completion! |
128 | 122 | {:model model |
129 | 123 | :instructions instructions |
130 | 124 | :user-messages user-messages |
131 | 125 | :max-output-tokens max-output-tokens |
132 | | - :reason-tokens reason-tokens |
133 | 126 | :reason? (and reason? (:reason? model-config)) |
134 | 127 | :past-messages past-messages |
135 | 128 | :tools tools |
|
139 | 132 | :api-key (openai-api-key config)} |
140 | 133 | callbacks) |
141 | 134 |
|
142 | | - (contains? #{"claude-sonnet-4-0" |
143 | | - "claude-opus-4-0" |
144 | | - "claude-opus-4-1" |
145 | | - "claude-3-5-haiku-latest"} model) |
| 135 | + (= "anthropic" provider) |
146 | 136 | (llm-providers.anthropic/completion! |
147 | 137 | {:model model |
148 | 138 | :instructions instructions |
149 | 139 | :user-messages user-messages |
150 | 140 | :max-output-tokens max-output-tokens |
151 | | - :reason-tokens reason-tokens |
152 | 141 | :reason? (and reason? (:reason? model-config)) |
153 | 142 | :past-messages past-messages |
154 | 143 | :tools tools |
|
177 | 166 | provider-fn (case (:api provider-config) |
178 | 167 | "openai" llm-providers.openai/completion! |
179 | 168 | "anthropic" llm-providers.anthropic/completion! |
180 | | - (on-error-wrapper {:msg (format "Unknown custom model %s for provider %s" (:api provider-config) provider)})) |
| 169 | + (on-error-wrapper {:message (format "Unknown custom model %s for provider %s" (:api provider-config) provider)})) |
181 | 170 | url (or (:url provider-config) (config/get-env (:urlEnv provider-config))) |
182 | 171 | key (or (:key provider-config) (config/get-env (:keyEnv provider-config)))] |
183 | 172 | (provider-fn |
184 | 173 | {:model model |
185 | 174 | :instructions instructions |
186 | 175 | :user-messages user-messages |
187 | 176 | :max-output-tokens max-output-tokens |
188 | | - :reason-tokens reason-tokens |
189 | 177 | :reason? (and reason? (:reason? model-config)) |
190 | 178 | :past-messages past-messages |
191 | 179 | :web-search web-search |
|
196 | 184 | callbacks)) |
197 | 185 |
|
198 | 186 | :else |
199 | | - (on-error-wrapper {:msg (str "ECA Unsupported model: " model)})))) |
| 187 | + (on-error-wrapper {:message (str "ECA Unsupported model: " model)})))) |
0 commit comments