Refactor aicommit.clj to utilize OpenAI's chat completion API for generating commit messages using groq.

Adding Cheshire core dependency for JSON parsing and generation
This commit is contained in:
ilguappo 2024-08-10 08:12:05 -07:00
parent abd32275ba
commit 5fb26e6220
Signed by: ilguappo
GPG Key ID: 98486F29C8969FD0

View File

@ -1,9 +1,10 @@
#!/usr/bin/env bb
(require '[babashka.curl :as curl]
'[babashka.process :as p])
(require '[babashka.curl :as curl]
'[babashka.process :as p]
'[cheshire.core :as json])
(def url "https://speedtest-ams2.digtalocean.com/")
(def url "https://api.groq.com/openai/v1/chat/completions")
(def system-msg "
You are an expert programmer that values clear, unambiguous communication and are specialized in generating concise and informative git commit messages.
@ -13,6 +14,24 @@ It is very important that the entire commit is clear and understandable.
Only reply with the commit message and nothing else.
")
(def diff (p/check (p/sh "git" "diff" "--cached")))
(def diff (:out (p/check (p/sh "git" "diff" "--cached"))))
(println diff)
(def message (json/generate-string
{:messages [{:role "system" :content system-msg}
{:role "user" :content diff}]
:model "llama-3.1-70b-versatile"
:temperature 1
:max_tokens 1024
:top_p 1
:stream false
:stop nil}))
(def response
(curl/post url
{:headers {"Content-Type" "application/json"
"Authorization" (str "Bearer " (System/getenv "GROQ_API_KEY"))}
:body message}))
(def content (get-in (:choices (json/parse-string (:body response) true)) [0 :message :content]))
(println content)