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"
)

资源

下一步