Miscellaneous
Build reliable AI Workflows with humans in the loop
Inferable is a managed durable execution runtime for creating AI workflows with humans in the loop. Create structured outputs from any LLM, ask humans for approval via Slack or Email, with versioned, long-running workflows for backwards compatibility.
Follow the quick start guide to get started with Inferable.
Here are some of the key features of Inferable.
Workflows execute in your own infrastructure, even behind firewalls or private VPCs. No deployment step is required. We use long polling to connect to your infrastructure, so there is no need to open any inbound ports.
const workflow = inferable.workflows.create({
name: "simple",
inputSchema: z.object({
executionId: z.string(),
greeting: z.string(),
}),
});
When you need to change the input schema or the logic of a workflow, you can create a new version of the workflow. Inferable will maintain version affinity for currently executing workflows, so you can roll out new versions gradually. See Workflows.
workflow.version(1).define(async (ctx, input) => {
// ...
});
workflow.version(2).define(async (ctx, input) => {
// ...
});
Inferable allows you to integrate human approval and intervention with full context preservation. See Human-in-the-Loop.
deleteUserWorkflow.version(1).define(async (ctx, input) => {
// ... existing workflow code ...
if (!ctx.approved) {
return Interrupt.approval({
message: `I need your approval to delete the user ${input.userId}. Is this ok?`,
destination: {
type: "email",
// The email address to notify
email: "test@example.com",
},
});
}
await db.customers.delete({
userId: input.userId,
});
});
Inferable automatically parses and validates structured outputs, and retries failed executions. See Structured Outputs.
workflow.version(1).define(async (ctx, input) => {
const { ticketType } = ctx.llm.structured({
input: `Ticket text: ${input.ticketText}`,
schema: z.object({
ticketType: z.enum(["data-deletion", "refund", "other"]),
}),
});
// do something with the items
console.log(ticketType);
});
And more stuff...
Language | Source | Package |
---|---|---|
Node.js / TypeScript | Quick start | NPM |
Go | Quick start | Go |
This repository contains the Inferable control-plane, as well as SDKs for various languages.
Core services:
/control-plane
- The core Inferable control plane service/app
- Playground front-end and management console/cli
- Command-line interface tool (alpha)SDKs:
/sdk-node
- Node.js/TypeScript SDK/sdk-go
- Go SDK/sdk-dotnet
- .NET SDK (experimental)Inferable is completely open source and can be self-hosted on your own infrastructure for complete control over your data and compute. This gives you:
See our self hosting guide for more details.
We welcome contributions to all projects in the Inferable repository. Please read our contributing guidelines before submitting any pull requests.
All code in this repository is licensed under the MIT License.