37 lines
1.4 KiB
Common Lisp
37 lines
1.4 KiB
Common Lisp
#!/usr/bin/env sbcl --script
|
|
|
|
;;; Hermes AI Non-Streaming Example
|
|
;;; Uses Dexador HTTP client and Jonathan JSON library
|
|
|
|
(load "~/quicklisp/setup.lisp")
|
|
(ql:quickload '(:dexador :jonathan) :silent t)
|
|
|
|
(defparameter *base-url* "https://hermes.ai.unturf.com/v1/chat/completions")
|
|
(defparameter *model* "adamo1139/Hermes-3-Llama-3.1-8B-FP8-Dynamic")
|
|
|
|
(defun make-chat-request (prompt)
|
|
"Make a non-streaming chat completion request"
|
|
(let* ((payload (jonathan:to-json
|
|
(list :|model| *model*
|
|
:|messages| (vector (list :|role| "user"
|
|
:|content| prompt))
|
|
:|temperature| 0.5
|
|
:|max_tokens| 150
|
|
:|stream| :false)))
|
|
(response (dex:post *base-url*
|
|
:headers '(("Content-Type" . "application/json"))
|
|
:content payload)))
|
|
(let* ((parsed (jonathan:parse response))
|
|
(choice (aref (getf parsed :|choices|) 0))
|
|
(message (getf choice :|message|))
|
|
(content (getf message :|content|)))
|
|
content)))
|
|
|
|
;; Main execution
|
|
(handler-case
|
|
(progn
|
|
(format t "Requesting from Hermes AI...~%~%")
|
|
(let ((result (make-chat-request "Give a Python Fizzbuzz solution in one line of code?")))
|
|
(format t "Response: ~A~%" result)))
|
|
(error (e)
|
|
(format t "Error: ~A~%" e)))
|