From 9d23627fcdd81fd5a7c173b3138e5318b5b4573d Mon Sep 17 00:00:00 2001 From: Chester Curme Date: Fri, 7 Feb 2025 11:41:01 -0500 Subject: [PATCH] handle refusals --- .../openai/langchain_openai/chat_models/base.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libs/partners/openai/langchain_openai/chat_models/base.py b/libs/partners/openai/langchain_openai/chat_models/base.py index 13972802d5e..3da2db93495 100644 --- a/libs/partners/openai/langchain_openai/chat_models/base.py +++ b/libs/partners/openai/langchain_openai/chat_models/base.py @@ -324,11 +324,17 @@ def _convert_chunk_to_generation_chunk( ) -> Optional[ChatGenerationChunk]: if chunk.get("type") == "content.delta": # from beta.chat.completions.stream return None - if chunk.get("type") == "content.done" and hasattr(chunk_object, "parsed"): + if ( + chunk.get("type") == "content.done" + and hasattr(chunk_object, "parsed") + or hasattr(chunk_object, "refusal") + ): + additional_kwargs = { + "parsed": getattr(chunk_object, "parsed", None), + "refusal": getattr(chunk_object, "refusal", None), + } return ChatGenerationChunk( - message=default_chunk_class( - content="", additional_kwargs={"parsed": chunk_object.parsed} - ) + message=default_chunk_class(content="", additional_kwargs=additional_kwargs) ) token_usage = chunk.get("usage") or chunk.get("chunk", {}).get("usage")