Skip to content

fix: Update OpenAI API imports for compatibility with v1.107+#25

Merged
tylerpayne merged 2 commits intomicrosoft:mainfrom
kaikreuzer:ChatCompletionToolParam
Sep 17, 2025
Merged

fix: Update OpenAI API imports for compatibility with v1.107+#25
tylerpayne merged 2 commits intomicrosoft:mainfrom
kaikreuzer:ChatCompletionToolParam

Conversation

@kaikreuzer
Copy link
Contributor

Fixes #24

@kaikreuzer
Copy link
Contributor Author

@microsoft-github-policy-service agree

@kaikreuzer kaikreuzer force-pushed the ChatCompletionToolParam branch from 7085fad to 6030348 Compare September 16, 2025 13:19
@nik1097
Copy link

nik1097 commented Sep 16, 2025

@afourney could we have this reviewed please?

@tylerpayne
Copy link
Collaborator

Thank you for the contribution! The poe check checks are failing. Once you make those passing I'll be happy to merge!

Signed-off-by: Kai Kreuzer <kai@openhab.org>
@kaikreuzer kaikreuzer force-pushed the ChatCompletionToolParam branch from 6673c24 to 415d40e Compare September 16, 2025 20:52
@kaikreuzer
Copy link
Contributor Author

Thanks for the review @tylerpayne! The poe checks should now hopefully pass.

@tylerpayne
Copy link
Collaborator

tylerpayne commented Sep 16, 2025

Thanks @kaikreuzer.

Could you share the outputs from two runs of the MCP-interviewer tool: One with an OpenAI version earlier that the offending version mentioned in the issue, and one with the offending version?

Just want to check on backwards compatibility. If isn't backwards compatible can you update the openai dependency to require greater than the breaking version?

@kaikreuzer
Copy link
Contributor Author

@tylerpayne It should be nicely backward compatible at least down to 1.93.3.

Here are the outputs:

Using OpenAI v1.93.3:

