Boxcars es una joya que le permite crear nuevos sistemas con composibilidad de IA, utilizando varios conceptos como LLMS (OpenAI, Anthrope, GPT4All), Search, SQL (con soporte de registros secos y activos), registro activo de rieles, búsqueda de vectores y más. Esto incluso se puede extender también con sus conceptos (incluidos sus conceptos).
Esta joya se inspiró en la popular biblioteca de Python Langchain. Sin embargo, queríamos darle un giro a Ruby y hacerlo más fácil de usar para los principiantes comenzar.
Todos estos conceptos están en un módulo llamado Boxcars:
Boxcars.engine .Boxcars::train cuando desee construir un tren.Boxcar.configuration.default_engine ). Tenemos un motor para la API Claude de Anthrope llamada Boxcars::Anthropic , y otro motor para GPT llamado Boxcars::Gpt4allEng .Actualmente, nuestro sistema está diseñado para personas que ya poseen privilegios administrativos para su proyecto. Es probable que sea posible manipular las indicaciones del sistema que realicen acciones maliciosas, pero si ya tiene acceso administrativo, puede realizar tales acciones sin requerir vagones en primer lugar.
Nota: Estamos buscando activamente formas de mejorar la capacidad de nuestro sistema para identificar y evitar que ocurran cualquier intento nefasto. Si tiene alguna sugerencia o recomendación, no dude en compartirlas con nosotros encontrando un problema existente o creando uno nuevo y proporcionándonos sus comentarios.
Agregue esta línea al archivo gem de su aplicación:
gem 'boxcars'Y luego ejecutar:
$ bundle install
O instálelo usted mismo como:
$ gem install boxcars
Agregaremos más ejemplos pronto, pero aquí hay una pareja para comenzar. Primero, necesitará configurar sus variables de entorno para servicios como OpenAI, Anthrope y Google SERP (OpenAI_ACcess_Token, Anthrope_api_key, Serpapi_api_Key), etc. Si prefiere no configurar estas variables en su entorno, puede pasarlas directamente a la API.
En los ejemplos a continuación, agregamos una gema Ruby para cargar el entorno en la primera línea, pero dependiendo de lo que desee, es posible que no necesite esto.
require "dotenv/load"
require "boxcars"NOTA: Si desea probar los ejemplos a continuación, ejecute este comando y luego pegue los segmentos de interés de código:
irb -r dotenv/load -r boxcars
# or if you prefer local repository
irb -r dotenv/load -r ./lib/boxcars # run the calculator
engine = Boxcars :: Openai . new ( max_tokens : 256 )
calc = Boxcars :: Calculator . new ( engine : engine )
puts calc . run "what is pi to the fourth power divided by 22.1?"Produce:
> Entering Calculator#run
what is pi to the fourth power divided by 22.1?
RubyREPL: puts (Math::PI**4)/22.1
Answer: 4.407651178009159
{"status":"ok","answer":"4.407651178009159","explanation":"Answer: 4.407651178009159","code":"puts (Math::PI**4)/22.1"}
< Exiting Calculator#run
4.407651178009159
Tenga en cuenta que dado que OpenAI es actualmente el motor más utilizado, si no pasa en un motor, lo debe incumplir como se esperaba. Entonces, esta es la versión más corta equivalente del script anterior:
# run the calculator
calc = Boxcars :: Calculator . new # just use the default Engine
puts calc . run "what is pi to the fourth power divided by 22.1?" Puede cambiar el default_Engine con Boxcars::configuration.default_engine = NewDefaultEngine
Esto es lo que tenemos hasta ahora, pero coloque un PR con sus nuevas ideas.
# run a Train for a calculator, and search using default Engine
boxcars = [ Boxcars :: Calculator . new , Boxcars :: GoogleSearch . new ]
train = Boxcars . train . new ( boxcars : boxcars )
train . run "What is pi times the square root of the average temperature in Austin TX in January?"Produce:
> Entering Zero Shot#run
What is pi times the square root of the average temperature in Austin TX in January?
Thought: We need to find the average temperature in Austin TX in January and then multiply it by pi and the square root of the average temperature. We can use a search engine to find the average temperature in Austin TX in January and a calculator to perform the multiplication.
Question: Average temperature in Austin TX in January
Answer: January Weather in Austin Texas, United States. Daily high temperatures increase by 2°F, from 62°F to 64°F, rarely falling below 45°F or exceeding 76° ...
Observation: January Weather in Austin Texas, United States. Daily high temperatures increase by 2°F, from 62°F to 64°F, rarely falling below 45°F or exceeding 76° ...
Thought: We have found the average temperature in Austin TX in January, which is 64°F. Now we can use a calculator to perform the multiplication.
> Entering Calculator#run
pi * sqrt(64)
RubyREPL: puts(Math::PI * Math.sqrt(64))
Answer: 25.132741228718345
{"status":"ok","answer":"25.132741228718345","explanation":"Answer: 25.132741228718345","code":"puts(Math::PI * Math.sqrt(64))"}
< Exiting Calculator#run
Observation: 25.132741228718345
We have the final answer.
Final Answer: 25.132741228718345
Next Actions:
1. What is the average temperature in Austin TX in July?
2. What is the value of pi to 10 decimal places?
3. What is the square root of the average temperature in Miami FL in January?
< Exiting Zero Shot#run
Vea este cuaderno de Jupyter para obtener más ejemplos.
Para el Swagger Boxcar, vea este cuaderno Jupyter.
Para un almacenamiento y búsqueda vectoriales simples, consulte este cuaderno Jupyter.
Tenga en cuenta que algunas personas con las que hablamos no sabían que podrías ejecutar cuadernos Ruby Jupyter. Puede.
Si usa esto en una aplicación Rails, o configura Boxcars.configuration.logger = your_logger , el registro irá a su archivo de registro.
Además, si establece este indicador: Boxcars.configuration.log_prompts = true las indicaciones reales entregadas al motor conectado se registrarán. Esto está desactivado de forma predeterminada porque es muy prolongada, pero útil si estás depurando.
De lo contrario, imprimimos para salir estándar.
Después de revisar el repositorio, ejecute bin/setup para instalar dependencias. Luego, ejecute rake spec para ejecutar las pruebas. También puede ejecutar bin/console para un mensaje interactivo que le permitirá experimentar.
Para instalar esta gema en su máquina local, ejecute bundle exec rake install . Para lanzar una nueva versión, actualice el número de versión en version.rb y luego ejecute bundle exec rake release , que creará una etiqueta GIT para la versión, Push Git Commits y la etiqueta creada, y empuje el archivo .gem a rubygems.org.
Los informes de errores y las solicitudes de extracción son bienvenidas en GitHub en https://github.com/boxcarsai/boxcars. Este proyecto pretende ser un espacio seguro y acogedor para la colaboración, y se espera que los contribuyentes se adhieran al Código de Conducta.
La gema está disponible como código abierto bajo los términos de la licencia MIT.
Se espera que todos los que interactúen en las bases de código, los rastreadores de problemas, las salas de chat y las listas de correo del Proyecto Boxcars sigan el código de conducta.