Plaster
New
List
Login
common-lisp
default
anonymous
2025.02.09 01:43:03
(defun request (method path &key content) (declare (type (member :get :head :options :put :post :delete) method) (type (string) path)) (let* ((url (quri:merge-uris path *base-url*)) (headers `(("Authorization" . ,(format nil "Bearer ~A" *api-key*)) ("Content-Type" . "application/json")))) (multiple-value-bind (response code headers effective-url) (dex:request url :method method :content content :headers headers) (declare (ignore code headers effective-url)) response))) (defun /chat/completions (messages model &rest args) (declare (type message-list messages) (type string model)) (let* ((args (remove-if #'null args)) (content (plist-hash-table args))) (setf (gethash "model" content) model) (setf (gethash "messages" content) messages) (jzon:parse (request :post "chat/completions" :content (jzon:stringify content))))) (defun chat-completions (messages model &rest args) (multiple-value-bind (response) (funcall '/chat/completions messages model args) (values (accesses response "choices" 0 "message" "content") response)))
Raw
Annotate
Repaste
Edit