✗ mcp-interviewer --model gpt-4.1 --test "npx -y @modelcontextprotocol/server-everything"
🚨 MCP Interviewer will make tool call requests to your MCP server. Depending on the server's capabilities this can lead to irreversible outcomes (e.g. deleting files).
Do you accept this risk? y|[n]: y
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:Starting MCP Server Evaluation: npx
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:PHASE 1: Server Inspection
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer.inspection:Starting server inspection for: npx -y @modelcontextprotocol/server-everything
INFO:mcp_interviewer.interviewer.inspection:Initializing client session...
Starting default (STDIO) server...
Starting logs update interval
INFO:mcp_interviewer.interviewer.inspection:Client session initialized successfully
INFO:mcp_interviewer.interviewer.inspection:Server supports tools capability - fetching tools
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 12 total tools
INFO:mcp_interviewer.interviewer.inspection:Server supports resources capability - fetching resources
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 100 total resources
INFO:mcp_interviewer.interviewer.inspection:Fetching resource templates
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 1 total resource templates
INFO:mcp_interviewer.interviewer.inspection:Server supports prompts capability - fetching prompts
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 3 total prompts
INFO:mcp_interviewer.interviewer.inspection:Server inspection completed successfully
INFO:mcp_interviewer.interviewer.inspection:Server summary: 12 tools, 100 resources, 1 resource templates, 3 prompts
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:PHASE 2: Tool Quality Assessment
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:Evaluating 12 tools
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'echo' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'add' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'longRunningOperation' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'printEnv' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'sampleLLM' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'getTinyImage' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'annotatedMessage' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'getResourceReference' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'getResourceLinks' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'structuredContent' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'listRoots' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'startElicitation' (judging disabled)
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:PHASE 3: Functional Testing
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:mcp_interviewer.interviewer.test_generation:Generated test plan with 20 steps
INFO:mcp_interviewer.interviewer.test_execution:Step 1/20: echo
INFO:mcp_interviewer.interviewer.test_execution:Step 2/20: echo
INFO:mcp_interviewer.interviewer.test_execution:Step 3/20: add
INFO:mcp_interviewer.interviewer.test_execution:Step 4/20: add
INFO:mcp_interviewer.interviewer.test_execution:Step 5/20: longRunningOperation
INFO:mcp_interviewer.interviewer.test_execution:Step 6/20: longRunningOperation
INFO:mcp_interviewer.interviewer.test_execution:Step 7/20: printEnv
INFO:mcp_interviewer.interviewer.test_execution:Step 8/20: sampleLLM
INFO:mcp_interviewer.interviewer.test_execution:Step 9/20: sampleLLM
INFO:mcp_interviewer.interviewer.test_execution:Step 10/20: getTinyImage
INFO:mcp_interviewer.interviewer.test_execution:Step 11/20: annotatedMessage
INFO:mcp_interviewer.interviewer.test_execution:Step 12/20: annotatedMessage
INFO:mcp_interviewer.interviewer.test_execution:Step 13/20: getResourceReference
INFO:mcp_interviewer.interviewer.test_execution:Step 14/20: getResourceReference
INFO:mcp_interviewer.interviewer.test_execution:Step 15/20: getResourceLinks
INFO:mcp_interviewer.interviewer.test_execution:Step 16/20: getResourceLinks
INFO:mcp_interviewer.interviewer.test_execution:Step 17/20: structuredContent
INFO:mcp_interviewer.interviewer.test_execution:Step 18/20: structuredContent
INFO:mcp_interviewer.interviewer.test_execution:Step 19/20: listRoots
INFO:mcp_interviewer.interviewer.test_execution:Step 20/20: startElicitation
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'echo' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'echo' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'add' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'add' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'longRunningOperation' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'longRunningOperation' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'printEnv' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'sampleLLM' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'sampleLLM' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getTinyImage' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'annotatedMessage' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'annotatedMessage' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceReference' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceReference' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceLinks' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceLinks' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'structuredContent' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'structuredContent' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'listRoots' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'startElicitation' (judging disabled)
INFO:mcp_interviewer.interviewer._interviewer:Creating final server scorecard
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:Evaluation Complete
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.main:============================================================
INFO:mcp_interviewer.main:PHASE 4: Constraint Checking
INFO:mcp_interviewer.main:============================================================
INFO:mcp_interviewer.main:All constraints passed successfully
INFO:mcp_interviewer.main:Saving full interview to mcp-interview.md
INFO:mcp_interviewer.main:Saving interview json data to mcp-interview.json

--> mcp-interview-v1.93.3.json

Using OpenAI v1.107.3:

