Before DataMind Oda starts any task, the request it sends opens with its instructions: who it is, how it should work, and what its tools are. This page shows how that text is assembled for a deployment of Oda: the parts it is built from, the order they take, and the pieces around them. It is for the people who configure a deployment; the guidance you write yourself lives on Create a custom preset.
The instructions are not one fixed text. They are assembled when a request is built, from parts registered with the deployment, and the result travels as the opening message of the conversation.
The text is part of the conversation rather than a hidden field, so a change to it arrives as a later message. The Oda agent runtime covers how agents are created and driven, and Tools and how they are offered covers what the tool descriptions are.
order must be a finite number.Two kinds of registration feed the assembly: the deployment's own text, and text registered from a narrower scope, such as one agent's composition.
prompt section "<name>" is already registered; within a scope the message ends already registered in this scope. A narrower scope is the way to give one agent its own version.multiple complete prompt sections are active: followed by both names.Oda carries an identity line, but a deployment does not have to use it. It is off by default, because the instructions your DataMind server supplies already set out who the agent is. Switch it on for a deployment whose server instructions carry no identity; the prompt then opens with:
You are an AI agent powered by DataMind Oda.
The runtime context is on by default. It is a snapshot of the current situation, and each new snapshot supersedes the earlier ones. Its heading makes that clear:
Current runtime context.
Current runtime context: none. Earlier runtime-context snapshots no longer apply.The persona is two pieces of text around the assembled prompt. Both are empty by default, so a deployment that wants neither gets its sections alone.
<unlisted-tools> and must be present in any named order; a tool may not take that name.Instruction text can refer to values with double braces: {{name}}. A name starts with a lowercase letter and continues with lowercase letters, digits or underscores.
{{ model }}, and nested braces are malformed and refuse the assembly.unknown prompt variable "{{name}}" in section ". . . ", with the registered names listed), a registered name with no value for this assembly (prompt variable "{{name}}" has no value for this assembly (section ". . . ")), and a malformed reference each refuse it. A malformed prompt is worse than a loud failure.{{ with no closing }} after it stays ordinary text.It is part of the assembled prompt, and it is optional. The line reads You are an AI agent powered by DataMind Oda. and it is off by default, because the instructions your DataMind server supplies already carry the identity. A deployment whose server instructions have none can switch it on.
No. The text is assembled from what the deployment and its scopes register, and a chat has no editor for it. The guidance you write yourself goes into a preset's instructions instead; see Create a custom preset.
Yes. A narrower scope can replace the persona prefix or suffix by name for its own assemblies, and every other scope keeps the deployment's text.
It is on by default. It can be left out of one scope's assemblies without disabling what feeds it, or turned off for the deployment entirely, in which case nothing that would feed it runs and nothing can add to it.
{{. . . }} reference cannot be filled?The whole assembly is refused rather than rendered with a gap. An unknown name, a registered name with no value for this assembly, and a malformed reference each refuse it, and the messages name the reference, its section and the values that exist. When you edit preset instructions, the editor checks the braces as you save them; the checks on this page are the assembly's own.
Alphabetically by name by default, regardless of registration order. A deployment can name its own order: listed tools take their listed positions, and everything else goes at the rest entry, alphabetically among themselves. A name listed twice, a name that matches no tool, or a missing rest entry refuses the assembly.
The new version is added later in the conversation; earlier messages are not rewritten, and the reuse of the unchanged beginning ends from the first point that changed.
Yes, one section can be marked as the complete prompt, and the assembly then renders exactly its text. Two sections claiming it at once refuse the assembly: multiple complete prompt sections are active:, followed by both names.
The same name was registered twice in one layer. A narrower scope may shadow a wider name for itself, but a duplicate inside one layer is refused rather than merged; give the second registration to a narrower scope instead.
No. Placement numbers decide the order, and two sections that share a number fall back to name order. Registration order never matters.
At least ten numbers from their neighbours. The gap leaves room for a later section to take a free number in between without renumbering anything else, and a placement that is not a number refuses the assembly.