BoxCars ist ein Juwel, mit dem Sie neue Systeme mit KI -Komposition erstellen können, wobei verschiedene Konzepte wie LLMs (OpenAI, Anthropic, GPT4all), Suche, SQL (sowohl mit Fortsetzung als auch Aktive -Datensatz), aktiven Aktenaufzeichnungen, Vektorsuche und mehr. Dies kann sogar mit Ihren Konzepten erweitert werden (einschließlich Ihrer Konzepte).
Dieses Juwel wurde von der beliebten Python Library Langchain inspiriert. Wir wollten ihm jedoch einen Ruby-Spin geben und es benutzerfreundlicher machen, wenn Anfänger loslegen.
Alle diese Konzepte befinden sich in einem Modul namens BoxCars:
Boxcars.engine verwendet.Boxcars::train verwenden, wenn Sie einen Zug bauen möchten.Boxcar.configuration.default_engine ). Wir haben einen Motor für Anthropics Claude -API namens Boxcars::Anthropic und einen weiteren Motor für GPT namens Boxcars::Gpt4allEng .Derzeit ist unser System für Personen ausgelegt, die bereits über Verwaltungsberechtigungen für ihr Projekt verfügen. Es ist wahrscheinlich möglich, die Aufforderungen des Systems zur Ausführung böswilliger Aktionen zu manipulieren. Wenn Sie jedoch bereits administrativen Zugriff haben, können Sie solche Aktionen ausführen, ohne Boxcars überhaupt zu verlangen.
Hinweis: Wir suchen aktiv nach Wegen, um die Fähigkeit unseres Systems zu verbessern, schändliche Versuche zu identifizieren und zu verhindern, dass Versuche auftreten. Wenn Sie Vorschläge oder Empfehlungen haben, können Sie diese gerne mit uns teilen, indem Sie entweder ein bestehendes Problem finden oder ein neues erstellen und uns Ihr Feedback geben.
Fügen Sie diese Zeile der GemFile Ihrer Anwendung hinzu:
gem 'boxcars'Und dann ausführen:
$ bundle install
Oder installieren Sie es selbst als:
$ gem install boxcars
Wir werden bald weitere Beispiele hinzufügen, aber hier sind ein Paar, um Ihnen den Einstieg zu erleichtern. Zunächst müssen Sie Ihre Umgebungsvariablen für Dienste wie OpenAI, Anthropic und Google Serp (OpenAI_Access_Token, Anthropic_api_key, serpapi_api_key) usw. einrichten. Wenn Sie diese Variablen nicht direkt in die API übergeben können, können Sie sie direkt in die API übergeben.
In den folgenden Beispielen haben wir ein Ruby -Edelstein hinzugefügt, um die Umgebung in der ersten Zeile zu laden, aber je nachdem, was Sie wollen, brauchen Sie dies möglicherweise nicht.
require "dotenv/load"
require "boxcars"Hinweis: Wenn Sie die folgenden Beispiele ausprobieren möchten, führen Sie diesen Befehl aus und fügen Sie dann die von Interesse in den Codesegmenten aus:
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?"Produziert:
> 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
Beachten Sie, dass OpenAI derzeit der am häufigsten verwendete Motor ist, wenn Sie keinen Motor übergeben, dies erwartungsgemäß ausfällt. Dies ist also die äquivalente kürzere Version des obigen Skripts:
# 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?" Sie können die default_engine mit Boxcars::configuration.default_engine = NewDefaultEngine ändern
Hier ist, was wir bisher haben, aber bitte stellen Sie eine PR mit Ihren neuen Ideen auf.
# 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?"Produziert:
> 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
Weitere Beispiele finden Sie in diesem Jupyter -Notizbuch.
Für den Swagger Boxcar finden Sie dieses Jupyter -Notizbuch.
Für einfache Vektorspeicher und -Suche finden Sie dieses Jupyter -Notizbuch.
Beachten Sie, dass einige Leute, mit denen wir gesprochen haben, nicht wussten, dass Sie Ruby Jupyter -Notizbücher ausführen können. Du kannst.
Wenn Sie dies in einer Rails -Anwendung verwenden oder Boxcars.configuration.logger = your_logger konfigurieren, wird die Protokollierung zu Ihrer Protokolldatei gelten.
Wenn Sie dieses Flag einstellen: Boxcars.configuration.log_prompts = true Die tatsächlichen Eingabeaufforderungen, die dem angeschlossenen Engine übergeben werden, wird protokolliert. Dies ist standardmäßig ausgeschaltet, da es sehr wortreich ist, aber praktisch, wenn Sie Eingabeaufforderungen debuggen.
Ansonsten drucken wir Standard.
Führen Sie bin/setup nach dem Auschecken des Repo aus, um Abhängigkeiten zu installieren. Führen Sie dann rake spec aus, um die Tests auszuführen. Sie können auch bin/console für eine interaktive Eingabeaufforderung ausführen, mit der Sie experimentieren können.
Um dieses Juwel auf Ihrem lokalen Computer zu installieren, führen Sie bundle exec rake install aus. Um eine neue Version zu veröffentlichen, aktualisieren Sie die Versionsnummer in version.rb und führen Sie bundle exec rake release aus, die ein Git -Tag für die Version erstellt, Git Commits und das erstellte Tag drücken und die .gem -Datei auf Rubygemems.org überschreiten.
Fehlerberichte und Pull -Anfragen sind auf Github unter https://github.com/boxcarsai/boxcars willkommen. Dieses Projekt soll ein sicherer, einladender Raum für die Zusammenarbeit sein, und die Mitwirkenden sollen sich an den Verhaltenskodex halten.
Das Edelstein ist unter den Bedingungen der MIT -Lizenz als Open Source erhältlich.
Jeder, der im BoxCars -Projekt des Projekts, die Ausgabeberichte, Chatrooms und Mailing -Listen interagieren, wird erwartet, dass sie dem Verhaltenskodex folgen.