{"record":{"id":"2e45d5a75e654256","repo":"run-llama/llama_index","slug":"astream-call-is-not-supported-by-default","errorCode":null,"errorMessage":"astream_call is not supported by default.","messagePattern":"astream_call is not supported by default\\.","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/types.py","lineNumber":134,"sourceCode":"    def __call__(self, *args: Any, **kwargs: Any) -> Union[Model, List[Model]]:\n        pass\n\n    async def acall(self, *args: Any, **kwargs: Any) -> Union[Model, List[Model]]:\n        return self(*args, **kwargs)\n\n    def stream_call(\n        self, *args: Any, **kwargs: Any\n    ) -> Generator[\n        Union[Model, List[Model], \"FlexibleModel\", List[\"FlexibleModel\"]], None, None\n    ]:\n        raise NotImplementedError(\"stream_call is not supported by default.\")\n\n    async def astream_call(\n        self, *args: Any, **kwargs: Any\n    ) -> AsyncGenerator[\n        Union[Model, List[Model], \"FlexibleModel\", List[\"FlexibleModel\"]], None\n    ]:\n        raise NotImplementedError(\"astream_call is not supported by default.\")\n\n\nclass PydanticProgramMode(str, Enum):\n    \"\"\"Pydantic program mode.\"\"\"\n\n    DEFAULT = \"default\"\n    OPENAI = \"openai\"\n    LLM = \"llm\"\n    FUNCTION = \"function\"\n    GUIDANCE = \"guidance\"\n    LM_FORMAT_ENFORCER = \"lm-format-enforcer\"\n\n\nclass Thread(threading.Thread):\n    \"\"\"\n    A wrapper for threading.Thread that copies the current context and uses the copy to run the target.\n    \"\"\"\n","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/types.py#L116-L152","documentation":"The async twin of stream_call: PydanticProgram.astream_call() raises NotImplementedError by default because the base class cannot stream structured output. Subclasses must explicitly provide an async streaming implementation; most do not.","triggerScenarios":"Awaiting/iterating program.astream_call(...) in an async agent or FastAPI handler on a program subclass that only implements __call__/acall. Common when code was written against a subclass that supported streaming and then the program type was swapped.","commonSituations":"Async agent pipelines (AgentWorkflow, async chat engines) that uniformly call astream_call on attached programs; migrating from OpenAIPydanticProgram to LLMTextCompletionProgram and losing streaming support silently.","solutions":["Fall back to await program.acall(...) or program(...).","Use a program subclass that overrides astream_call (check the class or docs before relying on it).","Wrap in a capability check: if type(program).astream_call is PydanticProgram.astream_call: use acall instead."],"exampleFix":"# before\n async for chunk in program.astream_call(input='...'):  # NotImplementedError\n     print(chunk)\n\n# after\n result = await program.acall(input='...')  # or program(...)\n print(result)","handlingStrategy":"fallback","validationCode":"async def run_program(program, **kwargs):\n    if type(program).astream_call is PydanticProgram.astream_call:\n        return await program.acall(**kwargs)  # no async streaming support\n    return [chunk async for chunk in program.astream_call(**kwargs)]","typeGuard":"from llama_index.core.program import PydanticProgram\n\ndef is_astreamable_program(program) -> bool:\n    return type(program).astream_call is not PydanticProgram.astream_call","tryCatchPattern":"try:\n    async for chunk in program.astream_call(input=...):\n        yield chunk\nexcept NotImplementedError:\n    yield await program.acall(input=...)","preventionTips":["Check astream_call is overridden before awaiting it in async pipelines.","Keep an acall-based fallback in async agents that accept pluggable programs.","Verify streaming support when swapping program subclasses (e.g. away from OpenAIPydanticProgram)."],"tags":["pydantic-program","streaming","async","not-implemented"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}