✗ mcp-interviewer --model gpt-4.1 --test "npx -y @modelcontextprotocol/server-everything"
🚨 MCP Interviewer will make tool call requests to your MCP server. Depending on the server's capabilities this can lead to irreversible outcomes (e.g. deleting files).
Do you accept this risk? y|[n]: y
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:Starting MCP Server Evaluation: npx
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:PHASE 1: Server Inspection
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer.inspection:Starting server inspection for: npx -y @modelcontextprotocol/server-everything
INFO:mcp_interviewer.interviewer.inspection:Initializing client session...
Starting default (STDIO) server...
Starting logs update interval
INFO:mcp_interviewer.interviewer.inspection:Client session initialized successfully
INFO:mcp_interviewer.interviewer.inspection:Server supports tools capability - fetching tools
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 12 total tools
INFO:mcp_interviewer.interviewer.inspection:Server supports resources capability - fetching resources
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 100 total resources
INFO:mcp_interviewer.interviewer.inspection:Fetching resource templates
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 1 total resource templates
INFO:mcp_interviewer.interviewer.inspection:Server supports prompts capability - fetching prompts
INFO:mcp_interviewer.interviewer.inspection:Successfully fetched 3 total prompts
INFO:mcp_interviewer.interviewer.inspection:Server inspection completed successfully
INFO:mcp_interviewer.interviewer.inspection:Server summary: 12 tools, 100 resources, 1 resource templates, 3 prompts
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:PHASE 2: Tool Quality Assessment
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:Evaluating 12 tools
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'echo' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'add' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'longRunningOperation' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'printEnv' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'sampleLLM' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'getTinyImage' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'annotatedMessage' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'getResourceReference' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'getResourceLinks' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'structuredContent' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'listRoots' (judging disabled)
INFO:mcp_interviewer.interviewer.tool_judging:Skipping judging for tool 'startElicitation' (judging disabled)
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:PHASE 3: Functional Testing
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:mcp_interviewer.interviewer.test_generation:Generated test plan with 19 steps
INFO:mcp_interviewer.interviewer.test_execution:Step 1/19: echo
INFO:mcp_interviewer.interviewer.test_execution:Step 2/19: echo
INFO:mcp_interviewer.interviewer.test_execution:Step 3/19: add
INFO:mcp_interviewer.interviewer.test_execution:Step 4/19: add
INFO:mcp_interviewer.interviewer.test_execution:Step 5/19: longRunningOperation
INFO:mcp_interviewer.interviewer.test_execution:Step 6/19: printEnv
INFO:mcp_interviewer.interviewer.test_execution:Step 7/19: sampleLLM
INFO:mcp_interviewer.interviewer.test_execution:Step 8/19: sampleLLM
INFO:mcp_interviewer.interviewer.test_execution:Step 9/19: getTinyImage
INFO:mcp_interviewer.interviewer.test_execution:Step 10/19: annotatedMessage
INFO:mcp_interviewer.interviewer.test_execution:Step 11/19: annotatedMessage
INFO:mcp_interviewer.interviewer.test_execution:Step 12/19: getResourceReference
INFO:mcp_interviewer.interviewer.test_execution:Step 13/19: getResourceReference
INFO:mcp_interviewer.interviewer.test_execution:Step 14/19: getResourceLinks
INFO:mcp_interviewer.interviewer.test_execution:Step 15/19: getResourceLinks
INFO:mcp_interviewer.interviewer.test_execution:Step 16/19: structuredContent
INFO:mcp_interviewer.interviewer.test_execution:Step 17/19: structuredContent
INFO:mcp_interviewer.interviewer.test_execution:Step 18/19: listRoots
INFO:mcp_interviewer.interviewer.test_execution:Step 19/19: startElicitation
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'echo' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'echo' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'add' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'add' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'longRunningOperation' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'printEnv' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'sampleLLM' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'sampleLLM' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getTinyImage' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'annotatedMessage' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'annotatedMessage' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceReference' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceReference' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceLinks' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'getResourceLinks' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'structuredContent' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'structuredContent' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'listRoots' (judging disabled)
INFO:mcp_interviewer.interviewer.test_judging:Skipping judging for test step 'startElicitation' (judging disabled)
INFO:mcp_interviewer.interviewer._interviewer:Creating final server scorecard
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.interviewer._interviewer:Evaluation Complete
INFO:mcp_interviewer.interviewer._interviewer:============================================================
INFO:mcp_interviewer.main:============================================================
INFO:mcp_interviewer.main:PHASE 4: Constraint Checking
INFO:mcp_interviewer.main:============================================================
INFO:mcp_interviewer.main:All constraints passed successfully
INFO:mcp_interviewer.main:Saving full interview to mcp-interview.md
INFO:mcp_interviewer.main:Saving interview json data to mcp-interview.json

--> mcp-interview-v1.107.3.json

@tylerpayne tylerpayne merged commit b1f4eab into microsoft:main Sep 17, 2025
4 checks passed
@tylerpayne
Copy link
Collaborator

Thank you @kaikreuzer!

@kaikreuzer kaikreuzer deleted the ChatCompletionToolParam branch September 17, 2025 19:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Compatibility issue with the current OpenAI library version

3 participants