From c0c410759ea21d4e8916ddb179572e749269d9e0 Mon Sep 17 00:00:00 2001 From: Wey Gu <weyl.gu@gmail.com> Date: Thu, 27 Feb 2025 11:57:08 +0800 Subject: [PATCH] fix: openai-like openai agent streaming over vLLM (#17927) --- .../llama_index/llms/openai/utils.py | 15 ++++++++++++--- .../llms/llama-index-llms-openai/pyproject.toml | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/utils.py b/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/utils.py index 7fde73a16c..c36d57a776 100644 --- a/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/utils.py +++ b/llama-index-integrations/llms/llama-index-llms-openai/llama_index/llms/openai/utils.py @@ -626,10 +626,19 @@ def update_tool_calls( # validations to get passed by mypy assert t.function is not None assert tc_delta.function is not None - assert t.function.arguments is not None - assert t.function.name is not None - assert t.id is not None + # Initialize fields if they're None + # OpenAI(or Compatible)'s streaming API can return partial tool call + # information across multiple chunks where some fields may be None in + # initial chunks and populated in subsequent ones + if t.function.arguments is None: + t.function.arguments = "" + if t.function.name is None: + t.function.name = "" + if t.id is None: + t.id = "" + + # Update with delta values t.function.arguments += tc_delta.function.arguments or "" t.function.name += tc_delta.function.name or "" t.id += tc_delta.id or "" diff --git a/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml b/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml index 572492a362..9e42ba647a 100644 --- a/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml +++ b/llama-index-integrations/llms/llama-index-llms-openai/pyproject.toml @@ -29,7 +29,7 @@ exclude = ["**/BUILD"] license = "MIT" name = "llama-index-llms-openai" readme = "README.md" -version = "0.3.21" +version = "0.3.22" [tool.poetry.dependencies] python = ">=3.9,<4.0" -- GitLab