diff --git a/lisp/system-model-provider.lisp b/lisp/system-model-provider.lisp index 6d13c30..484f76c 100644 --- a/lisp/system-model-provider.lisp +++ b/lisp/system-model-provider.lisp @@ -52,32 +52,17 @@ (messages . (( (role . "system") (content . ,system-prompt) ) ( (role . "user") (content . ,prompt) ))))))) (handler-case - (let* ((result nil) - (lock (bt:make-lock "llm-lock")) - (cvar (bt:make-condition-variable)) - (thread (bt:make-thread - (lambda () - (unwind-protect - (handler-case - (let* ((response (dex:post url :headers headers :content body - :connect-timeout (min 10 timeout) - :read-timeout (max 10 (- timeout 5)))) - (json (cl-json:decode-json-from-string response)) - (choices (cdr (assoc :choices json))) - (first-choice (car choices)) - (message (cdr (assoc :message first-choice))) - (content (cdr (assoc :content message)))) - (setf result (list :status :success :content content))) - (error (c) - (setf result (list :status :error :message (format nil "~a Error: ~a" provider c))))) - (bt:with-lock-held (lock) - (bt:condition-notify cvar)))) - :name (format nil "llm-~a" provider)))) - (bt:with-lock-held (lock) - (unless result - (bt:condition-wait cvar lock :timeout timeout))) - (or result - (list :status :error :message (format nil "~a: Request timed out after ~d seconds" provider timeout)))) + (let* ((response (dex:post url :headers headers :content body + :connect-timeout (min 10 timeout) + :read-timeout (max 10 (- timeout 5)))) + (json (cl-json:decode-json-from-string response)) + (choices (cdr (assoc :choices json))) + (first-choice (car choices)) + (message (cdr (assoc :message first-choice))) + (content (cdr (assoc :content message)))) + (if content + (list :status :success :content content) + (list :status :error :message (format nil "~a: No content" provider)))) (error (c) (list :status :error :message (format nil "~a Failure: ~a" provider c)))))) diff --git a/org/system-model-provider.org b/org/system-model-provider.org index 8c03146..937dd0b 100644 --- a/org/system-model-provider.org +++ b/org/system-model-provider.org @@ -80,32 +80,17 @@ Providers register themselves at boot. No API key? That provider doesn't registe (messages . (( (role . "system") (content . ,system-prompt) ) ( (role . "user") (content . ,prompt) ))))))) (handler-case - (let* ((result nil) - (lock (bt:make-lock "llm-lock")) - (cvar (bt:make-condition-variable)) - (thread (bt:make-thread - (lambda () - (unwind-protect - (handler-case - (let* ((response (dex:post url :headers headers :content body - :connect-timeout (min 10 timeout) - :read-timeout (max 10 (- timeout 5)))) - (json (cl-json:decode-json-from-string response)) - (choices (cdr (assoc :choices json))) - (first-choice (car choices)) - (message (cdr (assoc :message first-choice))) - (content (cdr (assoc :content message)))) - (setf result (list :status :success :content content))) - (error (c) - (setf result (list :status :error :message (format nil "~a Error: ~a" provider c))))) - (bt:with-lock-held (lock) - (bt:condition-notify cvar)))) - :name (format nil "llm-~a" provider)))) - (bt:with-lock-held (lock) - (unless result - (bt:condition-wait cvar lock :timeout timeout))) - (or result - (list :status :error :message (format nil "~a: Request timed out after ~d seconds" provider timeout)))) + (let* ((response (dex:post url :headers headers :content body + :connect-timeout (min 10 timeout) + :read-timeout (max 10 (- timeout 5)))) + (json (cl-json:decode-json-from-string response)) + (choices (cdr (assoc :choices json))) + (first-choice (car choices)) + (message (cdr (assoc :message first-choice))) + (content (cdr (assoc :content message)))) + (if content + (list :status :success :content content) + (list :status :error :message (format nil "~a: No content" provider)))) (error (c) (list :status :error :message (format nil "~a Failure: ~a" provider c)))))) #+end_src