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/
|
.yarn/
|
||||||
nostr/*
|
nostr/*
|
||||||
dist
|
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