Skip to content

Commit c986085

Browse files
committed
Improve ollama integration + context
1 parent 9b4f969 commit c986085

5 files changed

Lines changed: 14 additions & 14 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
- Add native tools: filesystem
66
- Add MCP/tool support for ollama models.
7+
- Improve ollama integration only requiring `ollama serve` to be running.
8+
- Improve chat history and context passed to ollama.
79

810
## 0.1.0
911

src/eca/llm_api.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
(set! *warn-on-reflection* true)
1111

1212
(defn extra-models [config]
13-
(llm-providers.ollama/list-running-models {:host (:host (:ollama config))
14-
:port (:port (:ollama config))}))
13+
(llm-providers.ollama/list-models {:host (:host (:ollama config))
14+
:port (:port (:ollama config))}))
1515

1616
(defn refine-file-context [path]
1717
;; TODO ask LLM for the most relevant parts of the path

src/eca/llm_providers/anthropic.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
:or {max-tokens 1024
6363
temperature 1.0}}
6464
{:keys [on-message-received on-error on-prepare-tool-call on-tool-called]}]
65-
(let [messages (vec (conj past-messages {:role "user" :content user-prompt}))
65+
(let [messages (conj (vec past-messages) {:role "user" :content user-prompt})
6666
body {:model model
6767
:messages messages
6868
:max_tokens max-tokens

src/eca/llm_providers/ollama.clj

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,21 @@
1111
(def ^:private logger-tag "[OLLAMA]")
1212

1313
(def ^:private chat-url "%s/api/chat")
14-
(def ^:private list-running-models-url "%s/api/ps")
14+
(def ^:private list-models-url "%s/api/tags")
1515

1616
(defn ^:private base-url [host port]
1717
(or (System/getenv "OLLAMA_API_BASE")
1818
(str host ":" port)))
1919

20-
(defn list-running-models [{:keys [host port]}]
20+
(defn list-models [{:keys [host port]}]
2121
(try
2222
(let [{:keys [status body]} (http/get
23-
(format list-running-models-url (base-url host port))
23+
(format list-models-url (base-url host port))
2424
{:throw-exceptions? false
2525
:as :json})]
2626
(if (= 200 status)
2727
(do
28-
(llm-util/log-response logger-tag "api_ps" body)
28+
(llm-util/log-response logger-tag "api/tags" body)
2929
(:models body))
3030
(do
3131
(logger/warn logger-tag "Unknown status code:" status)
@@ -34,9 +34,6 @@
3434
(logger/warn logger-tag "Error listing running models:" (ex-message e))
3535
[])))
3636

37-
(defn ^:private ->message-with-context [context user-prompt]
38-
(format "%s\nThe user is asking: '%s'" context user-prompt))
39-
4037
(defn ^:private base-completion-request! [{:keys [url body on-error on-response]}]
4138
(logger/debug logger-tag (format "Sending body: '%s', url: '%s'" body url))
4239
(http/post
@@ -67,9 +64,10 @@
6764

6865
(defn completion! [{:keys [model user-prompt context host port past-messages tools]}
6966
{:keys [on-message-received on-error on-prepare-tool-call on-tool-called]}]
70-
(let [messages (if (empty? past-messages)
71-
[{:role "user" :content (->message-with-context context user-prompt)}]
72-
(conj past-messages {:role "user" :content user-prompt}))
67+
(let [messages (concat
68+
[{:role "system" :content context}]
69+
past-messages
70+
[{:role "user" :content user-prompt}])
7371
body {:model model
7472
:messages messages
7573
:think false

src/eca/llm_providers/openai.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
(defn completion! [{:keys [model user-prompt context temperature api-key past-messages tools web-search]
5050
:or {temperature 1.0}}
5151
{:keys [on-message-received on-error on-prepare-tool-call on-tool-called on-reason]}]
52-
(let [input (conj past-messages {:role "user" :content user-prompt})
52+
(let [input (conj (vec past-messages) {:role "user" :content user-prompt})
5353
tools (cond-> tools
5454
web-search (conj {:type "web_search_preview"}))
5555
body {:model model

0 commit comments

Comments
 (0)