openai 4.53.2 → 4.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +2 -2
  3. package/_vendor/partial-json-parser/parser.d.ts +3 -0
  4. package/_vendor/partial-json-parser/parser.d.ts.map +1 -0
  5. package/_vendor/partial-json-parser/parser.js +226 -0
  6. package/_vendor/partial-json-parser/parser.js.map +1 -0
  7. package/_vendor/partial-json-parser/parser.mjs +223 -0
  8. package/_vendor/partial-json-parser/parser.mjs.map +1 -0
  9. package/_vendor/zod-to-json-schema/Options.d.ts +32 -0
  10. package/_vendor/zod-to-json-schema/Options.d.ts.map +1 -0
  11. package/_vendor/zod-to-json-schema/Options.js +36 -0
  12. package/_vendor/zod-to-json-schema/Options.js.map +1 -0
  13. package/_vendor/zod-to-json-schema/Options.mjs +32 -0
  14. package/_vendor/zod-to-json-schema/Options.mjs.map +1 -0
  15. package/_vendor/zod-to-json-schema/Refs.d.ts +15 -0
  16. package/_vendor/zod-to-json-schema/Refs.d.ts.map +1 -0
  17. package/_vendor/zod-to-json-schema/Refs.js +26 -0
  18. package/_vendor/zod-to-json-schema/Refs.js.map +1 -0
  19. package/_vendor/zod-to-json-schema/Refs.mjs +22 -0
  20. package/_vendor/zod-to-json-schema/Refs.mjs.map +1 -0
  21. package/_vendor/zod-to-json-schema/errorMessages.d.ts +12 -0
  22. package/_vendor/zod-to-json-schema/errorMessages.d.ts.map +1 -0
  23. package/_vendor/zod-to-json-schema/errorMessages.js +20 -0
  24. package/_vendor/zod-to-json-schema/errorMessages.js.map +1 -0
  25. package/_vendor/zod-to-json-schema/errorMessages.mjs +15 -0
  26. package/_vendor/zod-to-json-schema/errorMessages.mjs.map +1 -0
  27. package/_vendor/zod-to-json-schema/index.d.ts +38 -0
  28. package/_vendor/zod-to-json-schema/index.d.ts.map +1 -0
  29. package/_vendor/zod-to-json-schema/index.js +54 -0
  30. package/_vendor/zod-to-json-schema/index.js.map +1 -0
  31. package/_vendor/zod-to-json-schema/index.mjs +38 -0
  32. package/_vendor/zod-to-json-schema/index.mjs.map +1 -0
  33. package/_vendor/zod-to-json-schema/parseDef.d.ts +38 -0
  34. package/_vendor/zod-to-json-schema/parseDef.d.ts.map +1 -0
  35. package/_vendor/zod-to-json-schema/parseDef.js +168 -0
  36. package/_vendor/zod-to-json-schema/parseDef.js.map +1 -0
  37. package/_vendor/zod-to-json-schema/parseDef.mjs +164 -0
  38. package/_vendor/zod-to-json-schema/parseDef.mjs.map +1 -0
  39. package/_vendor/zod-to-json-schema/parsers/any.d.ts +3 -0
  40. package/_vendor/zod-to-json-schema/parsers/any.d.ts.map +1 -0
  41. package/_vendor/zod-to-json-schema/parsers/any.js +8 -0
  42. package/_vendor/zod-to-json-schema/parsers/any.js.map +1 -0
  43. package/_vendor/zod-to-json-schema/parsers/any.mjs +4 -0
  44. package/_vendor/zod-to-json-schema/parsers/any.mjs.map +1 -0
  45. package/_vendor/zod-to-json-schema/parsers/array.d.ts +13 -0
  46. package/_vendor/zod-to-json-schema/parsers/array.d.ts.map +1 -0
  47. package/_vendor/zod-to-json-schema/parsers/array.js +30 -0
  48. package/_vendor/zod-to-json-schema/parsers/array.js.map +1 -0
  49. package/_vendor/zod-to-json-schema/parsers/array.mjs +26 -0
  50. package/_vendor/zod-to-json-schema/parsers/array.mjs.map +1 -0
  51. package/_vendor/zod-to-json-schema/parsers/bigint.d.ts +15 -0
  52. package/_vendor/zod-to-json-schema/parsers/bigint.d.ts.map +1 -0
  53. package/_vendor/zod-to-json-schema/parsers/bigint.js +54 -0
  54. package/_vendor/zod-to-json-schema/parsers/bigint.js.map +1 -0
  55. package/_vendor/zod-to-json-schema/parsers/bigint.mjs +50 -0
  56. package/_vendor/zod-to-json-schema/parsers/bigint.mjs.map +1 -0
  57. package/_vendor/zod-to-json-schema/parsers/boolean.d.ts +5 -0
  58. package/_vendor/zod-to-json-schema/parsers/boolean.d.ts.map +1 -0
  59. package/_vendor/zod-to-json-schema/parsers/boolean.js +10 -0
  60. package/_vendor/zod-to-json-schema/parsers/boolean.js.map +1 -0
  61. package/_vendor/zod-to-json-schema/parsers/boolean.mjs +6 -0
  62. package/_vendor/zod-to-json-schema/parsers/boolean.mjs.map +1 -0
  63. package/_vendor/zod-to-json-schema/parsers/branded.d.ts +4 -0
  64. package/_vendor/zod-to-json-schema/parsers/branded.d.ts.map +1 -0
  65. package/_vendor/zod-to-json-schema/parsers/branded.js +9 -0
  66. package/_vendor/zod-to-json-schema/parsers/branded.js.map +1 -0
  67. package/_vendor/zod-to-json-schema/parsers/branded.mjs +5 -0
  68. package/_vendor/zod-to-json-schema/parsers/branded.mjs.map +1 -0
  69. package/_vendor/zod-to-json-schema/parsers/catch.d.ts +4 -0
  70. package/_vendor/zod-to-json-schema/parsers/catch.d.ts.map +1 -0
  71. package/_vendor/zod-to-json-schema/parsers/catch.js +9 -0
  72. package/_vendor/zod-to-json-schema/parsers/catch.js.map +1 -0
  73. package/_vendor/zod-to-json-schema/parsers/catch.mjs +5 -0
  74. package/_vendor/zod-to-json-schema/parsers/catch.mjs.map +1 -0
  75. package/_vendor/zod-to-json-schema/parsers/date.d.ts +16 -0
  76. package/_vendor/zod-to-json-schema/parsers/date.d.ts.map +1 -0
  77. package/_vendor/zod-to-json-schema/parsers/date.js +51 -0
  78. package/_vendor/zod-to-json-schema/parsers/date.js.map +1 -0
  79. package/_vendor/zod-to-json-schema/parsers/date.mjs +47 -0
  80. package/_vendor/zod-to-json-schema/parsers/date.mjs.map +1 -0
  81. package/_vendor/zod-to-json-schema/parsers/default.d.ts +7 -0
  82. package/_vendor/zod-to-json-schema/parsers/default.d.ts.map +1 -0
  83. package/_vendor/zod-to-json-schema/parsers/default.js +12 -0
  84. package/_vendor/zod-to-json-schema/parsers/default.js.map +1 -0
  85. package/_vendor/zod-to-json-schema/parsers/default.mjs +8 -0
  86. package/_vendor/zod-to-json-schema/parsers/default.mjs.map +1 -0
  87. package/_vendor/zod-to-json-schema/parsers/effects.d.ts +5 -0
  88. package/_vendor/zod-to-json-schema/parsers/effects.d.ts.map +1 -0
  89. package/_vendor/zod-to-json-schema/parsers/effects.js +9 -0
  90. package/_vendor/zod-to-json-schema/parsers/effects.js.map +1 -0
  91. package/_vendor/zod-to-json-schema/parsers/effects.mjs +5 -0
  92. package/_vendor/zod-to-json-schema/parsers/effects.mjs.map +1 -0
  93. package/_vendor/zod-to-json-schema/parsers/enum.d.ts +7 -0
  94. package/_vendor/zod-to-json-schema/parsers/enum.d.ts.map +1 -0
  95. package/_vendor/zod-to-json-schema/parsers/enum.js +11 -0
  96. package/_vendor/zod-to-json-schema/parsers/enum.js.map +1 -0
  97. package/_vendor/zod-to-json-schema/parsers/enum.mjs +7 -0
  98. package/_vendor/zod-to-json-schema/parsers/enum.mjs.map +1 -0
  99. package/_vendor/zod-to-json-schema/parsers/intersection.d.ts +9 -0
  100. package/_vendor/zod-to-json-schema/parsers/intersection.d.ts.map +1 -0
  101. package/_vendor/zod-to-json-schema/parsers/intersection.js +54 -0
  102. package/_vendor/zod-to-json-schema/parsers/intersection.js.map +1 -0
  103. package/_vendor/zod-to-json-schema/parsers/intersection.mjs +50 -0
  104. package/_vendor/zod-to-json-schema/parsers/intersection.mjs.map +1 -0
  105. package/_vendor/zod-to-json-schema/parsers/literal.d.ts +10 -0
  106. package/_vendor/zod-to-json-schema/parsers/literal.d.ts.map +1 -0
  107. package/_vendor/zod-to-json-schema/parsers/literal.js +26 -0
  108. package/_vendor/zod-to-json-schema/parsers/literal.js.map +1 -0
  109. package/_vendor/zod-to-json-schema/parsers/literal.mjs +22 -0
  110. package/_vendor/zod-to-json-schema/parsers/literal.mjs.map +1 -0
  111. package/_vendor/zod-to-json-schema/parsers/map.d.ts +16 -0
  112. package/_vendor/zod-to-json-schema/parsers/map.d.ts.map +1 -0
  113. package/_vendor/zod-to-json-schema/parsers/map.js +30 -0
  114. package/_vendor/zod-to-json-schema/parsers/map.js.map +1 -0
  115. package/_vendor/zod-to-json-schema/parsers/map.mjs +26 -0
  116. package/_vendor/zod-to-json-schema/parsers/map.mjs.map +1 -0
  117. package/_vendor/zod-to-json-schema/parsers/nativeEnum.d.ts +7 -0
  118. package/_vendor/zod-to-json-schema/parsers/nativeEnum.d.ts.map +1 -0
  119. package/_vendor/zod-to-json-schema/parsers/nativeEnum.js +21 -0
  120. package/_vendor/zod-to-json-schema/parsers/nativeEnum.js.map +1 -0
  121. package/_vendor/zod-to-json-schema/parsers/nativeEnum.mjs +17 -0
  122. package/_vendor/zod-to-json-schema/parsers/nativeEnum.mjs.map +1 -0
  123. package/_vendor/zod-to-json-schema/parsers/never.d.ts +5 -0
  124. package/_vendor/zod-to-json-schema/parsers/never.d.ts.map +1 -0
  125. package/_vendor/zod-to-json-schema/parsers/never.js +10 -0
  126. package/_vendor/zod-to-json-schema/parsers/never.js.map +1 -0
  127. package/_vendor/zod-to-json-schema/parsers/never.mjs +6 -0
  128. package/_vendor/zod-to-json-schema/parsers/never.mjs.map +1 -0
  129. package/_vendor/zod-to-json-schema/parsers/null.d.ts +6 -0
  130. package/_vendor/zod-to-json-schema/parsers/null.d.ts.map +1 -0
  131. package/_vendor/zod-to-json-schema/parsers/null.js +15 -0
  132. package/_vendor/zod-to-json-schema/parsers/null.js.map +1 -0
  133. package/_vendor/zod-to-json-schema/parsers/null.mjs +11 -0
  134. package/_vendor/zod-to-json-schema/parsers/null.mjs.map +1 -0
  135. package/_vendor/zod-to-json-schema/parsers/nullable.d.ts +11 -0
  136. package/_vendor/zod-to-json-schema/parsers/nullable.d.ts.map +1 -0
  137. package/_vendor/zod-to-json-schema/parsers/nullable.js +35 -0
  138. package/_vendor/zod-to-json-schema/parsers/nullable.js.map +1 -0
  139. package/_vendor/zod-to-json-schema/parsers/nullable.mjs +31 -0
  140. package/_vendor/zod-to-json-schema/parsers/nullable.mjs.map +1 -0
  141. package/_vendor/zod-to-json-schema/parsers/number.d.ts +14 -0
  142. package/_vendor/zod-to-json-schema/parsers/number.d.ts.map +1 -0
  143. package/_vendor/zod-to-json-schema/parsers/number.js +57 -0
  144. package/_vendor/zod-to-json-schema/parsers/number.js.map +1 -0
  145. package/_vendor/zod-to-json-schema/parsers/number.mjs +53 -0
  146. package/_vendor/zod-to-json-schema/parsers/number.mjs.map +1 -0
  147. package/_vendor/zod-to-json-schema/parsers/object.d.ts +11 -0
  148. package/_vendor/zod-to-json-schema/parsers/object.d.ts.map +1 -0
  149. package/_vendor/zod-to-json-schema/parsers/object.js +51 -0
  150. package/_vendor/zod-to-json-schema/parsers/object.js.map +1 -0
  151. package/_vendor/zod-to-json-schema/parsers/object.mjs +47 -0
  152. package/_vendor/zod-to-json-schema/parsers/object.mjs.map +1 -0
  153. package/_vendor/zod-to-json-schema/parsers/optional.d.ts +5 -0
  154. package/_vendor/zod-to-json-schema/parsers/optional.d.ts.map +1 -0
  155. package/_vendor/zod-to-json-schema/parsers/optional.js +25 -0
  156. package/_vendor/zod-to-json-schema/parsers/optional.js.map +1 -0
  157. package/_vendor/zod-to-json-schema/parsers/optional.mjs +21 -0
  158. package/_vendor/zod-to-json-schema/parsers/optional.mjs.map +1 -0
  159. package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts +6 -0
  160. package/_vendor/zod-to-json-schema/parsers/pipeline.d.ts.map +1 -0
  161. package/_vendor/zod-to-json-schema/parsers/pipeline.js +25 -0
  162. package/_vendor/zod-to-json-schema/parsers/pipeline.js.map +1 -0
  163. package/_vendor/zod-to-json-schema/parsers/pipeline.mjs +21 -0
  164. package/_vendor/zod-to-json-schema/parsers/pipeline.mjs.map +1 -0
  165. package/_vendor/zod-to-json-schema/parsers/promise.d.ts +5 -0
  166. package/_vendor/zod-to-json-schema/parsers/promise.d.ts.map +1 -0
  167. package/_vendor/zod-to-json-schema/parsers/promise.js +9 -0
  168. package/_vendor/zod-to-json-schema/parsers/promise.js.map +1 -0
  169. package/_vendor/zod-to-json-schema/parsers/promise.mjs +5 -0
  170. package/_vendor/zod-to-json-schema/parsers/promise.mjs.map +1 -0
  171. package/_vendor/zod-to-json-schema/parsers/readonly.d.ts +4 -0
  172. package/_vendor/zod-to-json-schema/parsers/readonly.d.ts.map +1 -0
  173. package/_vendor/zod-to-json-schema/parsers/readonly.js +9 -0
  174. package/_vendor/zod-to-json-schema/parsers/readonly.js.map +1 -0
  175. package/_vendor/zod-to-json-schema/parsers/readonly.mjs +5 -0
  176. package/_vendor/zod-to-json-schema/parsers/readonly.mjs.map +1 -0
  177. package/_vendor/zod-to-json-schema/parsers/record.d.ts +14 -0
  178. package/_vendor/zod-to-json-schema/parsers/record.d.ts.map +1 -0
  179. package/_vendor/zod-to-json-schema/parsers/record.js +50 -0
  180. package/_vendor/zod-to-json-schema/parsers/record.js.map +1 -0
  181. package/_vendor/zod-to-json-schema/parsers/record.mjs +46 -0
  182. package/_vendor/zod-to-json-schema/parsers/record.mjs.map +1 -0
  183. package/_vendor/zod-to-json-schema/parsers/set.d.ts +14 -0
  184. package/_vendor/zod-to-json-schema/parsers/set.d.ts.map +1 -0
  185. package/_vendor/zod-to-json-schema/parsers/set.js +25 -0
  186. package/_vendor/zod-to-json-schema/parsers/set.js.map +1 -0
  187. package/_vendor/zod-to-json-schema/parsers/set.mjs +21 -0
  188. package/_vendor/zod-to-json-schema/parsers/set.mjs.map +1 -0
  189. package/_vendor/zod-to-json-schema/parsers/string.d.ts +70 -0
  190. package/_vendor/zod-to-json-schema/parsers/string.d.ts.map +1 -0
  191. package/_vendor/zod-to-json-schema/parsers/string.js +316 -0
  192. package/_vendor/zod-to-json-schema/parsers/string.js.map +1 -0
  193. package/_vendor/zod-to-json-schema/parsers/string.mjs +312 -0
  194. package/_vendor/zod-to-json-schema/parsers/string.mjs.map +1 -0
  195. package/_vendor/zod-to-json-schema/parsers/tuple.d.ts +14 -0
  196. package/_vendor/zod-to-json-schema/parsers/tuple.d.ts.map +1 -0
  197. package/_vendor/zod-to-json-schema/parsers/tuple.js +37 -0
  198. package/_vendor/zod-to-json-schema/parsers/tuple.js.map +1 -0
  199. package/_vendor/zod-to-json-schema/parsers/tuple.mjs +33 -0
  200. package/_vendor/zod-to-json-schema/parsers/tuple.mjs.map +1 -0
  201. package/_vendor/zod-to-json-schema/parsers/undefined.d.ts +5 -0
  202. package/_vendor/zod-to-json-schema/parsers/undefined.d.ts.map +1 -0
  203. package/_vendor/zod-to-json-schema/parsers/undefined.js +10 -0
  204. package/_vendor/zod-to-json-schema/parsers/undefined.js.map +1 -0
  205. package/_vendor/zod-to-json-schema/parsers/undefined.mjs +6 -0
  206. package/_vendor/zod-to-json-schema/parsers/undefined.mjs.map +1 -0
  207. package/_vendor/zod-to-json-schema/parsers/union.d.ts +24 -0
  208. package/_vendor/zod-to-json-schema/parsers/union.d.ts.map +1 -0
  209. package/_vendor/zod-to-json-schema/parsers/union.js +77 -0
  210. package/_vendor/zod-to-json-schema/parsers/union.js.map +1 -0
  211. package/_vendor/zod-to-json-schema/parsers/union.mjs +73 -0
  212. package/_vendor/zod-to-json-schema/parsers/union.mjs.map +1 -0
  213. package/_vendor/zod-to-json-schema/parsers/unknown.d.ts +3 -0
  214. package/_vendor/zod-to-json-schema/parsers/unknown.d.ts.map +1 -0
  215. package/_vendor/zod-to-json-schema/parsers/unknown.js +8 -0
  216. package/_vendor/zod-to-json-schema/parsers/unknown.js.map +1 -0
  217. package/_vendor/zod-to-json-schema/parsers/unknown.mjs +4 -0
  218. package/_vendor/zod-to-json-schema/parsers/unknown.mjs.map +1 -0
  219. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts +11 -0
  220. package/_vendor/zod-to-json-schema/zodToJsonSchema.d.ts.map +1 -0
  221. package/_vendor/zod-to-json-schema/zodToJsonSchema.js +53 -0
  222. package/_vendor/zod-to-json-schema/zodToJsonSchema.js.map +1 -0
  223. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs +50 -0
  224. package/_vendor/zod-to-json-schema/zodToJsonSchema.mjs.map +1 -0
  225. package/error.d.ts +6 -0
  226. package/error.d.ts.map +1 -1
  227. package/error.js +13 -1
  228. package/error.js.map +1 -1
  229. package/error.mjs +10 -0
  230. package/error.mjs.map +1 -1
  231. package/helpers/zod.d.ts +57 -0
  232. package/helpers/zod.d.ts.map +1 -0
  233. package/helpers/zod.js +79 -0
  234. package/helpers/zod.js.map +1 -0
  235. package/helpers/zod.mjs +74 -0
  236. package/helpers/zod.mjs.map +1 -0
  237. package/index.d.mts +8 -0
  238. package/index.d.ts +8 -0
  239. package/index.d.ts.map +1 -1
  240. package/index.js +1 -0
  241. package/index.js.map +1 -1
  242. package/index.mjs +1 -0
  243. package/index.mjs.map +1 -1
  244. package/lib/AbstractChatCompletionRunner.d.ts +15 -68
  245. package/lib/AbstractChatCompletionRunner.d.ts.map +1 -1
  246. package/lib/AbstractChatCompletionRunner.js +47 -200
  247. package/lib/AbstractChatCompletionRunner.js.map +1 -1
  248. package/lib/AbstractChatCompletionRunner.mjs +48 -201
  249. package/lib/AbstractChatCompletionRunner.mjs.map +1 -1
  250. package/lib/AssistantStream.d.ts +10 -6
  251. package/lib/AssistantStream.d.ts.map +1 -1
  252. package/lib/AssistantStream.js +18 -6
  253. package/lib/AssistantStream.js.map +1 -1
  254. package/lib/AssistantStream.mjs +18 -6
  255. package/lib/AssistantStream.mjs.map +1 -1
  256. package/lib/ChatCompletionRunner.d.ts +8 -6
  257. package/lib/ChatCompletionRunner.d.ts.map +1 -1
  258. package/lib/ChatCompletionRunner.js +4 -4
  259. package/lib/ChatCompletionRunner.js.map +1 -1
  260. package/lib/ChatCompletionRunner.mjs +4 -4
  261. package/lib/ChatCompletionRunner.mjs.map +1 -1
  262. package/lib/ChatCompletionStream.d.ts +71 -12
  263. package/lib/ChatCompletionStream.d.ts.map +1 -1
  264. package/lib/ChatCompletionStream.js +233 -42
  265. package/lib/ChatCompletionStream.js.map +1 -1
  266. package/lib/ChatCompletionStream.mjs +234 -43
  267. package/lib/ChatCompletionStream.mjs.map +1 -1
  268. package/lib/ChatCompletionStreamingRunner.d.ts +8 -6
  269. package/lib/ChatCompletionStreamingRunner.d.ts.map +1 -1
  270. package/lib/ChatCompletionStreamingRunner.js +9 -7
  271. package/lib/ChatCompletionStreamingRunner.js.map +1 -1
  272. package/lib/ChatCompletionStreamingRunner.mjs +9 -7
  273. package/lib/ChatCompletionStreamingRunner.mjs.map +1 -1
  274. package/lib/EventStream.d.ts +63 -0
  275. package/lib/EventStream.d.ts.map +1 -0
  276. package/lib/EventStream.js +200 -0
  277. package/lib/EventStream.js.map +1 -0
  278. package/lib/EventStream.mjs +196 -0
  279. package/lib/EventStream.mjs.map +1 -0
  280. package/lib/RunnableFunction.d.ts +4 -2
  281. package/lib/RunnableFunction.d.ts.map +1 -1
  282. package/lib/RunnableFunction.js.map +1 -1
  283. package/lib/RunnableFunction.mjs.map +1 -1
  284. package/lib/parser.d.ts +37 -0
  285. package/lib/parser.d.ts.map +1 -0
  286. package/lib/parser.js +133 -0
  287. package/lib/parser.js.map +1 -0
  288. package/lib/parser.mjs +121 -0
  289. package/lib/parser.mjs.map +1 -0
  290. package/package.json +10 -2
  291. package/resources/audio/audio.d.ts +4 -0
  292. package/resources/audio/audio.d.ts.map +1 -1
  293. package/resources/audio/audio.js.map +1 -1
  294. package/resources/audio/audio.mjs.map +1 -1
  295. package/resources/audio/index.d.ts +2 -2
  296. package/resources/audio/index.d.ts.map +1 -1
  297. package/resources/audio/index.js.map +1 -1
  298. package/resources/audio/index.mjs.map +1 -1
  299. package/resources/audio/speech.d.ts +3 -1
  300. package/resources/audio/speech.d.ts.map +1 -1
  301. package/resources/audio/speech.js.map +1 -1
  302. package/resources/audio/speech.mjs.map +1 -1
  303. package/resources/audio/transcriptions.d.ts +2 -1
  304. package/resources/audio/transcriptions.d.ts.map +1 -1
  305. package/resources/audio/transcriptions.js.map +1 -1
  306. package/resources/audio/transcriptions.mjs.map +1 -1
  307. package/resources/audio/translations.d.ts +2 -1
  308. package/resources/audio/translations.d.ts.map +1 -1
  309. package/resources/audio/translations.js.map +1 -1
  310. package/resources/audio/translations.mjs.map +1 -1
  311. package/resources/beta/assistants.d.ts +19 -3
  312. package/resources/beta/assistants.d.ts.map +1 -1
  313. package/resources/beta/assistants.js.map +1 -1
  314. package/resources/beta/assistants.mjs.map +1 -1
  315. package/resources/beta/beta.d.ts +0 -1
  316. package/resources/beta/beta.d.ts.map +1 -1
  317. package/resources/beta/beta.js.map +1 -1
  318. package/resources/beta/beta.mjs.map +1 -1
  319. package/resources/beta/chat/completions.d.ts +25 -5
  320. package/resources/beta/chat/completions.d.ts.map +1 -1
  321. package/resources/beta/chat/completions.js +17 -5
  322. package/resources/beta/chat/completions.js.map +1 -1
  323. package/resources/beta/chat/completions.mjs +17 -5
  324. package/resources/beta/chat/completions.mjs.map +1 -1
  325. package/resources/beta/index.d.ts +1 -1
  326. package/resources/beta/index.d.ts.map +1 -1
  327. package/resources/beta/index.js.map +1 -1
  328. package/resources/beta/index.mjs.map +1 -1
  329. package/resources/beta/threads/index.d.ts +2 -2
  330. package/resources/beta/threads/index.d.ts.map +1 -1
  331. package/resources/beta/threads/index.js.map +1 -1
  332. package/resources/beta/threads/index.mjs.map +1 -1
  333. package/resources/beta/threads/messages.d.ts +28 -2
  334. package/resources/beta/threads/messages.d.ts.map +1 -1
  335. package/resources/beta/threads/messages.js.map +1 -1
  336. package/resources/beta/threads/messages.mjs.map +1 -1
  337. package/resources/beta/threads/runs/runs.d.ts +12 -1
  338. package/resources/beta/threads/runs/runs.d.ts.map +1 -1
  339. package/resources/beta/threads/runs/runs.js.map +1 -1
  340. package/resources/beta/threads/runs/runs.mjs.map +1 -1
  341. package/resources/beta/threads/threads.d.ts +22 -8
  342. package/resources/beta/threads/threads.d.ts.map +1 -1
  343. package/resources/beta/threads/threads.js.map +1 -1
  344. package/resources/beta/threads/threads.mjs.map +1 -1
  345. package/resources/beta/vector-stores/files.d.ts +1 -1
  346. package/resources/beta/vector-stores/files.d.ts.map +1 -1
  347. package/resources/chat/chat.d.ts +2 -1
  348. package/resources/chat/chat.d.ts.map +1 -1
  349. package/resources/chat/chat.js.map +1 -1
  350. package/resources/chat/chat.mjs.map +1 -1
  351. package/resources/chat/completions.d.ts +37 -26
  352. package/resources/chat/completions.d.ts.map +1 -1
  353. package/resources/chat/completions.js.map +1 -1
  354. package/resources/chat/completions.mjs.map +1 -1
  355. package/resources/chat/index.d.ts +1 -1
  356. package/resources/chat/index.d.ts.map +1 -1
  357. package/resources/chat/index.js.map +1 -1
  358. package/resources/chat/index.mjs.map +1 -1
  359. package/resources/fine-tuning/jobs/jobs.d.ts +3 -3
  360. package/resources/fine-tuning/jobs/jobs.d.ts.map +1 -1
  361. package/resources/images.d.ts +5 -3
  362. package/resources/images.d.ts.map +1 -1
  363. package/resources/images.js.map +1 -1
  364. package/resources/images.mjs.map +1 -1
  365. package/resources/index.d.ts +3 -3
  366. package/resources/index.d.ts.map +1 -1
  367. package/resources/index.js.map +1 -1
  368. package/resources/index.mjs +1 -1
  369. package/resources/index.mjs.map +1 -1
  370. package/resources/moderations.d.ts +3 -1
  371. package/resources/moderations.d.ts.map +1 -1
  372. package/resources/moderations.js.map +1 -1
  373. package/resources/moderations.mjs.map +1 -1
  374. package/resources/shared.d.ts +53 -0
  375. package/resources/shared.d.ts.map +1 -1
  376. package/src/_vendor/partial-json-parser/README.md +3 -0
  377. package/src/_vendor/partial-json-parser/parser.ts +264 -0
  378. package/src/_vendor/zod-to-json-schema/Options.ts +73 -0
  379. package/src/_vendor/zod-to-json-schema/Refs.ts +39 -0
  380. package/src/_vendor/zod-to-json-schema/errorMessages.ts +31 -0
  381. package/src/_vendor/zod-to-json-schema/index.ts +37 -0
  382. package/src/_vendor/zod-to-json-schema/parseDef.ts +231 -0
  383. package/src/_vendor/zod-to-json-schema/parsers/any.ts +5 -0
  384. package/src/_vendor/zod-to-json-schema/parsers/array.ts +36 -0
  385. package/src/_vendor/zod-to-json-schema/parsers/bigint.ts +60 -0
  386. package/src/_vendor/zod-to-json-schema/parsers/boolean.ts +9 -0
  387. package/src/_vendor/zod-to-json-schema/parsers/branded.ts +7 -0
  388. package/src/_vendor/zod-to-json-schema/parsers/catch.ts +7 -0
  389. package/src/_vendor/zod-to-json-schema/parsers/date.ts +83 -0
  390. package/src/_vendor/zod-to-json-schema/parsers/default.ts +10 -0
  391. package/src/_vendor/zod-to-json-schema/parsers/effects.ts +7 -0
  392. package/src/_vendor/zod-to-json-schema/parsers/enum.ts +13 -0
  393. package/src/_vendor/zod-to-json-schema/parsers/intersection.ts +64 -0
  394. package/src/_vendor/zod-to-json-schema/parsers/literal.ts +37 -0
  395. package/src/_vendor/zod-to-json-schema/parsers/map.ts +42 -0
  396. package/src/_vendor/zod-to-json-schema/parsers/nativeEnum.ts +27 -0
  397. package/src/_vendor/zod-to-json-schema/parsers/never.ts +9 -0
  398. package/src/_vendor/zod-to-json-schema/parsers/null.ts +16 -0
  399. package/src/_vendor/zod-to-json-schema/parsers/nullable.ts +49 -0
  400. package/src/_vendor/zod-to-json-schema/parsers/number.ts +62 -0
  401. package/src/_vendor/zod-to-json-schema/parsers/object.ts +63 -0
  402. package/src/_vendor/zod-to-json-schema/parsers/optional.ts +25 -0
  403. package/src/_vendor/zod-to-json-schema/parsers/pipeline.ts +28 -0
  404. package/src/_vendor/zod-to-json-schema/parsers/promise.ts +7 -0
  405. package/src/_vendor/zod-to-json-schema/parsers/readonly.ts +7 -0
  406. package/src/_vendor/zod-to-json-schema/parsers/record.ts +73 -0
  407. package/src/_vendor/zod-to-json-schema/parsers/set.ts +36 -0
  408. package/src/_vendor/zod-to-json-schema/parsers/string.ts +400 -0
  409. package/src/_vendor/zod-to-json-schema/parsers/tuple.ts +54 -0
  410. package/src/_vendor/zod-to-json-schema/parsers/undefined.ts +9 -0
  411. package/src/_vendor/zod-to-json-schema/parsers/union.ts +119 -0
  412. package/src/_vendor/zod-to-json-schema/parsers/unknown.ts +5 -0
  413. package/src/_vendor/zod-to-json-schema/zodToJsonSchema.ts +91 -0
  414. package/src/error.ts +12 -0
  415. package/src/helpers/zod.ts +102 -0
  416. package/src/index.ts +8 -0
  417. package/src/lib/AbstractChatCompletionRunner.ts +72 -258
  418. package/src/lib/AssistantStream.ts +47 -19
  419. package/src/lib/ChatCompletionRunner.ts +16 -12
  420. package/src/lib/ChatCompletionStream.ts +423 -47
  421. package/src/lib/ChatCompletionStreamingRunner.ts +19 -15
  422. package/src/lib/{AbstractAssistantStreamRunner.ts → EventStream.ts} +37 -138
  423. package/src/lib/RunnableFunction.ts +4 -2
  424. package/src/lib/parser.ts +235 -0
  425. package/src/resources/audio/audio.ts +5 -0
  426. package/src/resources/audio/index.ts +2 -2
  427. package/src/resources/audio/speech.ts +4 -1
  428. package/src/resources/audio/transcriptions.ts +2 -1
  429. package/src/resources/audio/translations.ts +2 -1
  430. package/src/resources/beta/assistants.ts +19 -26
  431. package/src/resources/beta/beta.ts +0 -1
  432. package/src/resources/beta/chat/completions.ts +77 -27
  433. package/src/resources/beta/index.ts +0 -1
  434. package/src/resources/beta/threads/index.ts +2 -1
  435. package/src/resources/beta/threads/messages.ts +41 -2
  436. package/src/resources/beta/threads/runs/runs.ts +12 -25
  437. package/src/resources/beta/threads/threads.ts +26 -32
  438. package/src/resources/beta/vector-stores/files.ts +1 -1
  439. package/src/resources/chat/chat.ts +2 -0
  440. package/src/resources/chat/completions.ts +47 -27
  441. package/src/resources/chat/index.ts +1 -0
  442. package/src/resources/fine-tuning/jobs/jobs.ts +3 -3
  443. package/src/resources/images.ts +6 -3
  444. package/src/resources/index.ts +9 -2
  445. package/src/resources/moderations.ts +4 -1
  446. package/src/resources/shared.ts +62 -0
  447. package/src/version.ts +1 -1
  448. package/version.d.ts +1 -1
  449. package/version.js +1 -1
  450. package/version.mjs +1 -1
  451. package/lib/AbstractAssistantStreamRunner.d.ts +0 -74
  452. package/lib/AbstractAssistantStreamRunner.d.ts.map +0 -1
  453. package/lib/AbstractAssistantStreamRunner.js +0 -246
  454. package/lib/AbstractAssistantStreamRunner.js.map +0 -1
  455. package/lib/AbstractAssistantStreamRunner.mjs +0 -242
  456. package/lib/AbstractAssistantStreamRunner.mjs.map +0 -1
  457. package/lib/ChatCompletionRunFunctions.test.d.ts +0 -2
  458. package/lib/ChatCompletionRunFunctions.test.d.ts.map +0 -1
  459. package/lib/ChatCompletionRunFunctions.test.js +0 -2177
  460. package/lib/ChatCompletionRunFunctions.test.js.map +0 -1
  461. package/lib/ChatCompletionRunFunctions.test.mjs +0 -2172
  462. package/lib/ChatCompletionRunFunctions.test.mjs.map +0 -1
  463. package/src/lib/ChatCompletionRunFunctions.test.ts +0 -2328
