* Add documentation code validation system - Create runnable example scripts in examples/api/ (19 files) - Add CodeSnippet component for extracting marked sections - Add raw-loader dependency for importing source files - Create sample retain-new.mdx showing new approach - Add README documenting coverage and gaps * Fix wheel glob expansion in test-doc-examples CI job * Fix CI issue * Fix wheel path - uv build outputs to repo root dist/ * Fix: use explicit shell expansion for wheel install * Fix: run cd in subshell so install runs from repo root * Add documentation code validation CI job - Use uv sync + uv run pattern (matches existing CI) - Add requests to test dependencies for cleanup scripts * Fix async API client usage in documents.py example * Fix main-methods.py: RecallResult and ReflectFact don't have weight attribute * Fix opinions.py: use actual API attributes instead of non-existent ones * Fix example scripts: remove non-existent API attributes - recall.py: remove .weight, fix entities iteration (dict not list) - retain.mjs: remove result.async check
75 lines
2 KiB
Python
75 lines
2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Retain API examples for Hindsight.
|
|
Run: python examples/api/retain.py
|
|
"""
|
|
import os
|
|
import requests
|
|
|
|
HINDSIGHT_URL = os.getenv("HINDSIGHT_API_URL", "http://localhost:8888")
|
|
|
|
# =============================================================================
|
|
# Setup (not shown in docs)
|
|
# =============================================================================
|
|
from hindsight_client import Hindsight
|
|
|
|
client = Hindsight(base_url=HINDSIGHT_URL)
|
|
|
|
# =============================================================================
|
|
# Doc Examples
|
|
# =============================================================================
|
|
|
|
# [docs:retain-basic]
|
|
client.retain(
|
|
bank_id="my-bank",
|
|
content="Alice works at Google as a software engineer"
|
|
)
|
|
# [/docs:retain-basic]
|
|
|
|
|
|
# [docs:retain-with-context]
|
|
client.retain(
|
|
bank_id="my-bank",
|
|
content="Alice got promoted to senior engineer",
|
|
context="career update",
|
|
timestamp="2024-03-15T10:00:00Z"
|
|
)
|
|
# [/docs:retain-with-context]
|
|
|
|
|
|
# [docs:retain-batch]
|
|
client.retain_batch(
|
|
bank_id="my-bank",
|
|
items=[
|
|
{"content": "Alice works at Google", "context": "career"},
|
|
{"content": "Bob is a data scientist at Meta", "context": "career"},
|
|
{"content": "Alice and Bob are friends", "context": "relationship"}
|
|
],
|
|
document_id="conversation_001"
|
|
)
|
|
# [/docs:retain-batch]
|
|
|
|
|
|
# [docs:retain-async]
|
|
# Start async ingestion (returns immediately)
|
|
result = client.retain_batch(
|
|
bank_id="my-bank",
|
|
items=[
|
|
{"content": "Large batch item 1"},
|
|
{"content": "Large batch item 2"},
|
|
],
|
|
document_id="large-doc",
|
|
retain_async=True
|
|
)
|
|
|
|
# Check if it was processed asynchronously
|
|
print(result.var_async) # True
|
|
# [/docs:retain-async]
|
|
|
|
|
|
# =============================================================================
|
|
# Cleanup (not shown in docs)
|
|
# =============================================================================
|
|
requests.delete(f"{HINDSIGHT_URL}/v1/default/banks/my-bank")
|
|
|
|
print("retain.py: All examples passed")
|