2023-08-09 19:50:50 +01:00
2023-08-09 19:50:50 +01:00
2023-10-13 12:26:11 +01:00
2023-08-09 19:50:50 +01:00
2023-10-18 18:59:22 +01:00

permchain

Get started

pip install permchain

Usage

from permchain import Pregel, channels

grow_value = (
    Pregel.subscribe_to("value")
    | (lambda x: x + x)
    | Pregel.send_to(value=lambda x: x if len(x) < 10 else None)
)

app = Pregel(
    grow_value,
    channels={"value": channels.LastValue(str)},
    input="value",
    output="value",
)

assert app.invoke("a") == "aaaaaaaa"

Check examples for more examples.

Near-term Roadmap

  • Iterate on API
    • do we want api to receive output from multiple channels in invoke()
    • do we want api to send input to multiple channels in invoke()
    • Finish updating tests to new API
  • Implement input_schema and output_schema in Pregel
  • More tests
    • Test different input and output types (str, str sequence, None)
    • Add tests for Stream, UniqueInbox
    • Add tests for subscribe_to_each().join()
  • 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?
Languages
Python 99.6%
Makefile 0.2%
TypeScript 0.1%