Bosquet hat es sich zur Aufgabe gemacht, die Entwicklung von KI-Anwendungen zu vereinfachen. Alle nicht trivialen KI-Anwendungen müssen mit Eingabeaufforderungsvorlagen arbeiten, deren Komplexität schnell zunimmt, begrenzte LLM-Kontextfenster erfordern eine Speicherverwaltung und es werden Agenten benötigt, damit KI-Anwendungen mit der Außenwelt interagieren können.
Bosquet stellt Instrumente für die Arbeit mit diesen KI-Anwendungskonzepten bereit:
Vollständige Projektdokumentation (WIP)
Geheimnisse wie Schlüssel werden in der Datei secrets.edn
gespeichert und lokale Parameter werden in config.edn
gespeichert. Erstellen Sie eine Kopie der Dateien config.edn.sample
und config.edn.sample
. Ändern Sie es nach Bedarf.
Demo der Befehlszeilenschnittstelle
Führen Sie den folgenden Befehl aus, um CLI-Optionen abzurufen
clojure -M -m bosquet.cli
Legen Sie das Standardmodell mit fest
clojure -M -m bosquet.cli llms set --service openai --temperature 0 --model gpt-4
Vergessen Sie nicht, den API-SCHLÜSSEL für Ihren Dienst festzulegen (ändern Sie „openai“ bei Bedarf in einen anderen Namen).
clojure -M -m bosquet.cli keys set openai
Mit diesem Set können Sie Generationen ausführen:
clojure -M -m bosquet.cli "2+{{x}}="
Oder Dateien verwenden
clojure -M -m bosquet.cli -p demo/play-writer-prompt.edn -d demo/play-writer-data.edn
Auf diese Weise kann eine einfache sofortige Vervollständigung erfolgen.
(require '[bosquet.llm.generator :refer [generate llm]])
(generate "When I was 6 my sister was half my age. Now I’m 70 how old is my sister?")
=>
"When you were 6, your sister was half your age, which means she was 6 / 2 = 3 years old.nSince then, there is a constant age difference of 3 years between you and your sister.nNow that you are 70, your sister would be 70 - 6 = 64 years old."}
( require '[bosquet.llm :as llm])
( require '[bosquet.llm.generator :refer [generate llm]])
( generate
llm/default-services
{ :question-answer " Question: {{question}} Answer: {{answer}} "
:answer ( llm :openai )
:self-eval [ " Question: {{question}} "
" Answer: {{answer}} "
" "
" Is this a correct answer? "
" {{test}} " ]
:test ( llm :openai )}
{ :question " What is the distance from Moon to Io? " })
=>
{ :question-answer
" Question: What is the distance from Moon to Io? Answer: " ,
:answer
" The distance from the Moon to Io varies, as both are orbiting different bodies. On average, the distance between the Moon and Io is approximately 760,000 kilometers (470,000 miles). However, this distance can change due to the elliptical nature of their orbits. " ,
:self-eval
" Question: What is the distance from Moon to Io? n Answer: The distance from the Moon to Io varies, as both are orbiting different bodies. On average, the distance between the Moon and Io is approximately 760,000 kilometers (470,000 miles). However, this distance can change due to the elliptical nature of their orbits. nn Is this a correct answer? " ,
:test
" No, the answer provided is incorrect. The Moon is Earth's natural satellite, while Io is one of Jupiter's moons. Therefore, the distance between the Moon and Io can vary significantly depending on their relative positions in their respective orbits around Earth and Jupiter. " }
( require '[bosquet.llm.wkk :as wkk])
( generate
[[ :system " You are an amazing writer. " ]
[ :user [ " Write a synopsis for the play: "
" Title: {{title}} "
" Genre: {{genre}} "
" Synopsis: " ]]
[ :assistant ( llm wkk/openai
wkk/model-params { :temperature 0.8 :max-tokens 120 }
wkk/var-name :synopsis )]
[ :user " Now write a critique of the above synopsis: " ]
[ :assistant ( llm wkk/openai
wkk/model-params { :temperature 0.2 :max-tokens 120 }
wkk/var-name :critique )]]
{ :title " Mr. X "
:genre " Sci-Fi " })
=>
#:bosquet{ :conversation
[[ :system " You are an amazing writer. " ]
[ :user
" Write a synopsis for the play: n Title: Mr. X n Genre: Sci-Fi n Synopsis: " ]
[ :assistant " In a futuristic world where technology ... " ]
[ :user " Now write a critique of the above synopsis: " ]
[ :assistant
" The synopsis for the play " Mr. X " presents an intriguing premise ... " ]],
:completions
{ :synopsis
" In a futuristic world where technology has ... " ,
:critique
" The synopsis for the play " Mr. X " presents an intriguing premise set ... " }}
Die Generierung gibt :bosquet/conversation
zurück, in der der vollständige Chat mit ausgefüllten generierten Teilen aufgeführt ist, und :bosquet/completions
das nur generierte Daten enthält