-
Notifications
You must be signed in to change notification settings - Fork 42
feat: add support for OpenAI SDK v5 #644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 4 commits
3e0b7b1
523dbad
a089466
f020ac6
2ece4a2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,7 +25,7 @@ import { | |
CONTEXT_KEY_ALLOW_TRACE_CONTENT, | ||
SpanAttributes, | ||
} from "@traceloop/ai-semantic-conventions"; | ||
import { OpenAIInstrumentationConfig } from "./types"; | ||
import { OpenAIVersion, OpenAIInstrumentationConfig } from "./types"; | ||
import type { | ||
ChatCompletion, | ||
ChatCompletionChunk, | ||
|
@@ -119,7 +119,7 @@ export class OpenAIInstrumentation extends InstrumentationBase { | |
protected init(): InstrumentationModuleDefinition { | ||
const module = new InstrumentationNodeModuleDefinition( | ||
"openai", | ||
[">=3.1.0 <5"], | ||
[">=3.1.0 <6"], | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainWidened module semver range to >=3.1.0 <6 — verify repo-wide alignment (docs, deps, tests) Ensure we don’t have stale references to "<5" elsewhere and that CI/tests cover v5. Run the following to find and update any lingering constraints and to surface any openai dependency ranges: 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Searching for legacy range '>=3.1.0 <5' across the repo..."
rg -n ">=3\.1\.0\s*<5" || true
echo
echo "Searching for 'openai' version constraints in package.json files..."
fd -a package.json | while read -r f; do
hits=$(rg -n '"openai"\s*:\s*"[^\"]+"' "$f" || true)
if [[ -n "$hits" ]]; then
echo "$f"
echo "$hits"
echo
fi
done
echo "Checking docs/workflows for hardcoded SDK support statements..."
rg -n "(OpenAI SDK|openai@|>=3\.1\.0\s*<5|<5)" --glob '*.md' --glob '.github/**/*.yml' || true Length of output: 5204 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Inspecting instrumentation-openai package.json for openai dependency entries..."
grep -R '"openai"' -n packages/instrumentation-openai/package.json || true Length of output: 300 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Displaying lines 40-80 from packages/instrumentation-openai/package.json to inspect dependency sections..."
sed -n '40,80p' packages/instrumentation-openai/package.json Length of output: 1173 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Listing all GitHub workflow files:"
fd -a -e yml .github/workflows
echo
echo "Scanning workflows for 'openai' references:"
rg -n "openai" .github/workflows
echo
echo "Scanning workflows for matrix definitions:"
rg -n "matrix" .github/workflows Length of output: 505 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Inspecting peerDependencies in instrumentation-openai package.json..."
grep -R '"peerDependencies"' -n packages/instrumentation-openai/package.json || true
sed -n '1,39p' packages/instrumentation-openai/package.json
echo
echo "Checking for GitHub workflow files..."
if [ -d ".github/workflows" ]; then
find .github/workflows -type f -name '*.yml'
else
echo ".github/workflows directory not found"
fi
echo
echo "Scanning workflows for 'matrix' or 'openai' references..."
grep -R -n -E 'matrix|openai' .github/workflows || true Length of output: 1578 Ensure OpenAI v5 is covered in tests, deps, and CI
🤖 Prompt for AI Agents
|
||
this.patch.bind(this), | ||
this.unpatch.bind(this), | ||
); | ||
|
@@ -213,7 +213,7 @@ export class OpenAIInstrumentation extends InstrumentationBase { | |
|
||
private patchOpenAI( | ||
type: "chat" | "completion", | ||
version: "v3" | "v4" = "v4", | ||
version: OpenAIVersion = "v4", | ||
) { | ||
// eslint-disable-next-line @typescript-eslint/no-this-alias | ||
const plugin = this; | ||
|
@@ -602,7 +602,7 @@ export class OpenAIInstrumentation extends InstrumentationBase { | |
|
||
private _wrapPromise<T>( | ||
type: "chat" | "completion", | ||
version: "v3" | "v4", | ||
version: OpenAIVersion, | ||
span: Span, | ||
promise: APIPromise<T>, | ||
): APIPromise<T> { | ||
|
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Use a caret range for devDependency and verify Node.js >= 18 in CI/tooling
Pinning
openai
to an exact version is inconsistent with the rest of devDependencies and prevents receiving compatible patch/minor updates within v5. Also, the OpenAI SDK v5 requires Node.js >= 18. Make sure your CI/tooling uses Node >= 18, otherwise installs/tests may fail even if this package’s engines allow >=14.Apply this diff to align the semver policy:
If you want to make the Node requirement explicit in this package to avoid confusion for contributors running tests locally, consider bumping the engines field (outside this hunk). Example:
Run this script to verify Node versions configured across the repo:
🏁 Script executed:
Length of output: 3790
Align
openai
to semver policy & confirm Node.js ≥18openai
devDependency to a caret range so that patch/minor updates within v5 are picked up..nvmrc
(currently “20”), so the OpenAI SDK v5 requirement (Node ≥18) is satisfied.engines
field to this package’s package.json:Optional engines snippet:
🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+1 @hmnzr
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.