Skip to content

Commit 48b841c

Browse files
committed
adjust model for realtime
1 parent 8d3071d commit 48b841c

1 file changed

Lines changed: 25 additions & 13 deletions

File tree

python/ql/lib/semmle/python/frameworks/OpenAI.qll

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,24 @@ module OpenAI {
119119
"assistant"
120120
}
121121

122+
/** Gets the `item` dictionary passed to `realtime.connect().conversation.item.create`. */
123+
private API::Node realtimeItem() {
124+
result =
125+
classRef()
126+
.getMember("realtime")
127+
.getMember("connect")
128+
.getReturn()
129+
.getMember("conversation")
130+
.getMember("item")
131+
.getMember("create")
132+
.getKeywordParameter("item")
133+
}
134+
135+
/** Gets the text content of a realtime conversation item. */
136+
private API::Node realtimeItemContent(API::Node item) {
137+
result = item.getSubscript("content").getASubscript().getSubscript("text")
138+
}
139+
122140
/**
123141
* Gets role-filtered system/developer/assistant message content sinks that
124142
* MaD cannot express.
@@ -131,6 +149,10 @@ module OpenAI {
131149
exists(API::Node call | call = threadMessageCreate() and threadRoleIsAssistant(call) |
132150
result = call.getKeywordParameter("content")
133151
)
152+
or
153+
exists(API::Node item | item = realtimeItem() and isSystemOrDevMessage(item) |
154+
result = realtimeItemContent(item)
155+
)
134156
}
135157

136158
/**
@@ -148,18 +170,8 @@ module OpenAI {
148170
result = call.getKeywordParameter("content")
149171
)
150172
or
151-
// realtime conversation items, role cannot be statically resolved in general
152-
result =
153-
classRef()
154-
.getMember("realtime")
155-
.getMember("connect")
156-
.getReturn()
157-
.getMember("conversation")
158-
.getMember("item")
159-
.getMember("create")
160-
.getKeywordParameter("item")
161-
.getSubscript("content")
162-
.getASubscript()
163-
.getSubscript("text")
173+
exists(API::Node item | item = realtimeItem() and not isSystemOrDevMessage(item) |
174+
result = realtimeItemContent(item)
175+
)
164176
}
165177
}

0 commit comments

Comments
 (0)