bosquet
2024.02.22
Bosquet は、AI アプリケーションの構築をシンプルにするという使命を担っています。すべての重要な AI アプリケーションは、急速に複雑さが増すプロンプト テンプレートを操作する必要があり、限られた LLM コンテキスト ウィンドウにはメモリ管理が必要で、AI アプリケーションが外部と対話するにはエージェントが必要です。
Bosquet は、これらの AI アプリケーションの概念を操作するためのツールを提供します。
完全なプロジェクト ドキュメント (WIP)
キーなどのシークレットはsecrets.edn
ファイルに保存され、ローカル パラメータはconfig.edn
に保存されます。 config.edn.sample
とconfig.edn.sample
ファイルのコピーを作成します。必要に応じて変更します。
コマンドラインインターフェースのデモ
次のコマンドを実行して CLI オプションを取得します
clojure -M -m bosquet.cli
デフォルトのモデルを設定します
clojure -M -m bosquet.cli llms set --service openai --temperature 0 --model gpt-4
サービスの API KEY を設定することを忘れないでください (必要に応じて、「openai」を別の名前に変更してください)
clojure -M -m bosquet.cli keys set openai
このセットを使用すると、世代を実行できます。
clojure -M -m bosquet.cli "2+{{x}}="
またはファイルを使用する
clojure -M -m bosquet.cli -p demo/play-writer-prompt.edn -d demo/play-writer-data.edn
単純なプロンプト補完は次のように行うことができます。
(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 ... " }}
生成は、生成された部分が入力された完全なチャットをリストする:bosquet/conversation
と、生成されたデータのみを含む:bosquet/completions
を返します。