* feat: add better params to working representation fetch in SDKs, return messages when added * fix: working representation routes now accepting all parameters properly, with tests * feat: add metadata/config fields to SDK objects where viable * fix: tests * feat: refactor SDKs to use representation config; [TEMP STAINLESS BUILD] update API * feat: add representation object to sdks * fix: use stainless sdk on branch * fix: update TypeScript SDK tsconfig to use node16 module resolution * fix: add isolatedModules = true to tsconfig * fix: lol * chore: coderabbit review * feat: make delete session real * feat: add observations routes with delete endpoints for documents. make session deletion real. * chore: type cleanup * fix: tests * chore: coderabbit review * fix: namespace by workspace * feat: add ability to customize messages_per_summary at both workspace and session level * chore: tests for summary config * chore: coderabbit cleanup * feat: make session and workspace config totally customizeable * feat: add search by peer knowledge (#250) * feat: search by peer perspective * fix: enforce workspace in filters, make messages distinct in join * fix: batch and merge migration steps * fix: add refresh, add config to workspace, add refresh function, make fields readonly * fix: search distinct * fix: merge migrations * fix: merge migrations * fix: batch deletions, improve comments, limit consolidate dream to 100 docs at a time, auth on observations routes * chore: review * chore: coderabbit * chore: review * chore: broken comment * feat: add set peer card route to API * feat: create advanced configuration parameters with message>session>workspace hierarchy * [wip] build unified testing harness * chore: lint * fix: cache invalidation, naming things, etc * feat: longmem tests * chore: peer config refactor * feat: consolidate dream working, refactor representation * fix: Various CR Comment Fixes * feat: Allow configurable Redis port for harness instances and update cleanup methods to be asynchronous. * feat: agentic ingestion task!!! * feat: agentic deriver * feat: dialectic agent and dreamer agent * chore: browbeat tests into passing * fix: nits * chore: remove old code, update config files * fix: simplify deriver * feat: dialectic agent prompt updates, re-introduce non_agent deriver, eval tweaks * feat: fast deriver, dreamer, then dialectic * fix: tweaks across the board * feat: add baseline tests * feat: truncation in tools and client, tweaks for evals * feat: add locomo, fix longmem judge!!! * fix: locomo f1 is trash, use llm judge * feat: trace creation * feat: add first draft of obex benchmark, fix embedding model, fix locomo methodology * fix: locomo session-optimized, better logging of cache usage and better cache usage * chore: use openrouter for baselines * fix: add test for merge migration * chore: opus-powered cleanup * fix: add config for vllm, better client * chore: clean up clients.py a bit * chore: move magic numbers to config, add tests for agent tools * fix: wrong mock in dialectic tests, make ToolContext a dataclass * feat: tweak prompts, make deriver explicit-only * feat: more prompt & tool tweaks * chore: more tweaks * feat: dream with subagents * fix: make dream trigger override scheduled, play around with dream agents * chore: cleanup deriver * chore: cleanup dialectic * chore: cleanup orchestrator * chore: comment out dream stuff, WIPing * fix: inc temp on retry, typechecking * feat: tweak dreaming * feat: contradiction obs * Add dream trees * chore: preserve reasoning_details from openrouter in client * fix: get_observation_context correct params * fix: use correct message id in tool * chore: cleanup longmem runner * chore: clean up tests, remove dream tests for now as rearchitecting around trees * chore: update stainless deps * Update threholding mechanism * chore: pre-commit hooks whitespace * chore: clean up types * feat: add explicit bench * fix: address additional basepyright issues * fix: adding logging as a fixture on honcho_llm_call and supporting dialectic loging. (#305) * fix: lock on db for tool calls * chore: clean up experimental derivers * chore: coderabbit review cleanup * feat: add streaming support to agentic dialectic * feat: prometheus token tracking for deriver and dialectic * fix: self-loops for isolated nodes * chore: PascalCase for prometheus parameter typing * feat: add reasoning levels to dialectic agent * chore: delete old file, add new fake env vars in unittest.yml * fix: all fields needed for dialectic reasoning level configs * feat: track dreaming usage in prometheus * chore: Create backwards compatabile conclusion and queue endpoints * fix: remove redundant try-catch, add trace label, move .limit to end of statement * fix: remove vignettes (for now), review fixes, remove merge migration, config cleanup * chore: code review / cleanup * chore: merge fixes * chore: clean up, remove reasoning_focus, reintroduce peer cards in dreamers * chore: code rabbit nitpicks * fix: add unique index for pending dreams in queue * fix: revert removal of surprisal in dreamer config --------- Co-authored-by: Vineeth Voruganti <13438633+VVoruganti@users.noreply.github.com> Co-authored-by: 3un01a <3un01a@plasticlabs.ai> Co-authored-by: 3un01a <3un01a.labs@gmail.com> Co-authored-by: ajspig <46900795+ajspig@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| examples | ||
| src/honcho | ||
| .gitignore | ||
| CHANGELOG.md | ||
| README.md | ||
| pyproject.toml | ||
README.md
Honcho Python SDK
The official Python library for the Honcho conversational memory platform. Honcho provides tools for managing peers, sessions, and conversation context across multi-party interactions, enabling advanced conversational AI applications with persistent memory and theory-of-mind capabilities.
Installation
pip install honcho-ai
Quick Start
from honcho import Honcho
# Initialize client
client = Honcho(api_key="your-api-key")
# Create peers (participants in conversations)
alice = client.peer("alice")
bob = client.peer("bob")
# Create a session for group conversations
session = client.session("conversation-1")
# Add messages to the session
session.add_messages([
alice.message("Hello, Bob!"),
bob.message("Hi Alice, how are you?")
])
# Wait for deriver to process all messages (only necessary if very recent messages are critical to query)
client.poll_deriver_status()
# Query conversation context
response = alice.chat("What did Bob say to the user?")
print(response)
Core Concepts
Peers
Peers represent participants in conversations.
# Create peers
assistant = client.peer("assistant")
user = client.peer("user-123")
# Chat with global context
response = user.chat("What did I talk about yesterday?")
# Chat with perspective of another peer
response = user.chat("Does the assistant know my preferences?", target=assistant)
Sessions
Sessions group related conversations and messages:
# Create a session
session = client.session("project-discussion")
# Add peers to session
session.add_peers([alice, bob])
# Add messages
session.add_messages([
alice.message("Let's discuss the project timeline"),
bob.message("I think we need two more weeks")
])
# Get conversation context
context = session.get_context()
Messages and Context
Retrieve and use conversation history:
# Get messages from a session
messages = session.get_messages()
# Convert to OpenAI format for further prompting
openai_messages = context.to_openai(assistant="assistant")
# Convert to Anthropic format for further prompting
anthropic_messages = context.to_anthropic(assistant="assistant")
Async Support
from honcho import AsyncHoncho
async def main():
client = AsyncHoncho(api_key="your-api-key")
Metadata Management
# Set peer metadata
user.set_metadata({"location": "San Francisco", "preferences": {"theme": "dark"}})
# Session metadata
session.set_metadata({"topic": "project-planning", "priority": "high"})
Multi-Perspective Queries
# Alice's view of what Bob knows
response = alice.chat("Does Bob remember our discussion about the budget?", target=bob)
# Session-specific perspective
response = alice.chat("What does Bob think about this project?",
target=bob,
session_id=session.id)
Configuration
Environment Variables
export HONCHO_API_KEY="your-api-key"
export HONCHO_BASE_URL="https://api.honcho.dev" # Optional
export HONCHO_WORKSPACE_ID="your-workspace" # Optional
Client Options
client = Honcho(
api_key="your-api-key",
environment="production", # or "local", "demo"
workspace_id="custom-workspace",
base_url="https://api.honcho.dev"
)
Examples
Check out the examples/ directory for complete usage examples:
example.py- Comprehensive feature demonstrationchat.py- Basic multi-peer chatasync_example.py- Async/await usagesearch.py- Context search and retrieval
License
Apache 2.0 - see LICENSE for details.