O BoxCars é uma jóia que permite criar novos sistemas com composibilidade de IA, usando vários conceitos, como LLMS (OpenAI, Anthrópico, GPT4all), pesquisa, SQL (com suporte de registro de sequela e ativo), registro ativo do Rails, pesquisa de vetores e muito mais. Isso também pode ser estendido com seus conceitos (incluindo seus conceitos).
Esta jóia foi inspirada na popular biblioteca Python Langchain. No entanto, queríamos dar um giro de rubi e torná-lo mais fácil de usar para iniciantes começar.
Todos esses conceitos estão em um módulo chamado Boxcars:
Boxcars.engine .Boxcars::train quando deseja construir um trem.Boxcar.configuration.default_engine ). Temos um mecanismo para a API Claude do Anthropic chamado Boxcars::Anthropic e outro mecanismo para GPT chamado Boxcars::Gpt4allEng .Atualmente, nosso sistema foi projetado para indivíduos que já possuem privilégios administrativos para seu projeto. É provável que seja possível manipular os avisos do sistema para realizar ações maliciosas, mas se você já tiver acesso administrativo, poderá executar essas ações sem a necessidade de vagões em primeiro lugar.
Nota: estamos buscando ativamente maneiras de melhorar a capacidade do nosso sistema de identificar e impedir que qualquer tentativa nefasta ocorra. Se você tiver alguma sugestão ou recomendações, sinta -se à vontade para compartilhá -las conosco, encontrando um problema existente ou criando um novo e fornecendo seus comentários.
Adicione esta linha ao GemFile do seu aplicativo:
gem 'boxcars'E depois execute:
$ bundle install
Ou instale você mesmo como:
$ gem install boxcars
Estaremos adicionando mais exemplos em breve, mas aqui estão um casal para você começar. Primeiro, você precisará configurar suas variáveis de ambiente para serviços como OpenAI, Antrópico e Google Serp (OpenI_Access_Token, Anthrópica_API_KEY, SERPAPI_API_KEY) etc. Se você preferir não definir essas variáveis em seu ambiente, poderá passar diretamente para o API.
Nos exemplos abaixo, adicionamos uma jóia Ruby para carregar o ambiente na primeira linha, mas, dependendo do que você deseja, você pode não precisar disso.
require "dotenv/load"
require "boxcars"NOTA: Se você quiser experimentar os exemplos abaixo, execute este comando e depois cole nos segmentos de interesse do 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?"Produz:
> 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
Observe que, como o OpenAI é atualmente o mecanismo mais usado, se você não passar em um mecanismo, ele será o padrão como esperado. Então, esta é a versão mais curta equivalente do script acima:
# 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?" Você pode alterar o Default_engine com Boxcars::configuration.default_engine = NewDefaultEngine
Aqui está o que temos até agora, mas coloque um PR com suas novas idéias.
# 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?"Produz:
> 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
Veja este notebook Jupyter para mais exemplos.
Para o Swagger Boxcar, consulte este notebook Jupyter.
Para armazenamento e pesquisa de vetores simples, consulte este notebook Jupyter.
Observe que algumas pessoas com quem conversamos não sabiam que você poderia administrar os cadernos Ruby Jupyter. Você pode.
Se você usar isso em um aplicativo Rails ou configurar Boxcars.configuration.logger = your_logger , o registro irá para o seu arquivo de log.
Além disso, se você definir este sinalizador: Boxcars.configuration.log_prompts = true os avisos reais entregues ao mecanismo conectado serão registrados. Isso está desativado por padrão, porque é muito prolixo, mas útil se você estiver depurando prompts.
Caso contrário, imprimimos para o padrão.
Depois de verificar o repositório, execute bin/setup para instalar dependências. Em seguida, execute rake spec para executar os testes. Você também pode executar bin/console para um prompt interativo que permitirá experimentar.
Para instalar esta gema na sua máquina local, execute bundle exec rake install . Para lançar uma nova versão, atualize o número da versão no version.rb e, em seguida, execute bundle exec rake release , que criará uma tag git para a versão, push git cometidos e a tag criada e pressionará o arquivo .gem para rubygems.org.
Relatórios de bug e solicitações de puxar são bem -vindos no github em https://github.com/boxcarsai/boxcars. Este projeto deve ser um espaço seguro e acolhedor para a colaboração, e os colaboradores devem aderir ao Código de Conduta.
A GEM está disponível como código aberto nos termos da licença do MIT.
Todos interagindo nas bases de código, rastreadores de emissão, salas de bate -papo e listas de discussão do projeto devem seguir o código de conduta.