mirror of
https://github.com/hwchase17/langchain.git
synced 2025-06-22 14:49:29 +00:00
openai: disable streaming for o1 by default (#29147)
Currently 400s https://community.openai.com/t/streaming-support-for-o1-o1-2024-12-17-resulting-in-400-unsupported-value/1085043 o1-mini and o1-preview stream fine
This commit is contained in:
parent
62074bac60
commit
bbc3e3b2cf
@ -562,6 +562,15 @@ class BaseChatOpenAI(BaseChatModel):
|
|||||||
values["temperature"] = 1
|
values["temperature"] = 1
|
||||||
return values
|
return values
|
||||||
|
|
||||||
|
@model_validator(mode="before")
|
||||||
|
@classmethod
|
||||||
|
def validate_disable_streaming(cls, values: Dict[str, Any]) -> Any:
|
||||||
|
"""Disable streaming if n > 1."""
|
||||||
|
model = values.get("model_name") or values.get("model") or ""
|
||||||
|
if model == "o1" and values.get("disable_streaming") is None:
|
||||||
|
values["disable_streaming"] = True
|
||||||
|
return values
|
||||||
|
|
||||||
@model_validator(mode="after")
|
@model_validator(mode="after")
|
||||||
def validate_environment(self) -> Self:
|
def validate_environment(self) -> Self:
|
||||||
"""Validate that api key and python package exists in environment."""
|
"""Validate that api key and python package exists in environment."""
|
||||||
|
@ -1192,3 +1192,19 @@ def test_o1(use_max_completion_tokens: bool) -> None:
|
|||||||
assert isinstance(response, AIMessage)
|
assert isinstance(response, AIMessage)
|
||||||
assert isinstance(response.content, str)
|
assert isinstance(response.content, str)
|
||||||
assert response.content.upper() == response.content
|
assert response.content.upper() == response.content
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.scheduled
|
||||||
|
def test_o1_doesnt_stream() -> None:
|
||||||
|
"""
|
||||||
|
When this starts failing, remove the `disable_streaming` validator in
|
||||||
|
`BaseChatOpenAI`
|
||||||
|
"""
|
||||||
|
with pytest.raises(openai.BadRequestError):
|
||||||
|
list(ChatOpenAI(model="o1", disable_streaming=False).stream("how are you"))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.scheduled
|
||||||
|
def test_o1_stream_default_works() -> None:
|
||||||
|
result = list(ChatOpenAI(model="o1").stream("say 'hi'"))
|
||||||
|
assert len(result) > 0
|
||||||
|
Loading…
Reference in New Issue
Block a user