core[patch] Fix tracer output of streamed runs with non-addable output (#16324)

- Used to be None, now is just the last chunk

<!-- Thank you for contributing to LangChain!

Please title your PR "<package>: <description>", where <package> is
whichever of langchain, community, core, experimental, etc. is being
modified.

Replace this entire comment with:
  - **Description:** a description of the change, 
  - **Issue:** the issue # it fixes if applicable,
  - **Dependencies:** any dependencies required for this change,
- **Twitter handle:** we announce bigger features on Twitter. If your PR
gets announced, and you'd like a mention, we'll gladly shout you out!

Please make sure your PR is passing linting and testing before
submitting. Run `make format`, `make lint` and `make test` from the root
of the package you've modified to check this locally.

See contribution guidelines for more information on how to write/run
tests, lint, etc: https://python.langchain.com/docs/contributing/

If you're adding a new integration, please include:
1. a test for the integration, preferably unit tests that do not rely on
network access,
2. an example notebook showing its use. It lives in
`docs/docs/integrations` directory.

If no one reviews your PR within a few days, please @-mention one of
@baskaryan, @eyurtsev, @hwchase17.
 -->
This commit is contained in:
Nuno Campos 2024-01-20 18:52:26 -08:00 committed by GitHub
parent 3d23a5eb36
commit ef75bb63ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1503,8 +1503,10 @@ class Runnable(Generic[Input, Output], ABC):
try:
final_output = final_output + chunk # type: ignore
except TypeError:
final_output = None
final_output = chunk
final_output_supported = False
else:
final_output = chunk
except StopIteration:
pass
for ichunk in input_for_tracing:
@ -1515,8 +1517,10 @@ class Runnable(Generic[Input, Output], ABC):
try:
final_input = final_input + ichunk # type: ignore
except TypeError:
final_input = None
final_input = ichunk
final_input_supported = False
else:
final_input = ichunk
except BaseException as e:
run_manager.on_chain_error(e, inputs=final_input)
raise
@ -1602,8 +1606,10 @@ class Runnable(Generic[Input, Output], ABC):
try:
final_output = final_output + chunk # type: ignore
except TypeError:
final_output = None
final_output = chunk
final_output_supported = False
else:
final_output = chunk
except StopAsyncIteration:
pass
async for ichunk in input_for_tracing:
@ -1614,8 +1620,10 @@ class Runnable(Generic[Input, Output], ABC):
try:
final_input = final_input + ichunk # type: ignore[operator]
except TypeError:
final_input = None
final_input = ichunk
final_input_supported = False
else:
final_input = ichunk
except BaseException as e:
await run_manager.on_chain_error(e, inputs=final_input)
raise