Bosquet tiene la misión de simplificar la creación de aplicaciones de IA. Todas las aplicaciones de IA no triviales deben funcionar con plantillas rápidas que crecen rápidamente en complejidad, las ventanas de contexto LLM limitadas requieren administración de memoria y se necesitan agentes para que las aplicaciones de IA interactúen con el mundo exterior.
Bosquet proporciona instrumentos para trabajar con esos conceptos de aplicación de IA:
Documentación completa del proyecto (WIP)
Los secretos, como las claves, se almacenan en el archivo secrets.edn
y los parámetros locales se guardan en config.edn
. Haga una copia de los archivos config.edn.sample
y config.edn.sample
. Cambie según sea necesario.
Demostración de la interfaz de línea de comando
Ejecute el siguiente comando para obtener opciones CLI
clojure -M -m bosquet.cli
Establecer el modelo predeterminado con
clojure -M -m bosquet.cli llms set --service openai --temperature 0 --model gpt-4
No olvide configurar la CLAVE API para su servicio (cambie 'openai' por un nombre diferente si es necesario)
clojure -M -m bosquet.cli keys set openai
Con ese conjunto, puedes ejecutar generaciones:
clojure -M -m bosquet.cli "2+{{x}}="
O usando archivos
clojure -M -m bosquet.cli -p demo/play-writer-prompt.edn -d demo/play-writer-data.edn
La finalización rápida simple se puede hacer de esta manera.
(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 ... " }}
Devoluciones de generación :bosquet/conversation
que enumera el chat completo con las partes generadas completadas y :bosquet/completions
que contiene solo los datos generados