Skip to content

Add queries to search action class - #368

Open
SeolHuiGwan9478 wants to merge 2 commits into
sashirestela:mainfrom
SeolHuiGwan9478:add-queries-to-search-action
Open

Add queries to search action class#368
SeolHuiGwan9478 wants to merge 2 commits into
sashirestela:mainfrom
SeolHuiGwan9478:add-queries-to-search-action

Conversation

@SeolHuiGwan9478

Copy link
Copy Markdown

Problem Description

When the OpenAI API response includes a queries field in the WebSearchAction.SearchAction object, a JSON deserialization error occurs.

Error Message


io.github.sashirestela.cleverclient.support.CleverClientException: Cannot convert the Json {"type":"response.output_item.done","item":{"id":"ws_0cc193dbf6d7d97300698a7ccf6c288193b2ff7ddda3d30d40","type":"web_search_call","status":"completed","action":{"type":"search","queries":["수양대군"],"query":"수양대군"}},"output_index":0,"sequence_number":6} to class io.github.sashirestela.openai.domain.response.stream.ResponseOutputItemEvent.
	at io.github.sashirestela.cleverclient.util.JsonUtil.jsonToObject(JsonUtil.java:55) ~[cleverclient-2.2.3.jar:na]
	at io.github.sashirestela.cleverclient.client.HttpClientAdapter.lambda$convertToStreamOfEvents$5(HttpClientAdapter.java:168) ~[cleverclient-2.2.3.jar:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na]
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na]
	at java.base/java.util.Spliterators$IteratorSpliterator.tryAdvance(Spliterators.java:1856) ~[na:na]
	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(StreamSpliterators.java:292) ~[na:na]
	at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(StreamSpliterators.java:206) ~[na:na]
	at java.base/java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(StreamSpliterators.java:169) ~[na:na]
	at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(StreamSpliterators.java:298) ~[na:na]
	at reactor.core.publisher.FluxIterable$IterableSubscription.hasNext(FluxIterable.java:271) ~[reactor-core-3.7.11.jar:3.7.11]

Root Cause

The API response JSON contains a queries field, but the SearchAction class did not have this field defined, causing Jackson to fail during deserialization.

Changes

  • Added queries field to SearchAction class (List<String>, @Singular)
  • Added @Builder annotation to support Builder pattern
  • Maintained backward compatibility with of(String query) overloaded method
  • Set queries field as optional (existing query field remains required)

Testing

  • Added unit test case including queries field
  • Maintained existing test cases (backward compatibility verified)
  • Spotless code formatting check passed
  • All tests passed

Related Issue

This change aligns with the latest OpenAI API response format by supporting the queries field, resolving the JSON deserialization error.

- Add queries field (List<String>) to SearchAction class
- Remove @required annotation from queries (optional field)
- Add @Singular annotation for Builder pattern support
- Add overloaded of() method for backward compatibility
- Update unit tests to include queries field test case
@sonarqubecloud

Copy link
Copy Markdown

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.

1 participant