inference_graph
provides a few main items:
- a Graph
definition.
- a way to add Node
s to the Graph
with graph.stage_node
.
- a way to execute the Graph
with some input.
- a wrap!
macro to turn your async function into an op-compatible function.
The nodes also will need to specify an op
, which is almost a
async fn(Vec<String>) -> String
, but because of rust type aliases
not liking async functions, is not quite that exact type. Luckily,
we also provide a wrap!
that lets you pass in a async fn(Vec<String>) -> String
and converts it to the exact type needed.
Creating a graph, adding some nodes that use an op to concatenate the strings passed in for the argument, and retrieving the output might look something like this: ```rust use inferencegraph::graph::Graph; use inferencegraph::wrap;
async fn concat(x: Vec
async fn main() { let mut graph = Graph::default(); graph.stagenode("A".into(), vec!["entrypoint".into()], wrap!(concat)); graph.stagenode("B".into(), vec!["entrypoint".into()], wrap!(concat)); graph.stagenode("C".into(), vec!["A".into(), "B".into()], wrap!(concat)); let output = graph.run("hubba".into(), "C".into()).await; asserteq!(output.unwrap(), "hubbahubba".to_string()); } ```