Unified Content Protocol - Python SDK for LLM content manipulation
Project description
ucp-content
Unified Content Protocol SDK for Python.
Build LLM-powered content manipulation with minimal code.
Installation
pip install ucp-content
Quick Start
import ucp
# 1. Parse markdown into a document
doc = ucp.parse("""
# My Article
This is the introduction.
## Section 1
Some content here.
""")
# 2. Create an ID mapper for token efficiency
mapper = ucp.map_ids(doc)
# 3. Get a compact document description for the LLM
description = mapper.describe(doc)
# Output:
# Document Structure:
# [2] heading1 - My Article
# [3] paragraph - This is the introduction.
# [4] heading2 - Section 1
# [5] paragraph - Some content here.
# 4. Build a prompt with only the capabilities you need
system_prompt = (ucp.prompt()
.edit()
.append()
.with_short_ids()
.build())
# 5. After LLM responds, expand short IDs back to full IDs
llm_response = 'EDIT 3 SET text = "Updated intro"'
expanded_ucl = mapper.expand(llm_response)
# Result: 'EDIT blk_000000000003 SET text = "Updated intro"'
API Reference
Document Operations
# Parse markdown
doc = ucp.parse('# Hello\n\nWorld')
# Render back to markdown
md = ucp.render(doc)
# Create empty document
doc = ucp.create()
Prompt Builder
Build prompts with only the capabilities your agent needs:
prompt = (ucp.prompt()
.edit() # Enable EDIT command
.append() # Enable APPEND command
.move() # Enable MOVE command
.delete() # Enable DELETE command
.link() # Enable LINK/UNLINK commands
.snapshot() # Enable SNAPSHOT commands
.transaction() # Enable ATOMIC transactions
.all() # Enable all capabilities
.with_short_ids() # Use short numeric IDs
.with_rule('Keep responses concise')
.build())
ID Mapper
Save tokens by using short numeric IDs:
mapper = ucp.map_ids(doc)
# Shorten IDs in any text
short = mapper.shorten('Block blk_000000000003 has content')
# Result: 'Block 3 has content'
# Expand IDs in UCL commands
expanded = mapper.expand('EDIT 3 SET text = "hello"')
# Result: 'EDIT blk_000000000003 SET text = "hello"'
# Get document description with short IDs
desc = mapper.describe(doc)
UCL Builder
Build UCL commands programmatically:
commands = (ucp.ucl()
.edit(3, 'Updated content')
.append(2, 'New paragraph')
.delete(5)
.atomic() # Wrap in ATOMIC block
.build())
Token Efficiency
Using short IDs can significantly reduce token usage:
| ID Format | Example | Tokens |
|---|---|---|
| Long | blk_000000000003 |
~6 |
| Short | 3 |
1 |
For a document with 50 blocks referenced 3 times each, this saves ~750 tokens.
Type Hints
Full type hint support:
from ucp import Document, Block, ContentType, SemanticRole, Capability
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ucp_content-0.1.0.tar.gz.
File metadata
- Download URL: ucp_content-0.1.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
633acded973a2a9a71f34cec6d8980643d058ff66ca4076982289a02f63220ec
|
|
| MD5 |
94a5f7d43c40f31a3f5113464635c5c6
|
|
| BLAKE2b-256 |
28d7fd5ac778d7bf5a2280f099e72fda9ddb6b066640c60c546518cd805047c6
|
File details
Details for the file ucp_content-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ucp_content-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa4ce68765a2cfed3db4769afc2e23abcb019f517bca064f9e4a6cffb887c952
|
|
| MD5 |
ca192b7349f5d9fb3e7662bf490c20d0
|
|
| BLAKE2b-256 |
bfec983ed8b95ad5383176f46387e713d17ea96648efd8c63379822561d47a5b
|