get config and is_tech working
This commit is contained in:
parent
77ae02c8b8
commit
8e0d00035a
5 changed files with 109 additions and 0 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -4,3 +4,7 @@ node_modules
|
|||
.yarn/
|
||||
nostr/*
|
||||
dist
|
||||
.clj-kondo/
|
||||
.lsp/
|
||||
config.edn
|
||||
.cpcache
|
||||
|
|
|
|||
25
build.clj
Normal file
25
build.clj
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
(ns build
|
||||
(:require [clojure.tools.build.api :as b]))
|
||||
|
||||
(def lib 'snippets)
|
||||
|
||||
(def class-dir "target/classes")
|
||||
(def uber-file (format "target/%s-standalone.jar" (name lib)))
|
||||
|
||||
;; delay to defer side effects (artifact downloads)
|
||||
(def basis (delay (b/create-basis {:project "deps.edn"})))
|
||||
|
||||
(defn clean [_]
|
||||
(b/delete {:path "target"}))
|
||||
|
||||
(defn uber [_]
|
||||
(clean nil)
|
||||
(b/copy-dir {:src-dirs ["src" "resources"]
|
||||
:target-dir class-dir})
|
||||
(b/compile-clj {:basis @basis
|
||||
:ns-compile '[snippets.main]
|
||||
:class-dir class-dir})
|
||||
(b/uber {:class-dir class-dir
|
||||
:uber-file uber-file
|
||||
:basis @basis
|
||||
:main 'snippets.main}))
|
||||
28
deps.edn
Normal file
28
deps.edn
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{:paths ["src"]
|
||||
:deps {clj-http/clj-http {:mvn/version "3.13.1"}
|
||||
;; logging
|
||||
com.taoensso/telemere {:mvn/version "1.0.0"}
|
||||
;; environment variables
|
||||
environ/environ {:mvn/version "1.2.0"}
|
||||
;; schema validation
|
||||
metosin/malli {:mvn/version "0.18.0"}
|
||||
;; json decoding
|
||||
cheshire/cheshire {:mvn/version "6.0.0"}
|
||||
;; metosin/muuntaja {:mvn/version "0.6.11"}
|
||||
org.clojure/clojure {:mvn/version "1.12.1"}}
|
||||
:aliases
|
||||
{;; Run with clj -T:build function-in-build
|
||||
:build {:deps {io.github.clojure/tools.build {:git/tag "v0.10.9" :git/sha "e405aac"}}
|
||||
:ns-default build}}}
|
||||
|
||||
;; :aliases
|
||||
;; {:dev {:extra-deps {com.biffweb/tasks {:git/url "https://github.com/jacobobryant/biff", :git/sha "1570ccc", :git/tag "v1.8.29", :deps/root "libs/tasks"}}
|
||||
;; :extra-paths ["dev" "test"]
|
||||
;; :jvm-opts ["-XX:-OmitStackTraceInFastThrow"
|
||||
;; "-XX:+CrashOnOutOfMemoryError"
|
||||
;; "-Dbiff.env.BIFF_PROFILE=dev"]
|
||||
;; :main-opts ["-m" "com.biffweb.task-runner" "tasks/tasks"]}
|
||||
;; :prod {:jvm-opts ["-XX:-OmitStackTraceInFastThrow"
|
||||
;; "-XX:+CrashOnOutOfMemoryError"
|
||||
;; "-Dbiff.env.BIFF_PROFILE=prod"]
|
||||
;; :main-opts ["-m" "snippets"]}}}
|
||||
26
src/micro_blog/config.clj
Normal file
26
src/micro_blog/config.clj
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
(ns micro-blog.config
|
||||
(:require [environ.core :refer [env]]))
|
||||
|
||||
(def ^:private env-overrides
|
||||
{:minstral-api-key "MISTRAL_API_KEY"})
|
||||
|
||||
(defn- load-config []
|
||||
(println "config is being loaded")
|
||||
(merge (read-string (slurp "config.edn"))
|
||||
(into {} (for [[k env-var] env-overrides
|
||||
:let [env-val (env env-var)]
|
||||
:when env-val]
|
||||
[k env-val]))))
|
||||
|
||||
(def config (atom (load-config)))
|
||||
|
||||
(defn reload-config []
|
||||
(reset! config (load-config)))
|
||||
|
||||
(comment
|
||||
;; Example usage:
|
||||
;; Access the config
|
||||
@config
|
||||
|
||||
;; Reload the config at runtime
|
||||
(reload-config))
|
||||
26
src/micro_blog/is_tech.clj
Normal file
26
src/micro_blog/is_tech.clj
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
(ns micro-blog.is-tech
|
||||
(:require
|
||||
[micro-blog.config :refer [config]]
|
||||
[clj-http.client :as client]))
|
||||
|
||||
(defn call-mistral-api [post-text]
|
||||
(let [url (str (:mistral-host @config) "/v1/conversations")
|
||||
headers {"Content-Type" "application/json"
|
||||
"Accept" "application/json"
|
||||
"Authorization" (str "Bearer " (@config :mistral-api-key))}
|
||||
body {:inputs post-text
|
||||
:stream false
|
||||
:agent_id (@config :mistral-agent-id)}]
|
||||
(->
|
||||
(client/post url {:headers headers
|
||||
:form-params body
|
||||
:content-type :json
|
||||
:as :json})
|
||||
:body
|
||||
:outputs
|
||||
first
|
||||
:content
|
||||
(#(if (= "1" %) true false)))))
|
||||
|
||||
(defn is-tech? [post-text]
|
||||
(call-mistral-api post-text))
|
||||
Loading…
Add table
Add a link
Reference in a new issue