iflytek/astron-agent · error · ValueError
audio_data must be valid base64 encoded string
Error message
audio_data must be valid base64 encoded string
What it means
Pydantic field_validator on audio_data: the provided string fails base64.b64decode, so the request is rejected as malformed. Clients must send properly base64-encoded audio bytes for the ISE oral evaluation.
Solutions
- Send only the raw base64 payload (strip any 'data:...;base64,' prefix)
- Encode with base64.b64encode(audio_bytes).decode('ascii')
- Verify with base64.b64decode(value, validate=True) before sending; remove embedded newlines
Example fix
// before
audio_data = 'data:audio/wav;base64,' + b64 # fails decode
// after
audio_data = base64.b64encode(audio_bytes).decode('ascii') Defensive patterns
Strategy: validation
Validate before calling
import base64, binascii
try:
base64.b64decode(audio_data, validate=True)
except (binascii.Error, ValueError):
raise ValueError('audio_data must be plain base64, no data: URI prefix') Try / catch
try:
req = IseEvaluateRequest(audio_data=audio_data, text=text)
except ValidationError as e:
if any('base64' in str(err['msg']) for err in e.errors()):
audio_data = audio_data.split(',', 1)[-1].replace('\n', '')
req = IseEvaluateRequest(audio_data=audio_data, text=text) Prevention
- Always produce base64 via base64.b64encode(...).decode('ascii')
- Strip 'data:...;base64,' prefixes from browser FileReader output
- Validate with b64decode(value, validate=True) in tests
When it happens
Trigger: Passing raw binary bytes str-ified, a data-URI ('data:audio/wav;base64,...'), whitespace-corrupted, or otherwise malformed base64 in audio_data.
Common situations: Including the 'data:' URI prefix from a browser FileReader result; double-encoding; newline characters injected by JSON transports; sending hex instead of base64.
Understand the failure class
Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.
Related errors
AI-assisted analysis of iflytek/astron-agent@5e758547a8 (2026-09-12).
Data as JSON: /api/errors/8deecce19fc16778.
Report an issue: GitHub.
Appendix: source
Thrown at core/plugin/aitools/service/ise/ise_evaluate_service.py:55
@field_validator("group")
@classmethod
def validate_group(cls, value: str) -> str:
"""Validate group"""
valid_groups = ["pupil", "youth", "adult"]
if value not in valid_groups:
raise ValueError(f"Invalid group: {value}. Valid options: {valid_groups}")
return value
@field_validator("audio_data")
@classmethod
def validate_audio_data(cls, value: str) -> str:
"""Validate audio_data"""
if not value:
raise ValueError("audio_data cannot be empty")
try:
base64.b64decode(value)
except Exception as exc:
raise ValueError("audio_data must be valid base64 encoded string") from exc
return value
@api_service(
method="POST",
path="/aitools/v1/ise",
query=None,
body=ISEInput,
response=BaseResponse,
summary="ISE Evaluation",
description="ISE Evaluation",
tags=["public_cn"],
deprecated=True,
)
async def ise_evaluate_service(body: ISEInput, request: Request) -> BaseResponse:
"""ISE Evaluation Service"""
credentials = get_iflytek_open_platform_credentials()
View on GitHub (pinned to 5e758547a8)