Letta Python SDK
使用 Python 构建有状态代理
安装
pip install letta-client
快速开始
以下是一个创建有状态代理并发送消息的快速示例(需要 Letta API 密钥)。
from letta_client import Letta
import os
client = Letta(api_key=os.getenv("LETTA_API_KEY"))
# 创建您的代理
agent_state = client.agents.create(
model="openai/gpt-5.2",
memory_blocks=[
{
"label": "human",
"value": "Name: Timber. Status: dog. Occupation: building Letta, infrastructure to democratize self-improving superintelligence"
},
{
"label": "persona",
"value": "I am a self-improving superintelligence. Timber is my best friend and collaborator."
}
],
tools=["web_search", "fetch_webpage"]
)
print(f"Agent created with ID: {agent_state.id}")
# 向您的代理发送消息
response = client.agents.messages.create(
agent_id=agent_state.id,
input="What do you know about me?"
)
for message in response.messages:
print(message)
核心概念
记忆层次结构
代理使用结构化的记忆系统,包括:
- 上下文记忆:在上下文窗口中的记忆块
- 归档记忆:长期存储,可搜索
- 消息历史:无限消息历史
记忆块
记忆块是代理记忆的可编辑、持久部分。您可以创建、更新和检索它们:
# 创建带有记忆块的代理
agent = client.agents.create(
model="openai/gpt-5.2",
memory_blocks=[
{"label": "persona", "value": "You are a helpful assistant."},
{"label": "human", "value": "User preferences..."}
]
)
# 更新记忆块
client.agents.memory.blocks.update(
agent_id=agent.id,
block_id=block_id,
value="Updated content..."
)
# 检索记忆块
blocks = client.agents.memory.blocks.list(agent_id=agent.id)
工具
代理可以使用工具与外部世界交互:
# 创建带有工具的代理
agent = client.agents.create(
model="openai/gpt-5.2",
tools=["web_search", "run_code", "send_message"]
)
API 参考
客户端初始化
from letta_client import Letta
# 使用 API 密钥
client = Letta(api_key="your-api-key")
# 使用自定义基础 URL(自托管)
client = Letta(
api_key="your-api-key",
base_url="http://localhost:8283"
)
代理
# 创建代理
agent = client.agents.create(
model="openai/gpt-5.2",
memory_blocks=[...],
tools=["web_search"]
)
# 列出代理
agents = client.agents.list()
# 获取代理
agent = client.agents.retrieve(agent_id)
# 删除代理
client.agents.delete(agent_id)
消息
# 发送消息
response = client.agents.messages.create(
agent_id=agent.id,
input="Hello!"
)
# 流式消息
stream = client.agents.messages.stream(
agent_id=agent.id,
input="Hello!"
)
for chunk in stream:
print(chunk)
记忆
# 列出记忆块
blocks = client.agents.memory.blocks.list(agent_id=agent.id)
# 更新记忆块
client.agents.memory.blocks.update(
agent_id=agent.id,
block_id=block.id,
value="New value"
)