BoxCars est un joyau qui vous permet de créer de nouveaux systèmes avec la composabilité de l'IA, en utilisant divers concepts tels que LLMS (OpenAI, Anthropic, GPT4ALL), Search, SQL (avec la suite et le support d'enregistrement actif), Rails Active Record, Vector Search et plus. Cela peut même être également étendu avec vos concepts (y compris vos concepts).
Ce joyau a été inspiré par la populaire bibliothèque Python Langchain. Cependant, nous voulions lui donner un rotation rubis et le rendre plus convivial pour les débutants pour commencer.
Tous ces concepts se trouvent dans un module nommé BoxCars:
Boxcars.engine .Boxcars::train lorsque vous souhaitez construire un train.Boxcar.configuration.default_engine ). Nous avons un moteur pour l'API Claude d'Anthropic nommé Boxcars::Anthropic , et un autre moteur pour GPT nommé Boxcars::Gpt4allEng .Actuellement, notre système est conçu pour les personnes qui possèdent déjà des privilèges administratifs pour leur projet. Il est probablement possible de manipuler les invites du système à effectuer des actions malveillantes, mais si vous avez déjà un accès administratif, vous pouvez effectuer de telles actions sans nécessiter de wagons couverts en premier lieu.
Remarque: Nous recherchons activement des moyens d'améliorer la capacité de notre système à identifier et à empêcher toute tentative néfaste de se produire. Si vous avez des suggestions ou des recommandations, n'hésitez pas à les partager avec nous en trouvant un problème existant ou en créant un nouveau et en nous fournissant vos commentaires.
Ajoutez cette ligne à Gemfile de votre application:
gem 'boxcars'Puis exécuter:
$ bundle install
Ou installez-le vous-même comme:
$ gem install boxcars
Nous ajouterons bientôt plus d'exemples, mais voici quelques couples pour vous aider à démarrer. Tout d'abord, vous devrez configurer vos variables d'environnement pour des services comme Openai, Anthropic et Google Serp (Openai_Access_Token, Anthropic_API_KEY, Serpapi_API_KEY) etc. Si vous préférez ne pas définir ces variables dans votre environnement, vous pouvez les transmettre directement dans l'API.
Dans les exemples ci-dessous, nous avons ajouté un joyau Ruby pour charger l'environnement à la première ligne, mais selon ce que vous voulez, vous n'en aurez peut-être pas besoin.
require "dotenv/load"
require "boxcars"Remarque: Si vous souhaitez essayer les exemples ci-dessous, exécutez cette commande, puis collez dans les segments de code d'intérêt:
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?"Produit:
> 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
Notez que puisque OpenAI est actuellement le moteur le plus utilisé, si vous ne passez pas dans un moteur, il sera définitif comme prévu. Il s'agit donc de la version plus courte équivalente du script ci-dessus:
# 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?" Vous pouvez modifier le default_engine avec Boxcars::configuration.default_engine = NewDefaultEngine
Voici ce que nous avons jusqu'à présent, mais veuillez mettre un RP avec vos nouvelles idées.
# 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?"Produit:
> 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
Voir ce cahier Jupyter pour plus d'exemples.
Pour lecar Box Box, consultez ce cahier Jupyter.
Pour un stockage et une recherche vectoriels simples, consultez ce cahier Jupyter.
Remarque, certaines personnes à qui nous avons parlé ne savaient pas que vous pouviez exécuter Ruby Jupyter Notebooks. Tu peux.
Si vous l'utilisez dans une application Rails ou configurez Boxcars.configuration.logger = your_logger , la journalisation ira dans votre fichier journal.
De plus, si vous définissez ce drapeau: Boxcars.configuration.log_prompts = true Les invites réelles remises au moteur connecté seront enregistrées. Ceci est désactivé par défaut car il est très verbeux, mais à portée de main si vous déboguez des invites.
Sinon, nous imprimons pour standard.
Après avoir vérifié le dépôt, exécutez bin/setup pour installer des dépendances. Ensuite, exécutez rake spec pour exécuter les tests. Vous pouvez également exécuter bin/console pour une invite interactive qui vous permettra d'expérimenter.
Pour installer ce gemme sur votre machine locale, exécutez bundle exec rake install . Pour publier une nouvelle version, mettez à jour le numéro de version dans version.rb , puis exécutez bundle exec rake release , qui créera une balise GIT pour la version, pousse Git Commits et la balise créée, et poussez le fichier .gem sur RubyGems.org.
Les rapports de bogues et les demandes de traction sont les bienvenus sur GitHub sur https://github.com/boxcarsai/boxcars. Ce projet est destiné à être un espace sûr et accueillant pour la collaboration, et les contributeurs devraient adhérer au code de conduite.
Le GEM est disponible en open source en vertu des termes de la licence du MIT.
Tout le monde interagit dans les bases de code, les trackers des problèmes, les salles de discussion et les listes de diffusion du projet des BoxCars devrait suivre le code de conduite.