- Updated 22 skill org files to use %%SKILLS_DIR%% placeholder - Modified opencortex.sh setup to replace placeholder with XDG path - Modified doctor_repair to handle placeholder replacement - Removed hardcoded absolute path
38 lines
1.4 KiB
Org Mode
38 lines
1.4 KiB
Org Mode
#+TITLE: SKILL: Llama Backend (org-skill-llama-backend.org)
|
|
#+AUTHOR: Agent
|
|
#+FILETAGS: :skill:llm:backend:ollama:
|
|
#+PROPERTY: header-args:lisp :tangle %%SKILLS_DIR%%/org-skill-llama-backend.lisp
|
|
|
|
* Overview
|
|
The *Llama Backend* skill provides the actual implementation for calling local models via Ollama.
|
|
|
|
* Implementation
|
|
|
|
** Ollama API Call (ollama-call)
|
|
#+begin_src lisp
|
|
(defun ollama-call (prompt system-prompt &key (model "llama3"))
|
|
"Sends a request to the local Ollama API."
|
|
(let* ((host (or (uiop:getenv "OLLAMA_HOST") "localhost:11434"))
|
|
(url (format nil "http://~a/api/generate" host))
|
|
(payload (cl-json:encode-json-to-string
|
|
`((model . ,model)
|
|
(prompt . ,prompt)
|
|
(system . ,system-prompt)
|
|
(stream . nil)))))
|
|
(handler-case
|
|
(let ((response (dex:post url :content payload :headers '(("Content-Type" . "application/json")))))
|
|
(let ((data (cl-json:decode-json-from-string response)))
|
|
(list :status :success :content (getf data :response))))
|
|
(error (c)
|
|
(list :status :error :message (format nil "Ollama Failure: ~a" c))))))
|
|
#+end_src
|
|
|
|
** Skill Registration
|
|
#+begin_src lisp
|
|
(register-probabilistic-backend :ollama #'ollama-call)
|
|
|
|
(defskill :skill-llama-backend
|
|
:priority 50
|
|
:trigger (lambda (ctx) (declare (ignore ctx)) nil))
|
|
#+end_src
|