Deserializing ResponseInputItem results in unknown state
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza con la ruta de deserialización de ResponseInputItem.Message y compárala con la ruta de ResponseOutputMessage utilizando la reproducción proporcionada testSerializeInputItem. Confirma que los valores serializados y deserializados de ResponseInputItem.Message se comparan como iguales sin convertirse en unknown; la prueba de output-item existente proporciona un caso de comparación funcional.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Hey there! 👋
I'm working with the OpenAI Java SDK for a couple of days now and really like it. The general design of the library is fantastic and I'm having quite a lot fun working with it. Thanks! 👍
I stumbled upon an issue which I think is a bug. Let me first clarify about my goals: I'm using the Responses API part of the library to implement Chat-Bot like conversations. My requirement is to use ResponseCreateParams.builder().store(false) and instead serialize conversation state locally by myself.
Here's an example of what I do:
val jsonMapper = jsonMapper()
val inputItems: List<ResponseInputItem> = ...
val jsonData = jsonMapper.writeValueAsString(inputItems)
// store jsonData locally
// later:
val deserializedInputItems = jsonMapper.readValue(nativeData, object : TypeReference<MutableList<ResponseInputItem>>() {})
// attach new user message and continue conversation
This works pretty well. However I've noticed the following behavior:
When a ResponseInputItem from a ResponseInputItem.Message gets serialized and deserialized again, it's in an unknown state. The message field is null but the _json() field still holds the correct structured data from the original message.
Here's are a Kotlin Test to demonstrate the behavior:
❌ This test fails with v3.0.3
@Test
fun testSerializeInputItem() {
// given
val message = ResponseInputItem.Message.builder()
.role(ResponseInputItem.Message.Role.USER)
.addInputTextContent("Test")
.build()
val inputItem1 = ResponseInputItem.ofMessage(message)
// when
val jsonMapper = jsonMapper()
val inputItemJson = jsonMapper.writeValueAsString(inputItem1)
val inputItem2 = jsonMapper.readValue(inputItemJson, ResponseInputItem::class.java)
// then
Assertions.assertEquals(inputItem1, inputItem2)
}
Test fails:
Expected :ResponseInputItem{message=Message{content=[ResponseInputContent{inputText=ResponseInputText{text=Test, type=input_text, additionalProperties={}}}], role=user, status=, type=, additionalProperties={}}}
Actual :ResponseInputItem{_unknown={content=[{text=Test, type=input_text}], role=user}}
I couldn't reproduce this issue with other types of ResponseInputItems, e.g. for ResponseOutputMessage the test succeeds:
🟢 This test succeeds with v3.0.3
@Test
fun testSerializeOutputItem() {
val message = ResponseOutputMessage.builder()
.id("my_id")
.status(ResponseOutputMessage.Status.COMPLETED)
.addContent(
ResponseOutputText.builder()
.text("Test")
.annotations(emptyList())
.build()
)
.build()
val inputItem1 = ResponseInputItem.ofResponseOutputMessage(message)
val jsonMapper = jsonMapper()
val inputItemJson = jsonMapper.writeValueAsString(inputItem1)
val inputItem2 = jsonMapper.readValue(inputItemJson, ResponseInputItem::class.java)
Assertions.assertEquals(inputItem1, inputItem2)
}
Could you please clarify if this a bug? Or am I doing something wrong / unintended here?
- Lenguaje dominante
- Kotlin
- Estrellas
- 1.5k
- Forks
- 266
- Merge medio
- 10 h 11 min
- PR fusionados (30 d)
- 141
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de openai/openai-java
-
HttpRequest.url() logs spaces in path segments as literal plus signsPosiblemente ocupada @sylvesterkaczmarek la tomó hace 55 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
openai/openai-java#886 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Make diarized transcription duration and task optionalPosiblemente ocupada @wskr00 la tomó hace 86 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
openai/openai-java#802 · 2 comentarios · 3 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 Medio día Aptitud para principiantes 42/100
openai/openai-java#1160 ·
Los mantenedores suelen responder en 1 día
-
AsyncStreamResponse can hang when the subscriber executor rejects workPosiblemente ocupada @sylvesterkaczmarek la tomó hace 38 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 74/100
openai/openai-java#973 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
openai/openai-java#956 ·
Los mantenedores suelen responder en 1 día
Todos los issues de openai/openai-java
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Kotlin/kotlin-lsp#288 ·
-
needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
chrisbanes/haze#1536 ·
Los mantenedores suelen responder en 1 día
-
Cassiopeia drops the `präsentiert von` credit printed in the event bodyPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoafk-ok area:data-quality importer size:S
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
enorm-labs/event-junkie#3166 ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
rajpreetcodes/Skills_MCP_Server#25 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
com-lihaoyi/mill#7776 ·
Los mantenedores suelen responder en 1 día