- Core Internal Concepts 🦅
- Core Runtime - How interacting with the execution works
- Nodes - The Building Blocks
- Advanced Topics 🦉
- Custom Nodes
- Iterative Development
- Language Agnostic
- Prompt Template Management
- Long Running Execution
- Including Component Agents
- Things you can do but we’re not sure what you might do with them:
Core Internal Concepts 🦅Â
Thousand Birds is designed to make a few specific things easy and to make anything else at least possible.
Core Runtime - How interacting with the execution works
At its core, Thousand Birds is providing an interface to a reactive agent runtime. We provide client SDKs which make it easy to define executable components and communicate with that runtime.
This runtime can be run locally, deployed on your own infrastructure, or you can leverage our platform to execute your agents. When first getting started we recommend running this locally, it’s actually bundled right there with the SDK! In each SDK there is an equivalent run_server
command which will start the local runtime.
Nodes - The Building Blocks
Nodes are the core building blocks of these Agents. All nodes share a few core properties:
Name
Nodes are expected to be uniquely named. These names can be anything without spaces. You’re free to make them as descriptive as you would like. Names preserve the identity of a given Node and give us a default reference to it. If you intend to track the version of a node, you should maintain or explicitly rename the node.
Queries
Nodes subscribe to inputs from other nodes via Queries. Queries are described using GraphQL.
query NamedNode {
ExampleInboundNode {
promptResult
}
}
Nodes may also have no queries. A node with no queries will run immediately and then never again. Effectively all nodes with no queries are entry points into the graph.
Output Type
Nodes emit their outputs in a structure that they describe as GraphQL types. Some nodes have implicit structures such as Language Model nodes, because they only ever emit a single value.
type LanguageModelNode {
promptResult: String
}
(optional) Output Tables
Nodes may optionally include a list of Output Tables. These are additional named locations to push output changes from your node.
Advanced Topics 🦉
Custom Nodes
Iterative Development
Language Agnostic
Prompt Template Management
Long Running Execution
Including Component Agents
Things you can do but we’re not sure what you might do with them:
- Custom nodes still have access to the SDK, meaning that the logic inside of a custom node can mutate the node graph. You can definitely use this to make your agent self constructing or self modifying.