|
33 | 33 |
|
34 | 34 | (defn ^:private provider-api-key [provider provider-auth config] |
35 | 35 | (or (get-in config [:providers (name provider) :key]) |
36 | | - (:api-token provider-auth) |
| 36 | + (:api-key provider-auth) |
37 | 37 | (some-> (get-in config [:providers (name provider) :keyEnv]) config/get-env))) |
38 | 38 |
|
39 | 39 | (defn ^:private provider-api-url [provider config] |
|
110 | 110 | extra-payload (:extraPayload model-config) |
111 | 111 | provider-api-key (provider-api-key provider provider-auth config) |
112 | 112 | provider-api-url (provider-api-url provider config) |
| 113 | + provider-auth-type (:type provider-auth) |
113 | 114 | callbacks {:on-message-received on-message-received-wrapper |
114 | 115 | :on-error on-error-wrapper |
115 | 116 | :on-prepare-tool-call on-prepare-tool-call-wrapper |
|
120 | 121 | (cond |
121 | 122 | (= "openai" provider) |
122 | 123 | (llm-providers.openai/completion! |
123 | | - {:model model |
124 | | - :instructions instructions |
125 | | - :user-messages user-messages |
126 | | - :max-output-tokens max-output-tokens |
127 | | - :reason? reason? |
128 | | - :past-messages past-messages |
129 | | - :tools tools |
130 | | - :web-search web-search |
131 | | - :extra-payload extra-payload |
132 | | - :api-url provider-api-url |
133 | | - :api-key provider-api-key} |
134 | | - callbacks) |
| 124 | + {:model model |
| 125 | + :instructions instructions |
| 126 | + :user-messages user-messages |
| 127 | + :max-output-tokens max-output-tokens |
| 128 | + :reason? reason? |
| 129 | + :past-messages past-messages |
| 130 | + :tools tools |
| 131 | + :web-search web-search |
| 132 | + :extra-payload extra-payload |
| 133 | + :api-url provider-api-url |
| 134 | + :api-key provider-api-key} |
| 135 | + callbacks) |
135 | 136 |
|
136 | 137 | (= "anthropic" provider) |
137 | 138 | (llm-providers.anthropic/completion! |
138 | | - {:model model |
139 | | - :instructions instructions |
140 | | - :user-messages user-messages |
141 | | - :max-output-tokens max-output-tokens |
142 | | - :reason? reason? |
143 | | - :past-messages past-messages |
144 | | - :tools tools |
145 | | - :web-search web-search |
146 | | - :extra-payload extra-payload |
147 | | - :api-url provider-api-url |
148 | | - :api-key provider-api-key} |
149 | | - callbacks) |
| 139 | + {:model model |
| 140 | + :instructions instructions |
| 141 | + :user-messages user-messages |
| 142 | + :max-output-tokens max-output-tokens |
| 143 | + :reason? reason? |
| 144 | + :past-messages past-messages |
| 145 | + :tools tools |
| 146 | + :web-search web-search |
| 147 | + :extra-payload extra-payload |
| 148 | + :api-url provider-api-url |
| 149 | + :api-key provider-api-key |
| 150 | + :auth-type provider-auth-type} |
| 151 | + callbacks) |
150 | 152 |
|
151 | 153 | (= "github-copilot" provider) |
152 | 154 | (llm-providers.openai-chat/completion! |
153 | | - {:model model |
154 | | - :instructions instructions |
155 | | - :user-messages user-messages |
156 | | - :max-output-tokens max-output-tokens |
157 | | - :reason? reason? |
158 | | - :past-messages past-messages |
159 | | - :tools tools |
160 | | - :extra-payload extra-payload |
161 | | - :api-url provider-api-url |
162 | | - :api-key provider-api-key |
163 | | - :extra-headers {"openai-intent" "conversation-panel" |
164 | | - "x-request-id" (str (random-uuid)) |
165 | | - "vscode-sessionid" "" |
166 | | - "vscode-machineid" "" |
167 | | - "copilot-integration-id" "vscode-chat"}} |
168 | | - callbacks) |
| 155 | + {:model model |
| 156 | + :instructions instructions |
| 157 | + :user-messages user-messages |
| 158 | + :max-output-tokens max-output-tokens |
| 159 | + :reason? reason? |
| 160 | + :past-messages past-messages |
| 161 | + :tools tools |
| 162 | + :extra-payload extra-payload |
| 163 | + :api-url provider-api-url |
| 164 | + :api-key provider-api-key |
| 165 | + :extra-headers {"openai-intent" "conversation-panel" |
| 166 | + "x-request-id" (str (random-uuid)) |
| 167 | + "vscode-sessionid" "" |
| 168 | + "vscode-machineid" "" |
| 169 | + "copilot-integration-id" "vscode-chat"}} |
| 170 | + callbacks) |
169 | 171 |
|
170 | 172 | (= "ollama" provider) |
171 | 173 | (llm-providers.ollama/completion! |
172 | | - {:api-url provider-api-url |
173 | | - :reason? (:reason? model-capabilities) |
174 | | - :model model |
175 | | - :instructions instructions |
176 | | - :user-messages user-messages |
177 | | - :past-messages past-messages |
178 | | - :tools tools |
179 | | - :extra-payload extra-payload} |
180 | | - callbacks) |
| 174 | + {:api-url provider-api-url |
| 175 | + :reason? (:reason? model-capabilities) |
| 176 | + :model model |
| 177 | + :instructions instructions |
| 178 | + :user-messages user-messages |
| 179 | + :past-messages past-messages |
| 180 | + :tools tools |
| 181 | + :extra-payload extra-payload} |
| 182 | + callbacks) |
181 | 183 |
|
182 | 184 | model-config |
183 | 185 | (let [provider-fn (case (:api provider-config) |
|
188 | 190 | (on-error-wrapper {:message (format "Unknown model %s for provider %s" (:api provider-config) provider)})) |
189 | 191 | url-relative-path (:completionUrlRelativePath provider-config)] |
190 | 192 | (provider-fn |
191 | | - {:model model |
192 | | - :instructions instructions |
193 | | - :user-messages user-messages |
194 | | - :max-output-tokens max-output-tokens |
195 | | - :reason? reason? |
196 | | - :past-messages past-messages |
197 | | - :tools tools |
198 | | - :extra-payload extra-payload |
199 | | - :url-relative-path url-relative-path |
200 | | - :api-url provider-api-url |
201 | | - :api-key provider-api-key} |
202 | | - callbacks)) |
| 193 | + {:model model |
| 194 | + :instructions instructions |
| 195 | + :user-messages user-messages |
| 196 | + :max-output-tokens max-output-tokens |
| 197 | + :reason? reason? |
| 198 | + :past-messages past-messages |
| 199 | + :tools tools |
| 200 | + :extra-payload extra-payload |
| 201 | + :url-relative-path url-relative-path |
| 202 | + :api-url provider-api-url |
| 203 | + :api-key provider-api-key} |
| 204 | + callbacks)) |
203 | 205 |
|
204 | 206 | :else |
205 | 207 | (on-error-wrapper {:message (format "ECA Unsupported model %s for provider %s" model provider)})) |
|
0 commit comments