@@ -0,0 +1,102 @@
1
+ import { ResponseFormatJSONSchema } from "../resources";
2
+ import type z from 'zod';
3
+ import {
4
+ AutoParseableResponseFormat,
5
+ AutoParseableTool,
6
+ makeParseableResponseFormat,
7
+ makeParseableTool,
8
+ } from '../lib/parser';
9
+ import { zodToJsonSchema as _zodToJsonSchema } from '../_vendor/zod-to-json-schema';
10
+
11
+ function zodToJsonSchema(schema: z.ZodType): Record<string, unknown> {
12
+ return _zodToJsonSchema(schema, { openaiStrictMode: true });
13
+ }
14
+
15
+ /**
16
+ * Creates a chat completion `JSONSchema` response format object from
17
+ * the given Zod schema.
18
+ *
19
+ * If this is passed to the `.parse()`, `.stream()` or `.runTools()`
20
+ * chat completion methods then the response message will contain a
21
+ * `.parsed` property that is the result of parsing the content with
22
+ * the given Zod object.
23
+ *
24
+ * ```ts
25
+ * const completion = await client.beta.chat.completions.parse({
26
+ * model: 'gpt-4o-2024-08-06',
27
+ * messages: [
28
+ * { role: 'system', content: 'You are a helpful math tutor.' },
29
+ * { role: 'user', content: 'solve 8x + 31 = 2' },
30
+ * ],
31
+ * response_format: zodResponseFormat(
32
+ * z.object({
33
+ * steps: z.array(z.object({
34
+ * explanation: z.string(),
35
+ * answer: z.string(),
36
+ * })),
37
+ * final_answer: z.string(),
38
+ * }),
39
+ * 'math_answer',
40
+ * ),
41
+ * });
42
+ * const message = completion.choices[0]?.message;
43
+ * if (message?.parsed) {
44
+ * console.log(message.parsed);
45
+ * console.log(message.parsed.final_answer);
46
+ * }
47
+ * ```
48
+ *
49
+ * This can be passed directly to the `.create()` method but will not
50
+ * result in any automatic parsing, you'll have to parse the response yourself.
51
+ */
52
+ export function zodResponseFormat<ZodInput extends z.ZodType>(
53
+ zodObject: ZodInput,
54
+ name: string,
55
+ props?: Omit<ResponseFormatJSONSchema, 'schema' | 'strict' | 'name'>,
56
+ ): AutoParseableResponseFormat<z.infer<ZodInput>> {
57
+ return makeParseableResponseFormat(
58
+ {
59
+ type: 'json_schema',
60
+ json_schema: {
61
+ ...props,
62
+ name,
63
+ strict: true,
64
+ schema: zodToJsonSchema(zodObject),
65
+ },
66
+ },
67
+ (content) => zodObject.parse(JSON.parse(content)),
68
+ );
69
+ }
70
+
71
+ /**
72
+ * Creates a chat completion `function` tool that can be invoked
73
+ * automatically by the chat completion `.runTools()` method or automatically
74
+ * parsed by `.parse()` / `.stream()`.
75
+ */
76
+ export function zodFunction<Parameters extends z.ZodType>(options: {
77
+ name: string;
78
+ parameters: Parameters;
79
+ function?: ((args: z.infer<Parameters>) => unknown | Promise<unknown>) | undefined;
80
+ description?: string | undefined;
81
+ }): AutoParseableTool<{
82
+ arguments: Parameters;
83
+ name: string;
84
+ function: (args: z.infer<Parameters>) => unknown;
85
+ }> {
86
+ // @ts-expect-error TODO
87
+ return makeParseableTool<any>(
88
+ {
89
+ type: 'function',
90
+ function: {
91
+ name: options.name,
92
+ parameters: zodToJsonSchema(options.parameters),
93
+ strict: true,
94
+ ...(options.description ? { description: options.description } : undefined),
95
+ },
96
+ },
97
+ {
98
+ callback: options.function,
99
+ parser: (args) => options.parameters.parse(JSON.parse(args)),
100
+ },
101
+ );
102
+ }
package/src/index.ts CHANGED
@@ -184,6 +184,7 @@ export class OpenAI extends Core.APIClient {
184
184
  }
