Files
langgraph/README.md
T
2023-10-23 10:39:37 +01:00

59 lines
1.6 KiB
Markdown

# `permchain`
## Get started
`pip install permchain`
## Usage
```python
from permchain import Pregel, channels
grow_value = (
Pregel.subscribe_to("value")
| (lambda x: x + x)
| Pregel.write_to(value=lambda x: x if len(x) < 10 else None)
)
app = Pregel(
chains={"grow_value": grow_value},
channels={"value": channels.LastValue(str)},
input="value",
output="value",
)
assert app.invoke("a") == "aaaaaaaa"
```
Check `examples` for more examples.
## Near-term Roadmap
- [x] Iterate on API
- [x] do we want api to receive output from multiple channels in invoke()
- [x] do we want api to send input to multiple channels in invoke()
- [x] Finish updating tests to new API
- [x] Implement input_schema and output_schema in Pregel
- [ ] More tests
- [x] Test different input and output types (str, str sequence)
- [x] Add tests for Stream, UniqueInbox
- [ ] Add tests for subscribe_to_each().join()
- [x] Add optional debug logging
- [ ] Implement checkpointing
- [ ] Save checkpoints at end of each step
- [ ] Load checkpoint at start of invocation
- [ ] API to specify storage backend and save key
- [ ] Add more examples
- [ ] human in the loop
- [ ] combine documents
- [ ] agent executor
- [ ] run over dataset
- [ ] Fault tolerance
- [ ] Retry individual processes in a step
- [ ] Retry entire step?
- [ ] Pregel.stream_log to contain additional keys specific to Pregel
- [ ] tasks: inputs of each chain in each step, keyed by {name}:{step}
- [ ] task_results: same as above but outputs
- [ ] channels: channel values at end of each step, keyed by {name}:{step}