Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

OpenAI API responses.parse with web_search_preview tool returns corrupted JSON with control characters

Abierto
#2,458 1 comentario 2 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@LuminaX-alt ya está trabajando en esto.

Desde el 31/7/2025.

  • #10 de @LuminaX-alt — abierto

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
api

Línea de trabajo

Comienza en el punto de entrada client.responses.parse y ejecuta la reproducción proporcionada de AsyncOpenAI con la herramienta web_search_preview y una entrada no ASCII. Compara el texto devuelto con el JSON esperado, comprobando si hay caracteres de control, escapes incompletos y truncamiento; terminado significa que el JSON es válido y completo, con el texto no ASCII codificado correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

bug
Confirm this is an issue with the Python library and not an underlying OpenAI API
  • This is an issue with the Python library
Describe the bug

Summary

When using the responses.parse API with the web_search_preview tool, the
response frequently contains control characters and gets truncated, causing
JSON parsing failures. This occurs specifically when generating search queries
that may include non-ASCII content.

Environment

  • OpenAI Python SDK Version: 1.95.0
  • Python Version: 3.12+
  • API Model: gpt-4.1
  • Endpoint: client.responses.parse

Impact

  • JSON parsing fails with ValidationError
  • The web_search_preview tool becomes unusable for queries involving
    non-English content
  • Responses are truncated around 3.5-4.5KB, suggesting a buffer overflow issue

Workaround

We currently retry without the web_search_preview tool when these errors occur,
which succeeds but loses the web search functionality.

Suggested Fix

  1. Ensure web search results are properly sanitized to remove control
    characters
  2. Fix the response buffer size to prevent truncation
  3. Properly encode non-ASCII characters as UTF-8 instead of malformed escape
    sequences
To Reproduce

Steps to Reproduce

from openai import AsyncOpenAI
from pydantic import BaseModel, Field
from typing import List, Optional

class Subqueries(BaseModel):
subqueries: List[str] = Field(description="List of search queries")
hl: Optional[str] = Field(default=None, description="Language code")
gl: Optional[str] = Field(default=None, description="Country code")

async_client = AsyncOpenAI()

response = await async_client.responses.parse(
model="gpt-4.1",
input=[
{
"role": "system",
"content": "Generate search queries for finding content creators"
},
{
"role": "user",
"content": "Find Russian language content creators"
}
],
text_format=Subqueries,
tools=[
{
"type": "web_search_preview",
"user_location": {"type": "approximate"},
"search_context_size": "medium"
}
],
temperature=1
)

Expected Behavior

The API should return valid JSON with properly encoded text, including
non-ASCII characters as valid UTF-8.

Actual Behavior

  1. Control Character Corruption: Responses contain invalid control characters:
    {"subqueries": ["\u0004\u0043\u0043...
  2. Where \u0004 is ASCII control character 4, not valid text.
  3. Truncation Mid-Escape: Responses get truncated in the middle of escape
    sequences:
    Invalid JSON: EOF while parsing a string at line 1 column 4587
    input_value='{"subqueries": ["\u0017...0043a\u00043e\u00043 '
  4. Note the incomplete escape sequence at the end.
  5. Malformed Unicode: Instead of proper UTF-8 encoding for Cyrillic:
    - Expected: "Фильмы" (proper UTF-8)
    - Actual: "\x04\x024\x038..." (control char + ASCII digits)
Code snippets

OS

macOS

Python version

3.12

Library version

1.95.0

Lenguaje dominante
Python
Estrellas
31.8k
Forks
7.3k
Merge medio
1 d 3 h
PR fusionados (30 d)
131

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de openai/openai-python

Todos los issues de openai/openai-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.