mirror of
https://github.com/hwchase17/langchain.git
synced 2026-06-09 10:17:00 +00:00
feat: The response.incomplete event is not handled when using stream_mode=['messages'] (#33871)
This commit is contained in:
@@ -4351,7 +4351,7 @@ def _convert_responses_chunk_to_generation_chunk(
|
|||||||
elif chunk.type == "response.created":
|
elif chunk.type == "response.created":
|
||||||
id = chunk.response.id
|
id = chunk.response.id
|
||||||
response_metadata["id"] = chunk.response.id # Backwards compatibility
|
response_metadata["id"] = chunk.response.id # Backwards compatibility
|
||||||
elif chunk.type == "response.completed":
|
elif chunk.type in ("response.completed", "response.incomplete"):
|
||||||
msg = cast(
|
msg = cast(
|
||||||
AIMessage,
|
AIMessage,
|
||||||
(
|
(
|
||||||
|
|||||||
Binary file not shown.
@@ -58,6 +58,26 @@ def _check_response(response: BaseMessage | None) -> None:
|
|||||||
assert response.response_metadata["service_tier"] # type: ignore[typeddict-item]
|
assert response.response_metadata["service_tier"] # type: ignore[typeddict-item]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.vcr
|
||||||
|
def test_incomplete_response() -> None:
|
||||||
|
model = ChatOpenAI(
|
||||||
|
model=MODEL_NAME, use_responses_api=True, max_completion_tokens=16
|
||||||
|
)
|
||||||
|
response = model.invoke("Tell me a 100 word story about a bear.")
|
||||||
|
assert response.response_metadata["incomplete_details"]
|
||||||
|
assert response.response_metadata["incomplete_details"]["reason"]
|
||||||
|
assert response.response_metadata["status"] == "incomplete"
|
||||||
|
|
||||||
|
full: AIMessageChunk | None = None
|
||||||
|
for chunk in model.stream("Tell me a 100 word story about a bear."):
|
||||||
|
assert isinstance(chunk, AIMessageChunk)
|
||||||
|
full = chunk if full is None else full + chunk
|
||||||
|
assert isinstance(full, AIMessageChunk)
|
||||||
|
assert full.response_metadata["incomplete_details"]
|
||||||
|
assert full.response_metadata["incomplete_details"]["reason"]
|
||||||
|
assert full.response_metadata["status"] == "incomplete"
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.default_cassette("test_web_search.yaml.gz")
|
@pytest.mark.default_cassette("test_web_search.yaml.gz")
|
||||||
@pytest.mark.vcr
|
@pytest.mark.vcr
|
||||||
@pytest.mark.parametrize("output_version", ["responses/v1", "v1"])
|
@pytest.mark.parametrize("output_version", ["responses/v1", "v1"])
|
||||||
|
|||||||
Reference in New Issue
Block a user