Structured extraction in Ruby, powered by llms, designed for simplicity, transparency, and control.
Instructor-rb is a Ruby library that makes it a breeze to work with structured outputs from large language models (LLMs). Built on top of EasyTalk, it provides a simple, transparent, and user-friendly API to manage validation, retries, and streaming responses. Get ready to supercharge your LLM workflows!
Install Instructor-rb at the command prompt if you haven't yet:
```bash
$ gem install instructor-rb
```
In your Ruby project, require the gem:
```ruby
require 'instructor'
```
At the beginning of your script, initialize and patch the client:
For the OpenAI client:
```ruby
client = Instructor.from_openai(OpenAI::Client)
```
For the Anthropic client:
```ruby
client = Instructor.from_anthropic(Anthropic::Client)
```
export your API key:
export OPENAI_API_KEY=sk-...
or for Anthropic:
export ANTHROPIC_API_KEY=sk-...
Then use Instructor by defining your schema in Ruby using the define_schema
block and EasyTalk's schema definition syntax. Here's an example in:
require 'instructor'
class UserDetail
include EasyTalk::Model
define_schema do
property :name, String
property :age, Integer
end
end
client = Instructor.from_openai(OpenAI::Client).new
user = client.chat(
parameters: {
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'Extract Jason is 25 years old' }]
},
response_model: UserDetail
)
user.name
# => "Jason"
user.age
# => 25
ℹ️ Tip: Support in other languages
Check out ports to other languages below:
- [Python](https://www.github.com/jxnl/instructor)
- [TS/JS](https://github.com/instructor-ai/instructor-js/)
- [Ruby](https://github.com/instructor-ai/instructor-rb)
- [Elixir](https://github.com/thmsmlr/instructor_ex/)
If you want to port Instructor to another language, please reach out to us on [Twitter](https://twitter.com/jxnlco) we'd love to help you get started!
OpenAI Integration — Integrates seamlessly with OpenAI's API, facilitating efficient data management and manipulation.
Customizable — It offers significant flexibility. Users can tailor validation processes and define unique error messages.
Tested and Trusted — Its reliability is proven by extensive real-world application.
Installing Instructor is a breeze.
If you want to help out, checkout some of the issues marked as good-first-issue
or help-wanted
. Found here. They could be anything from code improvements, a guest blog post, or a new cook book.
Checkout the [contribution guide]() for details on how to set things up, testing, changesets and guidelines.
This project is licensed under the terms of the MIT License.
llm_validator