feat: OpenAI responses API: Add store and previous_response_id params - #2460
Conversation
|
Hey Rana Singh (@ranadeepsingh) 👋! We use semantic commit messages to streamline the release process. Examples of commit messages with semantic prefixes:
To test your commit locally, please follow our guild on building from source. |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Pull request overview
This PR adds support for the store and previousResponseId parameters to enable response storage and multi-turn conversation chaining in the OpenAI Responses API. The implementation is backward-compatible with store defaulting to false, and the output structure dynamically adjusts based on parameter settings.
Key Changes:
- Added
store(Boolean) andpreviousResponseId(String) parameters to bothOpenAIResponsesandOpenAIPrompttransformers - Modified
OpenAIPromptoutput structure to conditionally include responseidwhenstore=truewith the Responses API - Extended output schema logic to handle four combinations: response-only, response+usage, response+id, and response+usage+id
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
cognitive/src/main/scala/.../openai/OpenAIResponses.scala |
Added store and previousResponseId parameters to HasOpenAITextParamsResponses trait with appropriate getters/setters and included in shared params |
cognitive/src/main/scala/.../openai/OpenAIPrompt.scala |
Added store and previousResponseId parameters, refactored output column building to conditionally include response ID, and added ServiceParam import |
cognitive/src/test/scala/.../openai/OpenAIResponsesSuite.scala |
Added unit tests for store default, optional params inclusion, previousResponseId params, and integration test for store=true returning response with ID |
cognitive/src/test/scala/.../openai/OpenAIPromptSuite.scala |
Added comprehensive tests covering parameter defaults, setters, and three integration scenarios testing different output structure combinations |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #2460 +/- ##
==========================================
+ Coverage 84.36% 84.37% +0.01%
==========================================
Files 335 335
Lines 17734 17782 +48
Branches 1602 1600 -2
==========================================
+ Hits 14961 15004 +43
- Misses 2773 2778 +5 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
This reverts commit 1aa484c.
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Rana Singh (@ranadeepsingh) outputDataType? |
Doing in the next follow up PR |
What changes are proposed in this pull request?
This PR adds support for the
storeandpreviousResponseIdparameters in the OpenAI Responses API forOpenAIResponsesandOpenAIPrompttransformers.New Parameters:
store(Boolean, default:false)true, the generated model response is stored for later retrieval via APIOpenAIPrompt, whenstore=trueandapiType="responses", the output becomes a struct containing bothresponseandidfieldspreviousResponseId/previousResponseIdCol(String)setPreviousResponseId(String)- scalar value for all rowssetPreviousResponseIdCol(String)- per-row values from a DataFrame columnOutput Structure Changes for
OpenAIPrompt:string(just the response text)store=truestruct{response, id}returnUsage=truestruct{response, usage}store=true+returnUsage=truestruct{response, usage, id}Files Changed:
cognitive/src/main/scala/.../openai/OpenAIResponses.scala- AddedstoreandpreviousResponseIdparameters toHasOpenAITextParamsResponsestraitcognitive/src/main/scala/.../openai/OpenAIPrompt.scala- AddedstoreandpreviousResponseIdparameters, modified output structure to includeidwhenstore=true, added validation for Responses API parameterscognitive/src/test/scala/.../openai/OpenAIResponsesSuite.scala- Added tests for new parameterscognitive/src/test/scala/.../openai/OpenAIPromptSuite.scala- Added tests for new parameters and output structuredocs/Explore Algorithms/OpenAI/OpenAI.ipynb- Added usage examplesHow is this patch tested?
Tests added:
OpenAIResponsesSuite:store parameter should be included in optional params when setstore parameter defaults to falsepreviousResponseId parameter should be included in optional params when setBasic Usage with store=true returns response with idOpenAIPromptSuite:store parameter defaults to falsestore parameter can be setpreviousResponseId parameter can be setpreviousResponseIdCol parameter can be setstore=true with Responses API returns struct with response and idstore=true with returnUsage=true returns struct with response, usage, and idstore=false does not change output structurestore parameter throws error when apiType is not responsespreviousResponseId parameter throws error when apiType is not responsespreviousResponseIdCol parameter throws error when apiType is not responsesValidation:
validateResponsesApiParams()method to ensurestoreandpreviousResponseIdparameters are only used withapiType="responses"IllegalArgumentExceptionwith clear error messages when these parameters are used with other API typesDoes this PR change any dependencies?
Does this PR add a new feature? If so, have you added samples on website?
Examples have been added to
docs/Explore Algorithms/OpenAI/OpenAI.ipynbdemonstrating:OpenAIResponseswithstore=trueand response chaining viapreviousResponseIdColOpenAIPromptwithstore=trueand response chaining viapreviousResponseIdCol