Skip to content

Commit b178236

Browse files
committed
Refactor Conversations API to manage items instead of messages in README and implementation. Update methods and specs accordingly to reflect the new item structure.
1 parent d9acfa7 commit b178236

File tree

3 files changed

+112
-58
lines changed

3 files changed

+112
-58
lines changed

README.md

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,33 +1162,46 @@ To delete a conversation:
11621162
response = client.conversations.delete(id: conversation_id)
11631163
```
11641164

1165-
#### Managing Messages in Conversations
1165+
#### Managing Items in Conversations
11661166

1167-
You can add, retrieve, and manage messages within a conversation:
1167+
You can add, retrieve, and manage items within a conversation.
11681168

1169-
##### Creating a Message
1169+
##### Creating Items
11701170

11711171
```ruby
1172-
response = client.conversations.create_message(
1172+
# Create multiple items at once
1173+
response = client.conversations.create_items(
11731174
conversation_id: conversation_id,
11741175
parameters: {
1175-
content: "Hello! How can I help you today?",
1176-
role: "assistant",
1177-
metadata: { message_type: "greeting" }
1176+
items: [
1177+
{
1178+
type: "message",
1179+
role: "user",
1180+
content: [
1181+
{ type: "input_text", text: "Hello!" }
1182+
]
1183+
},
1184+
{
1185+
type: "message",
1186+
role: "assistant",
1187+
content: [
1188+
{ type: "input_text", text: "How are you?" }
1189+
]
1190+
}
1191+
]
11781192
}
11791193
)
1180-
message_id = response["id"]
11811194
```
11821195

1183-
##### Listing Messages
1196+
##### Listing Items
11841197

11851198
```ruby
1186-
# List all messages in a conversation
1187-
response = client.conversations.messages(conversation_id: conversation_id)
1188-
messages = response["data"]
1199+
# List all items in a conversation
1200+
response = client.conversations.list_items(conversation_id: conversation_id)
1201+
items = response["data"]
11891202

11901203
# With parameters
1191-
response = client.conversations.messages(
1204+
response = client.conversations.list_items(
11921205
conversation_id: conversation_id,
11931206
parameters: {
11941207
limit: 10,
@@ -1197,21 +1210,21 @@ response = client.conversations.messages(
11971210
)
11981211
```
11991212

1200-
##### Retrieving a Specific Message
1213+
##### Retrieving a Specific Item
12011214

12021215
```ruby
1203-
message = client.conversations.retrieve_message(
1216+
item = client.conversations.get_item(
12041217
conversation_id: conversation_id,
1205-
message_id: message_id
1218+
item_id: item_id
12061219
)
12071220
```
12081221

1209-
##### Deleting a Message
1222+
##### Deleting an Item
12101223

12111224
```ruby
1212-
response = client.conversations.delete_message(
1225+
response = client.conversations.delete_item(
12131226
conversation_id: conversation_id,
1214-
message_id: message_id
1227+
item_id: item_id
12151228
)
12161229
```
12171230

lib/openai/conversations.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,21 @@ def delete(id:)
2424
@client.delete(path: "/conversations/#{id}")
2525
end
2626

27-
# Message operations within a conversation
28-
def messages(conversation_id:, parameters: {})
29-
@client.get(path: "/conversations/#{conversation_id}/messages", parameters: parameters)
27+
# Item operations within a conversation
28+
def create_items(conversation_id:, parameters: {})
29+
@client.json_post(path: "/conversations/#{conversation_id}/items", parameters: parameters)
3030
end
3131

32-
def retrieve_message(conversation_id:, message_id:)
33-
@client.get(path: "/conversations/#{conversation_id}/messages/#{message_id}")
32+
def list_items(conversation_id:, parameters: {})
33+
@client.get(path: "/conversations/#{conversation_id}/items", parameters: parameters)
3434
end
3535

36-
def create_message(conversation_id:, parameters: {})
37-
@client.json_post(path: "/conversations/#{conversation_id}/messages", parameters: parameters)
36+
def get_item(conversation_id:, item_id:)
37+
@client.get(path: "/conversations/#{conversation_id}/items/#{item_id}")
3838
end
3939

40-
def delete_message(conversation_id:, message_id:)
41-
@client.delete(path: "/conversations/#{conversation_id}/messages/#{message_id}")
40+
def delete_item(conversation_id:, item_id:)
41+
@client.delete(path: "/conversations/#{conversation_id}/items/#{item_id}")
4242
end
4343
end
4444
end

spec/openai/client/conversations_spec.rb

Lines changed: 71 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,21 @@
55
OpenAI::Client.new.conversations.create(parameters: {})["id"]
66
end
77
end
8-
let(:message_id) do
9-
VCR.use_cassette("#{cassette} message setup") do
10-
OpenAI::Client.new.conversations.create_message(
8+
let(:item_id) do
9+
VCR.use_cassette("#{cassette} item setup") do
10+
OpenAI::Client.new.conversations.create_items(
1111
conversation_id: conversation_id,
12-
parameters: { content: "Hello, this is a test message" }
12+
parameters: {
13+
items: [
14+
{
15+
type: "message",
16+
role: "user",
17+
content: [
18+
{ type: "input_text", text: "Hello, this is a test item" }
19+
]
20+
}
21+
]
22+
}
1323
)["id"]
1424
end
1525
end
@@ -104,13 +114,13 @@
104114
end
105115
end
106116

107-
describe "#messages" do
108-
let(:cassette) { "conversations messages" }
117+
describe "#list_items" do
118+
let(:cassette) { "conversations list items" }
109119
let(:response) do
110-
OpenAI::Client.new.conversations.messages(conversation_id: conversation_id)
120+
OpenAI::Client.new.conversations.list_items(conversation_id: conversation_id)
111121
end
112122

113-
before { message_id }
123+
before { item_id }
114124

115125
it "succeeds" do
116126
VCR.use_cassette(cassette) do
@@ -120,7 +130,7 @@
120130

121131
context "with parameters" do
122132
let(:response) do
123-
OpenAI::Client.new.conversations.messages(
133+
OpenAI::Client.new.conversations.list_items(
124134
conversation_id: conversation_id,
125135
parameters: { limit: 5 }
126136
)
@@ -134,68 +144,99 @@
134144
end
135145
end
136146

137-
describe "#retrieve_message" do
138-
let(:cassette) { "conversations retrieve message" }
147+
describe "#get_item" do
148+
let(:cassette) { "conversations get item" }
139149
let(:response) do
140-
OpenAI::Client.new.conversations.retrieve_message(
150+
OpenAI::Client.new.conversations.get_item(
141151
conversation_id: conversation_id,
142-
message_id: message_id
152+
item_id: item_id
143153
)
144154
end
145155

146156
it "succeeds" do
147157
VCR.use_cassette(cassette) do
148-
expect(response["object"]).to eq("conversation.message")
158+
expect(response["object"]).to eq("conversation.item")
149159
end
150160
end
151161
end
152162

153-
describe "#create_message" do
154-
let(:cassette) { "conversations create message" }
163+
describe "#create_items" do
164+
let(:cassette) { "conversations create items" }
155165
let(:response) do
156-
OpenAI::Client.new.conversations.create_message(
166+
OpenAI::Client.new.conversations.create_items(
157167
conversation_id: conversation_id,
158-
parameters: { content: "Hello, this is a test message" }
168+
parameters: {
169+
items: [
170+
{
171+
type: "message",
172+
role: "user",
173+
content: [
174+
{ type: "input_text", text: "Hello!" }
175+
]
176+
},
177+
{
178+
type: "message",
179+
role: "assistant",
180+
content: [
181+
{ type: "input_text", text: "How are you?" }
182+
]
183+
}
184+
]
185+
}
159186
)
160187
end
161188

162189
it "succeeds" do
163190
VCR.use_cassette(cassette) do
164-
expect(response["object"]).to eq("conversation.message")
191+
expect(response["object"]).to eq("conversation.item")
165192
end
166193
end
167194

168-
context "with additional parameters" do
195+
context "with multiple items" do
169196
let(:response) do
170-
OpenAI::Client.new.conversations.create_message(
197+
OpenAI::Client.new.conversations.create_items(
171198
conversation_id: conversation_id,
172199
parameters: {
173-
content: "Hello with metadata",
174-
metadata: { test: "value" }
200+
items: [
201+
{
202+
type: "message",
203+
role: "user",
204+
content: [
205+
{ type: "input_text", text: "Hello!" }
206+
]
207+
},
208+
{
209+
type: "message",
210+
role: "user",
211+
content: [
212+
{ type: "input_text", text: "How are you?" }
213+
]
214+
}
215+
]
175216
}
176217
)
177218
end
178219

179-
it "succeeds with additional parameters" do
220+
it "succeeds with multiple items" do
180221
VCR.use_cassette(cassette) do
181-
expect(response["object"]).to eq("conversation.message")
222+
expect(response["object"]).to eq("conversation.item")
182223
end
183224
end
184225
end
185226
end
186227

187-
describe "#delete_message" do
188-
let(:cassette) { "conversations delete message" }
228+
describe "#delete_item" do
229+
let(:cassette) { "conversations delete item" }
189230
let(:response) do
190-
OpenAI::Client.new.conversations.delete_message(
231+
OpenAI::Client.new.conversations.delete_item(
191232
conversation_id: conversation_id,
192-
message_id: message_id
233+
item_id: item_id
193234
)
194235
end
195236

196237
it "succeeds" do
197238
VCR.use_cassette(cassette) do
198-
expect(response["object"]).to eq("conversation.message.deleted")
239+
expect(response["object"]).to eq("conversation.item.deleted")
199240
end
200241
end
201242
end

0 commit comments

Comments
 (0)