Skip to content

Commit 830f438

Browse files
committed
Add run steps
1 parent 0f6a927 commit 830f438

File tree

6 files changed

+228
-0
lines changed

6 files changed

+228
-0
lines changed

lib/openai.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
require_relative "openai/threads"
1212
require_relative "openai/messages"
1313
require_relative "openai/runs"
14+
require_relative "openai/run_steps"
1415
require_relative "openai/audio"
1516
require_relative "openai/version"
1617

lib/openai/client.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ def runs
6969
@runs ||= OpenAI::Runs.new(client: self)
7070
end
7171

72+
def run_steps
73+
@run_steps ||= OpenAI::RunSteps.new(client: self)
74+
end
75+
7276
def moderations(parameters: {})
7377
json_post(path: "/moderations", parameters: parameters)
7478
end

lib/openai/run_steps.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module OpenAI
2+
class RunSteps
3+
def initialize(client:)
4+
@client = client.beta(assistants: "v1")
5+
end
6+
7+
def list(thread_id:, run_id:)
8+
@client.get(path: "/threads/#{thread_id}/runs/#{run_id}/steps")
9+
end
10+
11+
def retrieve(thread_id:, run_id:, id:)
12+
@client.get(path: "/threads/#{thread_id}/runs/#{run_id}/steps/#{id}")
13+
end
14+
end
15+
end

spec/fixtures/cassettes/run_steps_list.yml

Lines changed: 90 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

spec/fixtures/cassettes/run_steps_retrieve.yml

Lines changed: 82 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
RSpec.describe OpenAI::Client do
2+
describe "#run_steps" do
3+
describe "#list" do
4+
let(:cassette) { "run_steps list" }
5+
let(:response) do
6+
OpenAI::Client.new.run_steps.list(
7+
thread_id: "thread_vd1d6cmJiUkTigpDbCMKBwry",
8+
run_id: "run_kINaLRxQg4uZItMP0ExgGwAl"
9+
)
10+
end
11+
12+
it "succeeds" do
13+
VCR.use_cassette(cassette) do
14+
expect(response.dig("data", 0, "object")).to eq("thread.run.step")
15+
end
16+
end
17+
end
18+
19+
describe "#retrieve" do
20+
let(:cassette) { "run_steps retrieve" }
21+
let(:response) do
22+
OpenAI::Client.new.run_steps.retrieve(
23+
thread_id: "thread_vd1d6cmJiUkTigpDbCMKBwry",
24+
run_id: "run_kINaLRxQg4uZItMP0ExgGwAl",
25+
id: "step_BM4yN3TSI1mm2dbAwHUD0ATS"
26+
)
27+
end
28+
29+
it "succeeds" do
30+
VCR.use_cassette(cassette) do
31+
expect(response["object"]).to eq("thread.run.step")
32+
end
33+
end
34+
end
35+
end
36+
end

0 commit comments

Comments
 (0)