Rudy’s OBTF Rudolf Adamkovič

Home / Emacs / GPTel


Define emacs_lisp_evaluate_expression tool

(defun my-eval-string (string)
  "Evaluate STRING like `eval' does."
  (pcase-let ((`(,expression . ,length) (read-from-string string)))
    (unless (= (length string) length)
      (user-error "Invalid expression (did you forget `progn'?): %s" string))
    (eval expression)))
(with-eval-after-load 'gptel
  (add-to-list
   'gptel-tools
   (gptel-make-tool
    :category "Emacs"
    :name "emacs_lisp_evaluate_expression"
    :function (lambda (expression)
                ;; HACK Llama does not know what a sexp is.
                (let ((expression-fixed (format "(progn %s)" expression)))
                  (let ((inhibit-message t))
                    (message "LLM executing: %s" expression))
                  (my-eval-string expression)))
    :description "Evaluate Emacs Lisp symbolic expresssion"
    :args '(( :name "sexp"
              :type "string"
              :description "The expression to be evaluated.")))))

© 2025 Rudolf Adamkovič under GNU General Public License version 3.
Made with Emacs and secret alien technologies of yesteryear.