File tree Expand file tree Collapse file tree 7 files changed +40
-8
lines changed
Expand file tree Collapse file tree 7 files changed +40
-8
lines changed Original file line number Diff line number Diff line change 66- Add web_search capability
77- Add ` o3 ` model support.
88- Support custom API urls for OpenAI and Anthropic
9+ - Add ` --log-level <level> ` option for better debugging.
910
1011## 0.0.3
1112
Original file line number Diff line number Diff line change 7272 content-block* (atom nil )
7373 on-response-fn
7474 (fn handle-response [event data]
75+ (llm-util/log-response logger-tag event data)
7576 (case event
7677 " content_block_delta" (case (-> data :delta :type )
7778 " text_delta" (on-message-received {:type :text
Original file line number Diff line number Diff line change 22 (:require
33 [cheshire.core :as json]
44 [clojure.java.io :as io]
5+ [eca.llm-util :as llm-util]
56 [eca.logger :as logger]
67 [hato.client :as http]))
78
2324 {:throw-exceptions? false
2425 :as :json })]
2526 (if (= 200 status)
26- (:models body)
27+ (do
28+ (llm-util/log-response logger-tag " api_ps" body)
29+ (:models body))
2730 (do
2831 (logger/warn logger-tag " Unknown status code:" status)
2932 [])))
7275 :stream true }
7376 url (format chat-url (base-url host port))
7477 on-response-fn (fn handle-response [data]
78+ (llm-util/log-response logger-tag " chat" data)
7579 (let [{:keys [message done_reason]} data]
7680 (on-message-received
7781 (cond-> {}
Original file line number Diff line number Diff line change 5757 web-search (conj {:type " web_search_preview" }))
5858 :stream true }
5959 on-response-fn (fn handle-response [event data]
60+ (llm-util/log-response logger-tag event data)
6061 (case event
6162 " response.output_text.delta" (on-message-received {:type :text
6263 :text (:delta data)})
Original file line number Diff line number Diff line change 11(ns eca.llm-util
22 (:require
33 [cheshire.core :as json]
4- [clojure.string :as string])
4+ [clojure.string :as string]
5+ [eca.logger :as logger])
56 (:import
67 [java.io BufferedReader]))
78
1415 (cons [(subs event 7 )
1516 (json/parse-string (subs data 6 ) true )]
1617 (lazy-seq (event-data-seq rdr))))))))
18+
19+ (defn log-response [tag event data]
20+ (logger/debug tag event data))
Original file line number Diff line number Diff line change 22
33(set! *warn-on-reflection* true )
44
5- (defn ^:private stderr-print [& args]
6- (binding [*out* *err*]
7- (apply println args)))
5+ (def ^:dynamic *level* :info )
6+
7+ (def ^:private level->value
8+ {:error 1
9+ :warn 2
10+ :info 3
11+ :debug 4 })
12+
13+ (defn ^:private stderr-print [level & args]
14+ (when (<= (level->value level) (level->value *level*))
15+ (binding [*out* *err*]
16+ (apply println args))))
817
9- ; ; TODO create better logger capability.
1018(defn info [& args]
11- (apply stderr-print args))
19+ (apply stderr-print :info args))
1220
1321(defn warn [& args]
14- (apply stderr-print args))
22+ (apply stderr-print :warn args))
23+
24+ (defn debug [& args]
25+ (apply stderr-print :debug args))
1526
1627(defn format-time-delta-ms [start-time end-time]
1728 (format " %.0fms" (float (/ (- end-time start-time) 1000000 ))))
Original file line number Diff line number Diff line change 66 [borkdude.dynaload]
77 [clojure.string :as string]
88 [eca.config :as config]
9+ [eca.logger :as logger]
910 [eca.server :as server]))
1011
1112(set! *warn-on-reflection* true )
3738 (str " The following errors occurred while parsing your command:\n\n "
3839 (string/join \newline errors)))
3940
41+ (def log-levels #{" error" " warn" " info" " debug" })
42+
4043(def cli-spec
4144 {:order [:help :version :verbose ]
4245 :spec {:help {:alias :h
4346 :desc " Print the available commands and its options" }
4447 :version {:desc " Print eca version" }
48+ :log-level {:ref " <LEVEL>"
49+ :desc " The log level of eca logs, accepts. Defaults to 'info'."
50+ :default " info"
51+ :validate {:pred log-levels
52+ :ex-msg (fn [{:keys [_option _value]}]
53+ (format " Must be in %s" log-levels))}}
4554 :verbose {:desc " Use stdout for eca logs instead of default log settings" }}})
4655
4756(defn ^:private parse-opts
8190(defn ^:private handle-action!
8291 [action options]
8392 (when (= " server" action)
93+ (alter-var-root #'logger/*level* (constantly (keyword (:log-level options))))
8494 (let [finished @(server/run-io-server! (:verbose options))]
8595 {:result-code (if (= :done finished) 0 1 )})))
8696
You can’t perform that action at this time.
0 commit comments