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:
$ gem install instructor-rb
-
In your Ruby project, require the gem:
require 'instructor'
-
At the beginning of your script, initialize and patch the client:
For the OpenAI client:
client = Instructor.from_openai(OpenAI::Client)
For the Anthropic client:
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.
- Add patch
- Mode.FUNCTIONS
- Mode.TOOLS
- Mode.MD_JSON
- Mode.JSON
- Add response_model
- Support async
- Support stream=True, Partial[T] and iterable[T]
- Support Streaming
- Optional/Maybe types
- Add Tutorials, include in docs
- Text Classification
- Search Queries
- Query Decomposition
- Citations
- Knowledge Graph
- Self Critique
- Image Extracting Tables
- Moderation
- Entity Resolution
- Action Item and Dependency Mapping
- Logging for Distillation / Finetuning
- Add
llm_validator