Skip to content

Commit d0d6e1b

Browse files
nirgaclaude
andcommitted
feat(openai): add comprehensive image generation instrumentation
- Implement image generation, editing, and variation instrumentation - Add proper OpenTelemetry span creation and attribute tracking - Support token usage calculation for DALL-E 2/3 models - Include image upload callback mechanism for base64 processing - Add comprehensive test coverage with HTTP recordings - Follow gen_ai semantic attribute conventions - Install @types/node dependency for TypeScript compilation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 5bf1651 commit d0d6e1b

File tree

24 files changed

+729
-563
lines changed

24 files changed

+729
-563
lines changed

packages/instrumentation-openai/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
"@pollyjs/core": "^6.0.6",
5454
"@pollyjs/persister-fs": "^6.0.6",
5555
"@types/mocha": "^10.0.10",
56+
"@types/node": "^24.0.15",
5657
"mocha": "^11.7.1",
5758
"openai": "4.38.3",
5859
"ts-mocha": "^11.1.0"

packages/instrumentation-openai/recordings/Test-OpenAI-instrumentation_1770406427/should-calculate-correct-tokens-for-different-quality-levels_3292443992/recording.har

Lines changed: 43 additions & 43 deletions
Large diffs are not rendered by default.

packages/instrumentation-openai/recordings/Test-OpenAI-instrumentation_1770406427/should-emit-logprobs-span-event-for-chat-completion_1028826680/recording.har

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,23 @@
8787
"url": "https://api.openai.com/v1/chat/completions"
8888
},
8989
"response": {
90-
"bodySize": 1325,
90+
"bodySize": 1394,
9191
"content": {
9292
"encoding": "base64",
9393
"mimeType": "application/json",
94-
"size": 1325,
95-
"text": "[\"H4sIAAAAAAAAAwAAAP//\",\"xJfLbtswEEX3+QpWa8vgS6ToTdEH0uwKFAGySIJClqeyEppUJbqtG/TfC8mOo1iCwiSV64UXw6HNc69mOLo7QSjIF8EMBekycemq0OEHdvbx+0Xkbors97vNl9Of5vxCrT+dQnlmSTCpd9j5DaTuftc0tatCg8ut2S6nJSQO6l8lMuKxkpTSZmFlF6DrbVnhQjaNQrcu5zbEhEa7nUubp1AFM3R5ghBCd813fUazgF/BDOHJfWQFVZVkEMz2SQgFpdV1JEiqKq9cYlwweVhMrXFgmmNfLDdokS+QWwL6XIA5Bw0rcOUGLeAHaFtAiTKL5qW9hbdX5sq8hzRZV1Bv2KBbKBzStspNhhKt62BeIlcmKZTVm/ZflvBtXSU1sllr3VpIjLEuqSVrYK93K3/2eNpmRWnn1WO+B4TLfRC1EpokZ2/B7Chbh2n/bDBDIZ5ijLFQlNCIHaTNN67lwsMnlpODCMG8E6LkUeR6cni+4msLbw//SIAhrtq6YTASERKLWHhiMdrFwt1Q1JM1MqlbwiApxSTi+NCD54AS4WMpHtvSugoHSQkljIv45aRSddl7fCfdrJFNPh+yWE1xHDMuOITSt0iPb9+uew5wRFPO4kgyCaFvVRIc+9iDlZeJ3cec/I/OdX+9DD/rkmDBxD9uXz2i+AnczSLkpbXERxY4s4PKCs4xE/IVwrIeMUZmasaQ4QuPY6W4OPTzGWAq9qmPHt+xPHq3aSayQT0Uk1HMpO9lIbqm9tTPuFC7CfOJgY1xwqnkvg+wEB5FqToNVHU9JT2h6PhjQj1/PzEmKKoUI+MPRMe/POr3jgF4MqWYYsrpK7qb9GrifaKNzL593Rqk54xSJl4xCntedJHPm0FfA2Eja5RoPSgQ4RzHcgv5FwAA//8=\",\"xFjbboQgEH33L8oHbBTFy9cQAuPuJK4SwCZ96L83she0Wkvamr4yMJkzhwyH86M3ooppWVofPwNwXz+llOY0K8viH6bA1l04WvS4vXbkp7qgZcPYnzbjaEzeS9kluSiqOktZrEheX94m7uOwoYLYsdhfvhMBjGZVU0QT+ou5k2yc+uRqrayrFnu0F25A2MHjsW7QJHnk85nIuDDviDbDVTvuWzBV8RiyJHiLs+CdOOIGJ7qwnt+pWmbjCpzAbu6kESnkBVQ4GWxFMSocZoFkhm1dzFbuG27szzHpQ0BK0A4U1wYUyiXgsM3A5Lx+te3ZY18wsWBeUQJ3CGbiQUErxu4mIYh9sw6uvMX+DEYb9K6i5/M9+QAAAP//\",\"AwCeabpsFxYAAA==\"]"
94+
"size": 1394,
95+
"text": "[\"H4sIAAAAAAAAA8SXz2+bMBTH7/0rPM4B2Rj/yqXapknboephnXZoq4mQ14TGwQicNVG1/30=\",\"cpamNDAPpSXLIYfnZ/Dn+7WfH49nCAX5NBijIJunNluWOvxIP5f64usD4cv3yYzemYsvl/efvmFb5Ot1MHIzzOQeMvs0K8rMstRgc1P8Gc4qSC24pxLBEqkUE3Q7sDRT0G7arLQhjVhoV9XEhJjEbDdzbvIM6mCMrs8QQuhx++/WWExhHYwRHj1FllDX6QyC8T4JoaAy2kWCtK7z2qaFDUbPg5kpLBTbZX+fb9A0nyI7B3RZQnEFGpZgqw2awk/QpoQKzQyaVGYB5+imuCk+QJauanAzNmgBpUW2SrMFMnco1dqF8wrBuoSihhpZY9ADaP2u+f4K7lZ16viLldaNgbQojE2dflvy293Irz2rNrOyMpP6Jewzz/U+iBoJ2yRrFlDskBuLaT42GKMQRxhjzCkmVCUHaZONbVjy/JNidBAhOGmFYvIicjs6XF/5o4G3h38hgI/L+egHI1QpIWTcE4vGbSzcDrGOrIFJ7Ry8pDGREieUHg9KeB9L8dCWuiPpJSWUxkpQdjSpUG32Dt9JO2tgk698FqsIS0kTnkAo+h7S09u3K6UeDh4pKeOYCAh5Tw6CZR97sOplYnubk/9RuZ7uGv9eV4lklIq3LV8dovQTuJ1FyLFnKRlY4JnxKstjwRNKXqMs7VBjYKhtU+K/8VjMMBfqeDAl+xyQDuOxOHm5OfdqwaRg7BDnr0pwOrB5rpX0rJdECeFS0Nf0Ku3IsEy7zvgfzWWsCBe0dxPGeY8ColrFXrW3H+kIsdO3NO67wV/mOZdUiuF7t9Pfc+5zybvpCZMqxq/oWzvLTp9bifChfXdfiR54GiUMi5jyNzW+XazbJ0N1tEriDdX4DQAA//8=\",\"xFlRboQgEP33FuUE6KorpyEExl0SVgjgJv3o3RvZWrRLrdHa/gpMmBl5vPdIVUO3v8tuU9VIXErFwWkxpRbP9qkum4o02+VKAtdSfLg5HsSk/Qnoc4LPOT79A5AlNPnhFHO0fJaFOa5yQsgegEvANt4sYdfdiIlZR/9feomwF4NqbOodqj8JlfnfU/jBGlxMtK5ITs57zhDZKOaOxpCXZfgoC4zLslyN/zv4epZY9cWjfTJiW9lJd6UWmNMhHee1QdkYL0RC/cyXRsbqm/E0VGDYxXjWULTN42Dx0UrktWcqfh/l/zwaFeCZVFNfGHHGryDiyuiYs15IPRnIJrk9byYV+5G37C5rwscBzsF4ENRYEJLPE47TLAyPCt9N+6xx2DByYO+SA/US7NAHAS3r1YNlIvfqPNxoK7sLWGNl8MhDP9+ydwAAAP//AwB030ew8hgAAA==\"]"
9696
},
9797
"cookies": [
9898
{
9999
"domain": ".api.openai.com",
100-
"expires": "2025-08-11T07:57:02.000Z",
100+
"expires": "2025-08-11T08:36:14.000Z",
101101
"httpOnly": true,
102102
"name": "__cf_bm",
103103
"path": "/",
104104
"sameSite": "None",
105105
"secure": true,
106-
"value": "uvgo5Ym7IcQGdvvF_1A4JXFlgMy.sl5b4z.erRP327Y-1754897222-1.0.1.1-OED4kuTKoJOCgtW9RGQcqs5OTaSuidAi1Tkk.Mcy_Vuq9CcdSNSoc.mo1usg.F2WNCYNf17arXfovSVoTQ_YvddB0T0qogTtlVYz_ahVi6Y"
106+
"value": "XwVN4Fl1Q6g10jjnxkpUjCax9RgU9yYsRAI3Lz4OtPI-1754899574-1.0.1.1-oZzHmjaLRkjDFztsHAfKziGoLuBGZqHELa5OOdQu3i2DaTBculsAvWlFmJHfISVVHwSJXjp.aLxt7OXq.QQ.WtNiIyv0oeZlGKH1GhvNOfM"
107107
},
108108
{
109109
"domain": ".api.openai.com",
@@ -112,13 +112,13 @@
112112
"path": "/",
113113
"sameSite": "None",
114114
"secure": true,
115-
"value": "gc.HFObe1_8NU3ZXFHFJYEd54BzX_aJw2YNA1Asq8Mk-1754897222904-0.0.1.1-604800000"
115+
"value": ".sVDp6cQJIZtoYxsARUmPz3MkW0vrvs2KJjqG870EaA-1754899574160-0.0.1.1-604800000"
116116
}
117117
],
118118
"headers": [
119119
{
120120
"name": "date",
121-
"value": "Mon, 11 Aug 2025 07:27:02 GMT"
121+
"value": "Mon, 11 Aug 2025 08:06:14 GMT"
122122
},
123123
{
124124
"name": "content-type",
@@ -142,7 +142,7 @@
142142
},
143143
{
144144
"name": "openai-processing-ms",
145-
"value": "389"
145+
"value": "538"
146146
},
147147
{
148148
"name": "openai-project",
@@ -154,7 +154,7 @@
154154
},
155155
{
156156
"name": "x-envoy-upstream-service-time",
157-
"value": "461"
157+
"value": "558"
158158
},
159159
{
160160
"name": "x-ratelimit-limit-requests",
@@ -170,7 +170,7 @@
170170
},
171171
{
172172
"name": "x-ratelimit-remaining-tokens",
173-
"value": "49999988"
173+
"value": "49999989"
174174
},
175175
{
176176
"name": "x-ratelimit-reset-requests",
@@ -182,7 +182,7 @@
182182
},
183183
{
184184
"name": "x-request-id",
185-
"value": "req_ae131ec1bca545ef9322dcb8931f39da"
185+
"value": "req_13e1c17bdfcb4c0dae3e7a183eeb062e"
186186
},
187187
{
188188
"name": "cf-cache-status",
@@ -191,12 +191,12 @@
191191
{
192192
"_fromType": "array",
193193
"name": "set-cookie",
194-
"value": "__cf_bm=uvgo5Ym7IcQGdvvF_1A4JXFlgMy.sl5b4z.erRP327Y-1754897222-1.0.1.1-OED4kuTKoJOCgtW9RGQcqs5OTaSuidAi1Tkk.Mcy_Vuq9CcdSNSoc.mo1usg.F2WNCYNf17arXfovSVoTQ_YvddB0T0qogTtlVYz_ahVi6Y; path=/; expires=Mon, 11-Aug-25 07:57:02 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
194+
"value": "__cf_bm=XwVN4Fl1Q6g10jjnxkpUjCax9RgU9yYsRAI3Lz4OtPI-1754899574-1.0.1.1-oZzHmjaLRkjDFztsHAfKziGoLuBGZqHELa5OOdQu3i2DaTBculsAvWlFmJHfISVVHwSJXjp.aLxt7OXq.QQ.WtNiIyv0oeZlGKH1GhvNOfM; path=/; expires=Mon, 11-Aug-25 08:36:14 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
195195
},
196196
{
197197
"_fromType": "array",
198198
"name": "set-cookie",
199-
"value": "_cfuvid=gc.HFObe1_8NU3ZXFHFJYEd54BzX_aJw2YNA1Asq8Mk-1754897222904-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
199+
"value": "_cfuvid=.sVDp6cQJIZtoYxsARUmPz3MkW0vrvs2KJjqG870EaA-1754899574160-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None"
200200
},
201201
{
202202
"name": "strict-transport-security",
@@ -212,7 +212,7 @@
212212
},
213213
{
214214
"name": "cf-ray",
215-
"value": "96d602173e577d94-TLV"
215+
"value": "96d63b7ded8cc22f-TLV"
216216
},
217217
{
218218
"name": "content-encoding",
@@ -229,16 +229,16 @@
229229
"status": 200,
230230
"statusText": "OK"
231231
},
232-
"startedDateTime": "2025-08-11T07:27:02.094Z",
233-
"time": 646,
232+
"startedDateTime": "2025-08-11T08:06:13.277Z",
233+
"time": 747,
234234
"timings": {
235235
"blocked": -1,
236236
"connect": -1,
237237
"dns": -1,
238238
"receive": 0,
239239
"send": 0,
240240
"ssl": -1,
241-
"wait": 646
241+
"wait": 747
242242
}
243243
}
244244
],

0 commit comments

Comments
 (0)