* Fix main-methods.py: entities is a dict, use .items() and .canonical_name * Migrate docs to use CodeSnippet components - Convert quickstart.md, retain.md, recall.md, reflect.md, memory-banks.md to .mdx - Use CodeSnippet to pull code from validated example scripts - Add missing 'name' parameter to create_bank calls - Fix main-methods.py entities iteration (dict not list) - Remove retain-new.mdx demo file * Migrate existing docs to match testing pattern with code snippet and add CLI tests to the CI * Fix doc-id issue + add main-method tests * CLI fixes * Update openAPI json * Fix rust build issues * increase sleep time for Hindsight to process the document * Added a polling sleep instead of fixed * Delete immediately fails, so create the doc a earlier in the test to get the doc ready * Add debug logs * Remove debug logs
129 lines
4.9 KiB
Text
129 lines
4.9 KiB
Text
---
|
|
sidebar_position: 3
|
|
---
|
|
|
|
# Reflect
|
|
|
|
Generate disposition-aware responses using retrieved memories.
|
|
|
|
When you call **reflect**, Hindsight performs a multi-step reasoning process:
|
|
1. **Recalls** relevant memories from the bank based on your query
|
|
2. **Applies** the bank's disposition traits to shape the reasoning style
|
|
3. **Generates** a contextual answer grounded in the retrieved facts
|
|
4. **Forms opinions** in the background based on the reasoning (available in subsequent calls)
|
|
|
|
The response includes the generated answer along with the facts that were used, providing full transparency into how the answer was derived.
|
|
|
|
import Tabs from '@theme/Tabs';
|
|
import TabItem from '@theme/TabItem';
|
|
import CodeSnippet from '@site/src/components/CodeSnippet';
|
|
|
|
{/* Import raw source files */}
|
|
import reflectPy from '!!raw-loader!@site/examples/api/reflect.py';
|
|
import reflectMjs from '!!raw-loader!@site/examples/api/reflect.mjs';
|
|
import reflectSh from '!!raw-loader!@site/examples/api/reflect.sh';
|
|
|
|
:::info How Reflect Works
|
|
Learn about disposition-driven reasoning and opinion formation in the [Reflect Architecture](/developer/reflect) guide.
|
|
:::
|
|
|
|
:::tip Prerequisites
|
|
Make sure you've completed the [Quick Start](./quickstart) to install the client and start the server.
|
|
:::
|
|
|
|
## Basic Usage
|
|
|
|
<Tabs>
|
|
<TabItem value="python" label="Python">
|
|
<CodeSnippet code={reflectPy} section="reflect-basic" language="python" />
|
|
</TabItem>
|
|
<TabItem value="node" label="Node.js">
|
|
<CodeSnippet code={reflectMjs} section="reflect-basic" language="javascript" />
|
|
</TabItem>
|
|
<TabItem value="cli" label="CLI">
|
|
<CodeSnippet code={reflectSh} section="reflect-basic" language="bash" />
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
## Parameters
|
|
|
|
| Parameter | Type | Default | Description |
|
|
|-----------|------|---------|-------------|
|
|
| `query` | string | required | Question or prompt |
|
|
| `budget` | string | "low" | Budget level: "low", "mid", "high" |
|
|
| `context` | string | None | Additional context for the query |
|
|
|
|
<Tabs>
|
|
<TabItem value="python" label="Python">
|
|
<CodeSnippet code={reflectPy} section="reflect-with-params" language="python" />
|
|
</TabItem>
|
|
<TabItem value="node" label="Node.js">
|
|
<CodeSnippet code={reflectMjs} section="reflect-with-params" language="javascript" />
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
## The Role of Context
|
|
|
|
The `context` parameter steers how the reflection is performed without impacting the memory recall. It provides situational information that helps shape the reasoning and response.
|
|
|
|
**How context is used:**
|
|
- **Shapes reasoning**: Helps understand the situation when formulating an answer
|
|
- **Disambiguates intent**: Clarifies what aspect of the query matters most
|
|
- **Does not affect recall**: The same memories are retrieved regardless of context
|
|
|
|
<Tabs>
|
|
<TabItem value="python" label="Python">
|
|
<CodeSnippet code={reflectPy} section="reflect-with-context" language="python" />
|
|
</TabItem>
|
|
<TabItem value="node" label="Node.js">
|
|
<CodeSnippet code={reflectMjs} section="reflect-with-context" language="javascript" />
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
## Opinion Formation
|
|
|
|
When reflect reasons about a question, it may form new **opinions** based on the evidence in the memory bank. These opinions are created in the background and become available in subsequent `reflect` and `recall` calls.
|
|
|
|
**Why opinions matter:**
|
|
- **Consistent thinking**: Opinions ensure the memory bank maintains a coherent perspective over time
|
|
- **Evolving viewpoints**: As more information is retained, opinions can be refined or updated
|
|
- **Grounded reasoning**: Opinions are always derived from factual evidence in the memory bank
|
|
|
|
Opinions are stored as a special memory type and are automatically retrieved when relevant to future queries. This creates a natural evolution of the bank's perspective, similar to how humans form and refine their views based on accumulated experience.
|
|
|
|
## Disposition Influence
|
|
|
|
The bank's disposition affects reflect responses:
|
|
|
|
| Trait | Low (1) | High (5) |
|
|
|-------|---------|----------|
|
|
| **Skepticism** | Trusting, accepts claims | Questions and doubts claims |
|
|
| **Literalism** | Flexible interpretation | Exact, literal interpretation |
|
|
| **Empathy** | Detached, fact-focused | Considers emotional context |
|
|
|
|
<Tabs>
|
|
<TabItem value="python" label="Python">
|
|
<CodeSnippet code={reflectPy} section="reflect-disposition" language="python" />
|
|
</TabItem>
|
|
<TabItem value="node" label="Node.js">
|
|
<CodeSnippet code={reflectMjs} section="reflect-disposition" language="javascript" />
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
## Using Sources
|
|
|
|
The `based_on` field shows which memories informed the response:
|
|
|
|
<Tabs>
|
|
<TabItem value="python" label="Python">
|
|
<CodeSnippet code={reflectPy} section="reflect-sources" language="python" />
|
|
</TabItem>
|
|
<TabItem value="node" label="Node.js">
|
|
<CodeSnippet code={reflectMjs} section="reflect-sources" language="javascript" />
|
|
</TabItem>
|
|
</Tabs>
|
|
|
|
This enables:
|
|
- **Transparency** — users see why the bank said something
|
|
- **Verification** — check if the response is grounded in facts
|
|
- **Debugging** — understand retrieval quality
|