跳到内容

instructor-rb

Ruby 中的结构化提取,由大型语言模型 (LLMs) 提供支持,设计简洁、透明、易于控制。


Twitter Follow Twitter Follow Documentation GitHub issues Discord

深入探索 Ruby 基于结构化提取的世界,由 OpenAI 的函数调用 API 和带有类型提示的 Ruby schema 验证提供支持。Instructor 以其简洁、透明和以用户为中心的设计而脱颖而出。无论您是经验丰富的开发者还是刚入门,您都会发现 Instructor 的方法直观且易于掌控。

您可以在 PythonElixirPHPRuby 中找到我们。

如果您想将 Instructor 移植到其他语言,请在 Twitter 上联系我们,我们很乐意帮助您开始!

用法

要查看所有关于提示和提取数据的技巧和诀窍,请查阅 文档

安装非常简单,只需

gem install intructor-rb
require 'instructor-rb'

OpenAI.configure do |config|
    config.access_token = ENV.fetch("OPENAI_ACCESS_TOKEN")
    config.organization_id = ENV.fetch("OPENAI_ORGANIZATION_ID") # Optional.
end

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

为何使用 Instructor?

使用 Instructor 的问题,本质上就是为什么要使用 zod 的问题。

  1. 由 OpenAI 提供支持 — Instructor 由 OpenAI 的函数调用 API 提供支持。这意味着您可以使用相同的 API 进行提示和提取。

  2. Ruby Schema 验证 — Instructor 使用带有类型提示的 Ruby schema 验证。这意味着您可以在使用数据之前对其进行验证。

更多示例

如果您想查看更多内容,请查阅我们的 使用指南

贡献

如果您想提供帮助,请查看标记为 good-first-issuehelp-wanted 的一些议题。可以在 这里 找到。可以是任何内容,例如代码改进、客座博文或新的使用指南。

许可证

本项目采用 MIT 许可证授权。