185
185
 
186
186
  static OpenAI = this;
187
+ static DEFAULT_TIMEOUT = 600000; // 10 minutes
187
188
 
188
189
  static OpenAIError = Errors.OpenAIError;
189
190
  static APIError = Errors.APIError;
@@ -247,6 +248,7 @@ export namespace OpenAI {
247
248
  export import ChatCompletionChunk = API.ChatCompletionChunk;
248
249
  export import ChatCompletionContentPart = API.ChatCompletionContentPart;
249
250
  export import ChatCompletionContentPartImage = API.ChatCompletionContentPartImage;
251
+ export import ChatCompletionContentPartRefusal = API.ChatCompletionContentPartRefusal;
250
252
  export import ChatCompletionContentPartText = API.ChatCompletionContentPartText;
251
253
  export import ChatCompletionFunctionCallOption = API.ChatCompletionFunctionCallOption;
252
254
  export import ChatCompletionFunctionMessageParam = API.ChatCompletionFunctionMessageParam;
@@ -281,15 +283,18 @@ export namespace OpenAI {
281
283
 
282
284
  export import Images = API.Images;
283
285
  export import Image = API.Image;
286
+ export import ImageModel = API.ImageModel;
284
287
  export import ImagesResponse = API.ImagesResponse;
285
288
  export import ImageCreateVariationParams = API.ImageCreateVariationParams;
286
289
  export import ImageEditParams = API.ImageEditParams;
287
290
  export import ImageGenerateParams = API.ImageGenerateParams;
288
291
 
289
292
  export import Audio = API.Audio;
293
+ export import AudioModel = API.AudioModel;
290
294
 
291
295
  export import Moderations = API.Moderations;
292
296
  export import Moderation = API.Moderation;
297
+ export import ModerationModel = API.ModerationModel;
293
298
  export import ModerationCreateResponse = API.ModerationCreateResponse;
294
299
  export import ModerationCreateParams = API.ModerationCreateParams;
295
300
 
@@ -318,6 +323,9 @@ export namespace OpenAI {
318
323
  export import ErrorObject = API.ErrorObject;
319
324
  export import FunctionDefinition = API.FunctionDefinition;
320
325
  export import FunctionParameters = API.FunctionParameters;
326
+ export import ResponseFormatJSONObject = API.ResponseFormatJSONObject;
327
+ export import ResponseFormatJSONSchema = API.ResponseFormatJSONSchema;
328
+ export import ResponseFormatText = API.ResponseFormatText;
321
329
  }
322
330
 
323
331
  // ---------------------- Azure ----------------------
@@ -1,18 +1,18 @@
1
1
  import * as Core from "../core";
2
2
  import { type CompletionUsage } from "../resources/completions";
3
3
  import {
4
- type Completions,
5
4
  type ChatCompletion,
6
5
  type ChatCompletionMessage,
7
6
  type ChatCompletionMessageParam,
8
7
  type ChatCompletionCreateParams,
9
8
  type ChatCompletionTool,
10
9
  } from "../resources/chat/completions";
11
- import { APIUserAbortError, OpenAIError } from "../error";
10
+ import { OpenAIError } from "../error";
12
11
  import {
13
12
  type RunnableFunction,
14
13
  isRunnableFunctionWithParse,
15
14
  type BaseFunctionsArgs,
15
+ RunnableToolFunction,
16
16
  } from './RunnableFunction';
17
17
  import { ChatCompletionFunctionRunnerParams, ChatCompletionToolRunnerParams } from './ChatCompletionRunner';
18
18
  import {
@@ -20,6 +20,10 @@ import {
20
20
  ChatCompletionStreamingToolRunnerParams,
21
21
  } from './ChatCompletionStreamingRunner';
22
22
  import { isAssistantMessage, isFunctionMessage, isToolMessage } from './chatCompletionUtils';
23
+ import { BaseEvents, EventStream } from './EventStream';
24
+ import { ParsedChatCompletion } from '../resources/beta/chat/completions';
25
+ import OpenAI from '../index';
26
+ import { isAutoParsableTool, parseChatCompletion } from "./parser";
23
27
 
24
28
  const DEFAULT_MAX_CHAT_COMPLETIONS = 10;
25
29
  export interface RunnerOptions extends Core.RequestOptions {
@@ -27,60 +31,17 @@ export interface RunnerOptions extends Core.RequestOptions {
27
31
  maxChatCompletions?: number;
28
32
  }
29
33
 
30
- export abstract class AbstractChatCompletionRunner<
31
- Events extends CustomEvents<any> = AbstractChatCompletionRunnerEvents,
32
- > {
33
- controller: AbortController = new AbortController();
34
-
35
- #connectedPromise: Promise<void>;
36
- #resolveConnectedPromise: () => void = () => {};
37
- #rejectConnectedPromise: (error: OpenAIError) => void = () => {};
38
-
39
- #endPromise: Promise<void>;
40
- #resolveEndPromise: () => void = () => {};
41
- #rejectEndPromise: (error: OpenAIError) => void = () => {};
42
-
43
- #listeners: { [Event in keyof Events]?: ListenersForEvent<Events, Event> } = {};
44
-
45
- protected _chatCompletions: ChatCompletion[] = [];
34
+ export class AbstractChatCompletionRunner<
35
+ EventTypes extends AbstractChatCompletionRunnerEvents,
36
+ ParsedT,
37
+ > extends EventStream<EventTypes> {
38
+ protected _chatCompletions: ParsedChatCompletion<ParsedT>[] = [];
46
39
  messages: ChatCompletionMessageParam[] = [];
47
40
 
48
- #ended = false;
49
- #errored = false;
50
- #aborted = false;
51
- #catchingPromiseCreated = false;
52
-
53
- constructor() {
54
- this.#connectedPromise = new Promise<void>((resolve, reject) => {
55
- this.#resolveConnectedPromise = resolve;
56
- this.#rejectConnectedPromise = reject;
57
- });
58
-
59
- this.#endPromise = new Promise<void>((resolve, reject) => {
60
- this.#resolveEndPromise = resolve;
61
- this.#rejectEndPromise = reject;
62
- });
63
-
64
- // Don't let these promises cause unhandled rejection errors.
65
- // we will manually cause an unhandled rejection error later
66
- // if the user hasn't registered any error listener or called
67
- // any promise-returning method.
68
- this.#connectedPromise.catch(() => {});
69
- this.#endPromise.catch(() => {});
70
- }
71
-
72
- protected _run(executor: () => Promise<any>) {
73
- // Unfortunately if we call `executor()` immediately we get runtime errors about
74
- // references to `this` before the `super()` constructor call returns.
75
- setTimeout(() => {
76
- executor().then(() => {
77
- this._emitFinal();
78
- this._emit('end');
79
- }, this.#handleError);
80
- }, 0);
81
- }
82
-
83
- protected _addChatCompletion(chatCompletion: ChatCompletion): ChatCompletion {
41
+ protected _addChatCompletion(
42
+ this: AbstractChatCompletionRunner<AbstractChatCompletionRunnerEvents, ParsedT>,
43
+ chatCompletion: ParsedChatCompletion<ParsedT>,
44
+ ): ParsedChatCompletion<ParsedT> {
84
45
  this._chatCompletions.push(chatCompletion);
85
46
  this._emit('chatCompletion', chatCompletion);
86
47
  const message = chatCompletion.choices[0]?.message;
@@ -88,7 +49,11 @@ export abstract class AbstractChatCompletionRunner<
88
49
  return chatCompletion;
89
50
  }
90
51
 
91
- protected _addMessage(message: ChatCompletionMessageParam, emit = true) {
52
+ protected _addMessage(
53
+ this: AbstractChatCompletionRunner<AbstractChatCompletionRunnerEvents, ParsedT>,
54
+ message: ChatCompletionMessageParam,
55
+ emit = true,
56
+ ) {
92
57
  if (!('content' in message)) message.content = null;
93
58
 
94
59
  this.messages.push(message);
@@ -110,104 +75,11 @@ export abstract class AbstractChatCompletionRunner<
110
75
  }
111
76
  }
112
77
 
113
- protected _connected() {
114
- if (this.ended) return;
115
- this.#resolveConnectedPromise();
116
- this._emit('connect');
117
- }
118
-
119
- get ended(): boolean {
120
- return this.#ended;
121
- }
122
-
123
- get errored(): boolean {
124
- return this.#errored;
125
- }
126
-
127
- get aborted(): boolean {
128
- return this.#aborted;
129
- }
130
-
131
- abort() {
132
- this.controller.abort();
133
- }
134
-
135
- /**
136
- * Adds the listener function to the end of the listeners array for the event.
137
- * No checks are made to see if the listener has already been added. Multiple calls passing
138
- * the same combination of event and listener will result in the listener being added, and
139
- * called, multiple times.
140
- * @returns this ChatCompletionStream, so that calls can be chained
141
- */
142
- on<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
143
- const listeners: ListenersForEvent<Events, Event> =
144
- this.#listeners[event] || (this.#listeners[event] = []);
145
- listeners.push({ listener });
146
- return this;
147
- }
148
-
149
- /**
150
- * Removes the specified listener from the listener array for the event.
151
- * off() will remove, at most, one instance of a listener from the listener array. If any single
152
- * listener has been added multiple times to the listener array for the specified event, then
153
- * off() must be called multiple times to remove each instance.
154
- * @returns this ChatCompletionStream, so that calls can be chained
155
- */
156
- off<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
157
- const listeners = this.#listeners[event];
158
- if (!listeners) return this;
159
- const index = listeners.findIndex((l) => l.listener === listener);
160
- if (index >= 0) listeners.splice(index, 1);
161
- return this;
162
- }
163
-
164
- /**
165
- * Adds a one-time listener function for the event. The next time the event is triggered,
166
- * this listener is removed and then invoked.
167
- * @returns this ChatCompletionStream, so that calls can be chained
168
- */
169
- once<Event extends keyof Events>(event: Event, listener: ListenerForEvent<Events, Event>): this {
170
- const listeners: ListenersForEvent<Events, Event> =
171
- this.#listeners[event] || (this.#listeners[event] = []);
172
- listeners.push({ listener, once: true });
173
- return this;
174
- }
175
-
176
- /**
177
- * This is similar to `.once()`, but returns a Promise that resolves the next time
178
- * the event is triggered, instead of calling a listener callback.
179
- * @returns a Promise that resolves the next time given event is triggered,
180
- * or rejects if an error is emitted. (If you request the 'error' event,
181
- * returns a promise that resolves with the error).
182
- *
183
- * Example:
184
- *
185
- * const message = await stream.emitted('message') // rejects if the stream errors
186
- */
187
- emitted<Event extends keyof Events>(
188
- event: Event,
189
- ): Promise<
190
- EventParameters<Events, Event> extends [infer Param] ? Param
191
- : EventParameters<Events, Event> extends [] ? void
192
- : EventParameters<Events, Event>
193
- > {
194
- return new Promise((resolve, reject) => {
195
- this.#catchingPromiseCreated = true;
196
- if (event !== 'error') this.once('error', reject);
197
- this.once(event, resolve as any);
198
- });
199
- }
200
-
201
- async done(): Promise<void> {
202
- this.#catchingPromiseCreated = true;
203
- await this.#endPromise;
204
- }
205
-
206
78
  /**
207
79
  * @returns a promise that resolves with the final ChatCompletion, or rejects
208
80
  * if an error occurred or the stream ended prematurely without producing a ChatCompletion.
209
81
  */
210
- async finalChatCompletion(): Promise<ChatCompletion> {
82
+ async finalChatCompletion(): Promise<ParsedChatCompletion<ParsedT>> {
211
83
  await this.done();
212
84
  const completion = this._chatCompletions[this._chatCompletions.length - 1];
213
85
  if (!completion) throw new OpenAIError('stream ended without producing a ChatCompletion');
@@ -233,7 +105,11 @@ export abstract class AbstractChatCompletionRunner<
233
105
  const message = this.messages[i];
234
106
  if (isAssistantMessage(message)) {
235
107
  const { function_call, ...rest } = message;
236
- const ret: ChatCompletionMessage = { ...rest, content: message.content ?? null };
108
+ const ret: ChatCompletionMessage = {
109
+ ...rest,
110
+ content: (message as ChatCompletionMessage).content ?? null,
111
+ refusal: (message as ChatCompletionMessage).refusal ?? null,
112
+ };
237
113
  if (function_call) {
238
114
  ret.function_call = function_call;
239
115
  }
@@ -284,6 +160,7 @@ export abstract class AbstractChatCompletionRunner<
284
160
  if (
285
161
  isToolMessage(message) &&
286
162
  message.content != null &&
163
+ typeof message.content === 'string' &&
287
164
  this.messages.some(
288
165
  (x) =>
289
166
  x.role === 'assistant' &&
@@ -327,75 +204,9 @@ export abstract class AbstractChatCompletionRunner<
327
204
  return [...this._chatCompletions];
328
205
  }
329
206
 
330
- #handleError = (error: unknown) => {
331
- this.#errored = true;
332
- if (error instanceof Error && error.name === 'AbortError') {
333
- error = new APIUserAbortError();
334
- }
335
- if (error instanceof APIUserAbortError) {
336
- this.#aborted = true;
337
- return this._emit('abort', error);
338
- }
339
- if (error instanceof OpenAIError) {
340
- return this._emit('error', error);
341
- }
342
- if (error instanceof Error) {
343
- const openAIError: OpenAIError = new OpenAIError(error.message);
344
- // @ts-ignore
345
- openAIError.cause = error;
346
- return this._emit('error', openAIError);
347
- }
348
- return this._emit('error', new OpenAIError(String(error)));
349
- };
350
-
351
- protected _emit<Event extends keyof Events>(event: Event, ...args: EventParameters<Events, Event>) {
352
- // make sure we don't emit any events after end
353
- if (this.#ended) {
354
- return;
355
- }
356
-
357
- if (event === 'end') {
358
- this.#ended = true;
359
- this.#resolveEndPromise();
360
- }
361
-
362
- const listeners: ListenersForEvent<Events, Event> | undefined = this.#listeners[event];
363
- if (listeners) {
364
- this.#listeners[event] = listeners.filter((l) => !l.once) as any;
365
- listeners.forEach(({ listener }: any) => listener(...args));
366
- }
367
-
368
- if (event === 'abort') {
369
- const error = args[0] as APIUserAbortError;
370
- if (!this.#catchingPromiseCreated && !listeners?.length) {
371
- Promise.reject(error);
372
- }
373
- this.#rejectConnectedPromise(error);
374
- this.#rejectEndPromise(error);
375
- this._emit('end');
376
- return;
377
- }
378
-
379
- if (event === 'error') {
380
- // NOTE: _emit('error', error) should only be called from #handleError().
381
-
382
- const error = args[0] as OpenAIError;
383
- if (!this.#catchingPromiseCreated && !listeners?.length) {
384
- // Trigger an unhandled rejection if the user hasn't registered any error handlers.
385
- // If you are seeing stack traces here, make sure to handle errors via either:
386
- // - runner.on('error', () => ...)
387
- // - await runner.done()
388
- // - await runner.finalChatCompletion()
389
- // - etc.
390
- Promise.reject(error);
391
- }
392
- this.#rejectConnectedPromise(error);
393
- this.#rejectEndPromise(error);
394
- this._emit('end');
395
- }
396
- }
397
-
398
- protected _emitFinal() {
207
+ protected override _emitFinal(
208
+ this: AbstractChatCompletionRunner<AbstractChatCompletionRunnerEvents, ParsedT>,
209
+ ) {
399
210
  const completion = this._chatCompletions[this._chatCompletions.length - 1];
400
211
  if (completion) this._emit('finalChatCompletion', completion);
401
212
  const finalMessage = this.#getFinalMessage();
@@ -423,10 +234,10 @@ export abstract class AbstractChatCompletionRunner<
423
234
  }
424
235
 
425
236
  protected async _createChatCompletion(
426
- completions: Completions,
237
+ client: OpenAI,
427
238
  params: ChatCompletionCreateParams,
428
239
  options?: Core.RequestOptions,
429
- ): Promise<ChatCompletion> {
240
+ ): Promise<ParsedChatCompletion<ParsedT>> {
430
241
  const signal = options?.signal;
431
242
  if (signal) {
432
243
  if (signal.aborted) this.controller.abort();
@@ -434,27 +245,27 @@ export abstract class AbstractChatCompletionRunner<
434
245
  }
435
246
  this.#validateParams(params);
436
247
 
437
- const chatCompletion = await completions.create(
248
+ const chatCompletion = await client.chat.completions.create(
438
249
  { ...params, stream: false },
439
250
  { ...options, signal: this.controller.signal },
440
251
  );
441
252
  this._connected();
442
- return this._addChatCompletion(chatCompletion);
253
+ return this._addChatCompletion(parseChatCompletion(chatCompletion, params));
443
254
  }
444
255
 
445
256
  protected async _runChatCompletion(
446
- completions: Completions,
257
+ client: OpenAI,
447
258
  params: ChatCompletionCreateParams,
448
259
  options?: Core.RequestOptions,
449
260
  ): Promise<ChatCompletion> {
450
261
  for (const message of params.messages) {
451
262
  this._addMessage(message, false);
452
263
  }
453
- return await this._createChatCompletion(completions, params, options);
264
+ return await this._createChatCompletion(client, params, options);
454
265
  }
455
266
 
456
267
  protected async _runFunctions<FunctionsArgs extends BaseFunctionsArgs>(
457
- completions: Completions,
268
+ client: OpenAI,
458
269
  params:
459
270
  | ChatCompletionFunctionRunnerParams<FunctionsArgs>
460
271
  | ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>,
@@ -484,7 +295,7 @@ export abstract class AbstractChatCompletionRunner<
484
295
 
485
296
  for (let i = 0; i < maxChatCompletions; ++i) {
486
297
  const chatCompletion: ChatCompletion = await this._createChatCompletion(
487
- completions,
298
+ client,
488
299
  {
489
300
  ...restParams,
490
301
  function_call,
@@ -539,7 +350,7 @@ export abstract class AbstractChatCompletionRunner<
539
350
  }
540
351
 
541
352
  protected async _runTools<FunctionsArgs extends BaseFunctionsArgs>(
542
- completions: Completions,
353
+ client: OpenAI,
543
354
  params:
544
355
  | ChatCompletionToolRunnerParams<FunctionsArgs>
545
356
  | ChatCompletionStreamingToolRunnerParams<FunctionsArgs>,
@@ -550,8 +361,31 @@ export abstract class AbstractChatCompletionRunner<
550
361
  const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice?.function?.name;
551
362
  const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};
552
363
 
364
+ // TODO(someday): clean this logic up
365
+ const inputTools = params.tools.map((tool): RunnableToolFunction<any> => {
366
+ if (isAutoParsableTool(tool)) {
367
+ if (!tool.$callback) {
368
+ throw new OpenAIError('Tool given to `.runTools()` that does not have an associated function');
369
+ }
370
+
371
+ return {
372
+ type: 'function',
373
+ function: {
374
+ function: tool.$callback,
375
+ name: tool.function.name,
376
+ description: tool.function.description || '',
377
+ parameters: tool.function.parameters as any,
378
+ parse: tool.$parseRaw,
379
+ strict: true,
380
+ },
381
+ };
382
+ }
383
+
384
+ return tool as any as RunnableToolFunction<any>;
385
+ });
386
+
553
387
  const functionsByName: Record<string, RunnableFunction<any>> = {};
554
- for (const f of params.tools) {
388
+ for (const f of inputTools) {
555
389
  if (f.type === 'function') {
556
390
  functionsByName[f.function.name || f.function.function.name] = f.function;
557
391
  }
@@ -559,7 +393,7 @@ export abstract class AbstractChatCompletionRunner<
559
393
 
560
394
  const tools: ChatCompletionTool[] =
561
395
  'tools' in params ?
562
- params.tools.map((t) =>
396
+ inputTools.map((t) =>
563
397
  t.type === 'function' ?
564
398
  {
565
399
  type: 'function',
@@ -567,6 +401,7 @@ export abstract class AbstractChatCompletionRunner<
567
401
  name: t.function.name || t.function.function.name,
568
402
  parameters: t.function.parameters as Record<string, unknown>,
569
403
  description: t.function.description,
404
+ strict: t.function.strict,
570
405
  },
571
406
  }
572
407
  : (t as unknown as ChatCompletionTool),
@@ -579,7 +414,7 @@ export abstract class AbstractChatCompletionRunner<
579
414
 
580
415
  for (let i = 0; i < maxChatCompletions; ++i) {
581
416
  const chatCompletion: ChatCompletion = await this._createChatCompletion(
582
- completions,
417
+ client,
583
418
  {
584
419
  ...restParams,
585
420
  tool_choice,
@@ -592,7 +427,7 @@ export abstract class AbstractChatCompletionRunner<
592
427
  if (!message) {
593
428
  throw new OpenAIError(`missing message in ChatCompletion response`);
594
429
  }
595
- if (!message.tool_calls) {
430
+ if (!message.tool_calls?.length) {
596
431
  return;
597
432
  }
598
433
 
@@ -603,8 +438,10 @@ export abstract class AbstractChatCompletionRunner<
603
438
  const fn = functionsByName[name];
604
439
 
605
440
  if (!fn) {
606
- const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${tools
607
- .map((f) => JSON.stringify(f.function.name))
441
+ const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(
442
+ functionsByName,
443
+ )
444
+ .map((name) => JSON.stringify(name))
608
445
  .join(', ')}. Please try again`;
609
446
 
610
447
  this._addMessage({ role, tool_call_id, content });
@@ -650,27 +487,7 @@ export abstract class AbstractChatCompletionRunner<
650
487
  }
651
488
  }
652
489
 
653
- type CustomEvents<Event extends string> = {
654
- [k in Event]: k extends keyof AbstractChatCompletionRunnerEvents ? AbstractChatCompletionRunnerEvents[k]
655
- : (...args: any[]) => void;
656
- };
657
-
658
- type ListenerForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Event extends (
659
- keyof AbstractChatCompletionRunnerEvents
660
- ) ?
661
- AbstractChatCompletionRunnerEvents[Event]
662
- : Events[Event];
663
-
664
- type ListenersForEvent<Events extends CustomEvents<any>, Event extends keyof Events> = Array<{
665
- listener: ListenerForEvent<Events, Event>;
666
- once?: boolean;
667
- }>;
668
- type EventParameters<Events extends CustomEvents<any>, Event extends keyof Events> = Parameters<
669
- ListenerForEvent<Events, Event>
670
- >;
671
-
672
- export interface AbstractChatCompletionRunnerEvents {
673
- connect: () => void;
490
+ export interface AbstractChatCompletionRunnerEvents extends BaseEvents {
674
491
  functionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;
675
492
  message: (message: ChatCompletionMessageParam) => void;
676
493
  chatCompletion: (completion: ChatCompletion) => void;
@@ -680,8 +497,5 @@ export interface AbstractChatCompletionRunnerEvents {
680
497
  finalFunctionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void;
681
498
  functionCallResult: (content: string) => void;
682
499
  finalFunctionCallResult: (content: string) => void;
683
- error: (error: OpenAIError) => void;
684
- abort: (error: APIUserAbortError) => void;
685
- end: () => void;
686
500
  totalUsage: (usage: CompletionUsage) => void;
687
501
  }