|
|
|
@ -18,7 +18,7 @@ from langchain.callbacks.manager import (
|
|
|
|
|
CallbackManagerForChainRun,
|
|
|
|
|
Callbacks,
|
|
|
|
|
)
|
|
|
|
|
from langchain.schema import BaseMemory
|
|
|
|
|
from langchain.schema import RUN_KEY, BaseMemory, RunInfo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _get_verbosity() -> bool:
|
|
|
|
@ -108,6 +108,8 @@ class Chain(BaseModel, ABC):
|
|
|
|
|
inputs: Union[Dict[str, Any], Any],
|
|
|
|
|
return_only_outputs: bool = False,
|
|
|
|
|
callbacks: Callbacks = None,
|
|
|
|
|
*,
|
|
|
|
|
include_run_info: bool = False,
|
|
|
|
|
) -> Dict[str, Any]:
|
|
|
|
|
"""Run the logic of this chain and add to output if desired.
|
|
|
|
|
|
|
|
|
@ -118,7 +120,10 @@ class Chain(BaseModel, ABC):
|
|
|
|
|
response. If True, only new keys generated by this chain will be
|
|
|
|
|
returned. If False, both input keys and new keys generated by this
|
|
|
|
|
chain will be returned. Defaults to False.
|
|
|
|
|
|
|
|
|
|
callbacks: Callbacks to use for this chain run. If not provided, will
|
|
|
|
|
use the callbacks provided to the chain.
|
|
|
|
|
include_run_info: Whether to include run info in the response. Defaults
|
|
|
|
|
to False.
|
|
|
|
|
"""
|
|
|
|
|
inputs = self.prep_inputs(inputs)
|
|
|
|
|
callback_manager = CallbackManager.configure(
|
|
|
|
@ -139,13 +144,20 @@ class Chain(BaseModel, ABC):
|
|
|
|
|
run_manager.on_chain_error(e)
|
|
|
|
|
raise e
|
|
|
|
|
run_manager.on_chain_end(outputs)
|
|
|
|
|
return self.prep_outputs(inputs, outputs, return_only_outputs)
|
|
|
|
|
final_outputs: Dict[str, Any] = self.prep_outputs(
|
|
|
|
|
inputs, outputs, return_only_outputs
|
|
|
|
|
)
|
|
|
|
|
if include_run_info:
|
|
|
|
|
final_outputs[RUN_KEY] = RunInfo(run_id=run_manager.run_id)
|
|
|
|
|
return final_outputs
|
|
|
|
|
|
|
|
|
|
async def acall(
|
|
|
|
|
self,
|
|
|
|
|
inputs: Union[Dict[str, Any], Any],
|
|
|
|
|
return_only_outputs: bool = False,
|
|
|
|
|
callbacks: Callbacks = None,
|
|
|
|
|
*,
|
|
|
|
|
include_run_info: bool = False,
|
|
|
|
|
) -> Dict[str, Any]:
|
|
|
|
|
"""Run the logic of this chain and add to output if desired.
|
|
|
|
|
|
|
|
|
@ -156,7 +168,10 @@ class Chain(BaseModel, ABC):
|
|
|
|
|
response. If True, only new keys generated by this chain will be
|
|
|
|
|
returned. If False, both input keys and new keys generated by this
|
|
|
|
|
chain will be returned. Defaults to False.
|
|
|
|
|
|
|
|
|
|
callbacks: Callbacks to use for this chain run. If not provided, will
|
|
|
|
|
use the callbacks provided to the chain.
|
|
|
|
|
include_run_info: Whether to include run info in the response. Defaults
|
|
|
|
|
to False.
|
|
|
|
|
"""
|
|
|
|
|
inputs = self.prep_inputs(inputs)
|
|
|
|
|
callback_manager = AsyncCallbackManager.configure(
|
|
|
|
@ -177,7 +192,12 @@ class Chain(BaseModel, ABC):
|
|
|
|
|
await run_manager.on_chain_error(e)
|
|
|
|
|
raise e
|
|
|
|
|
await run_manager.on_chain_end(outputs)
|
|
|
|
|
return self.prep_outputs(inputs, outputs, return_only_outputs)
|
|
|
|
|
final_outputs: Dict[str, Any] = self.prep_outputs(
|
|
|
|
|
inputs, outputs, return_only_outputs
|
|
|
|
|
)
|
|
|
|
|
if include_run_info:
|
|
|
|
|
final_outputs[RUN_KEY] = RunInfo(run_id=run_manager.run_id)
|
|
|
|
|
return final_outputs
|
|
|
|
|
|
|
|
|
|
def prep_outputs(
|
|
|
|
|
self,
|
|
|
|
|