
精通 AI 驱动的营销一致性:使用 langmem 和 langgraph 技术构建自学习代理
确保 AI 生成的营销活动的一致性
AI Agent Bot 正在服用记忆药丸。由 Dall-E 3 想象
挑战:用 AI 创建一致的品牌叙事
在第一部分中,我们介绍了AI 驱动的社交媒体代理的概念——能够分析品牌影响力、生成视频内容和自动化帖子。
但是当 AI 开始大规模创建内容时会发生什么?
🚨 如果没有结构化的记忆系统,AI 生成的营销材料可能会失去连贯性,从而产生不连贯的信息传递,随着时间的推移,无法建立可识别的品牌形象。
想象一下,一个品牌发布了一段关于可持续时尚的 AI 生成视频,然后是另一段完全不相关的短片,鼓励客户不惜一切代价削减成本——这会混淆观众并削弱品牌信任。
这就是LangMem发挥作用的地方。通过将长期记忆集成到我们的社交媒体代理中,我们可以确保 AI 不仅仅创建孤立的帖子,而是记住品牌的历史、受众偏好和营销主题——从而形成连贯且不断发展的社交媒体策略。
为什么选择 LangMem?AI 驱动的营销一致性的秘密武器
🆕 LangMem SDK 于 2025 年 2 月 18 日发布,在Reelfy,我们已经开始尝试使用它来突破 AI 驱动内容营销的界限。
LangMem提供了一个高级的记忆系统,允许 AI 代理随着时间的推移保留和完善知识。它超越了短期上下文窗口,使代理能够从过去的交互中学习、动态更新品牌指南并提高讲故事的一致性。
哪种类型的记忆最适合社交媒体营销?
LangMem 提供了三种关键类型的记忆——每种记忆在 AI 驱动的工作流程中都有不同的功能。为了在AI 生成的营销视频中保持品牌一致性,我们侧重于语义记忆和程序记忆:
使用 LangMem + LangGraph 构建社交媒体代理
只有 LangMem 是不够的——我们需要一种结构化的方式让我们的 AI 代理访问和更新其记忆。 这就是LangGraph发挥作用的地方。通过将 LangMem 的记忆工具集成到 LangGraph 的代理框架中,我们创建了一个自学习营销助手,它可以实时分析、生成和完善内容。
在第 1 部分中,我们使用 SmolAgents 来协调我们的 AI 社交媒体代理。这次,我们改用 LangGraph。为什么?
🔹 LangGraph 与 LangMem 原生集成,使得演示使用内置记忆方法的好处变得更容易。
步骤 1:初始化 AI 的记忆——用于营销知识的内置 RAG
在我们的 AI 生成战略营销内容之前,它需要一个地方来存储和检索知识。在这个设置中,LangMem 充当一个内置的 RAG。
让我们初始化我们的长期记忆存储,它将包含语义记忆(事实和知识)和程序记忆(营销工作流程)。
from langgraph.store.memory import InMemoryStore
## Initialize memory storage using LangGraph
store = InMemoryStore(index={"dims": 1536, "embed": "openai:text-embedding-3-small"})
🔹 为什么?AI 需要一个持久的知识库,以避免生成不连贯、不一致的内容。
步骤 2:使用语义记忆存储关键营销知识
让我们定义一个结构来存储关键营销知识,并创建记忆管理工具以供以后使用。我们将首先:
1️⃣ 将关键营销知识存储在语义记忆中
我们没有将知识硬编码到提示中,而是将营销事实存储在LangMem 的长期记忆中,确保 AI 可以动态地检索和应用它们。
from langmem import create_memory_manager, create_manage_memory_tool, create_search_memory_tool
from pydantic import BaseModel
## Define structure for marketing knowledge
class MarketingKnowledge(BaseModel):
topic: str
key_insights: str
## Create memory manager to store facts
memory_manager = create_memory_manager(
"anthropic:claude-3-5-sonnet-latest",
schemas=[MarketingKnowledge],
instructions="Store key marketing facts and retrieve them for future campaign strategies.",
store=store,
)
## Store industry knowledge
marketing_facts = [
{"topic": "Startup Founders' Challenges", "key_insights": "Founders struggle with hiring, funding, and scaling."},
{"topic": "Engaging Video Content", "key_insights": "Short-form educational videos drive 3x more engagement than static posts."},
{"topic": "Brand Differentiation", "key_insights": "Successful startups use storytelling to highlight unique brand values."}
]
## Store facts in AI's memory
for fact in marketing_facts:
memory_manager.invoke({"messages": [{"role": "user", "content": f"Save this fact: {fact}"}]})
## Create tools for AI to interact with memory
manage_memory_tool = create_manage_memory_tool(namespace=("memories",))
search_memory_tool = create_search_memory_tool(namespace=("memories",))
🔹 为什么? AI 现在可以访问它可以应用于生成营销活动的真实世界知识。
2️⃣ 随着新见解的出现,更新语义记忆
营销知识不是静态的——趋势会发生变化,受众行为会发生变化,新见解也会出现。
假设我们发现了新的参与趋势(例如,“LinkedIn 轮播超越了视频”)。我们需要相应地更新 AI 的记忆。
语义记忆的视觉表示。绘制于 https://excalidraw.com/
## Update AI's marketing knowledge with new industry insights
new_insight = {
"topic": "Engaging Video Content",
"key_insights": "LinkedIn carousels now outperform short videos for B2B engagement."
}
## Store the updated fact in memory
memory_manager.invoke({"messages": [{"role": "user", "content": f"Update this fact: {new_insight}"}]})
🔹 为什么? AI 生成的内容现在将反映最新趋势,确保它保持竞争力和相关性。
## 步骤 3:为 AI 营销代理创建和完善程序性记忆
借助 *LangMem*,我们可以**通过程序性记忆来** **教** 我们的社交媒体代理如何构建营销活动。为了避免**叙事格式不一致**,我们的 AI 代理必须学习**有效营销视频的结构**——例如**钩子、叙事弧线和行动号召的放置**。
但营销**不是静态的**——品牌在**发展**,策略在**转变**,受众参与度在**波动**。
这就是**我们不仅仅定义一次指令**的原因——我们**将它们存储在记忆中,并随着时间的推移根据市场趋势和绩效见解来完善它们**。我们将首先:
**1️⃣ 将初始营销指南存储在程序性记忆中**
让我们从**定义**我们的 AI 应该如何构建营销活动开始。我们将这些**规则存储在 LangMem 的长期记忆中**,确保代理**遵循可预测的格式**。
```python
## Store initial campaign structure in procedural memory
store.put(("instructions",), key="marketing_campaigns", value={
"prompt": """You are a Social Media Agent. Every marketing campaign must follow this structure:
1. Hook: Start with an engaging question, bold statement, or surprising stat.
2. Educational Insight: Teach startup founders something valuable about the topic.
3. Call to Action: Encourage audience interaction with a thought-provoking question or challenge.
Maintain a playful yet professional tone. Focus on creating **educational content** for startup founders."""
})
🔹 为什么? 通过将这些活动指南保存在记忆中,我们的 AI 将记住并在多个活动中遵循此结构——确保一致性。
2️⃣ 根据市场洞察完善活动结构
随着营销策略的发展,我们可能需要更新 AI 的程序性记忆——例如,如果我们意识到在活动格式中添加成功案例时,受众参与度会提高。
程序性记忆的视觉表示。绘制于 https://excalidraw.com/
from langmem import create_prompt_optimizer
## Initialize prompt optimizer to refine procedural memory
optimizer = create_prompt_optimizer("anthropic:claude-3-5-sonnet-latest")
## Retrieve current campaign structure
current_prompt = store.get(("instructions",), key="marketing_campaigns").value["prompt"]
## Market feedback suggests success stories increase engagement
feedback = {"request": "Include a success story in every campaign to increase engagement."}
## AI refines campaign structure based on feedback
updated_prompt = optimizer.invoke({"prompt": current_prompt, "trajectories": [(current_prompt, feedback)]})
## Store the updated procedural memory
store.put(("instructions",), key="marketing_campaigns", value={"prompt": updated_prompt})
🔹 为什么? AI 生成的活动不断改进,确保更高的参与度。
步骤 4:生成学习和适应的 AI 驱动营销活动
现在我们的 AI 拥有了知识(语义记忆)和结构化流程(程序性记忆),让我们生成随着时间推移而发展的活动。
1️⃣ 创建第一个营销活动
from langgraph.prebuilt import create_react_agent
from langgraph.config import get_store
## Define prompt function to fetch instructions from memory
def prompt(state):
item = store.get(("instructions",), key="marketing_campaigns")
instructions = item.value["prompt"]
sys_prompt = {"role": "system", "content": f"## Campaign Instructions\n\n{instructions}"}
return [sys_prompt] + state["messages"]
## Create AI Marketing Agent
agent = create_react_agent(
"anthropic:claude-3-5-sonnet-latest",
prompt=prompt,
tools=[manage_memory_tool, search_memory_tool],
store=store,
)
## Generate the first campaign
first_campaign = agent.invoke({
"messages": [{"role": "user", "content": "Create a campaign about Hiring and Team Building for startup founders."}]
})
print(first_campaign) # AI follows stored campaign structure
2️⃣ 生成第二个活动,该活动扩展了第一个活动
由于AI 记住过去的活动,我们不需要手动检索它们——AI 会自动保持上下文。
## Generate a follow-up campaign while maintaining continuity
second_campaign = agent.invoke({
"messages": [{"role": "user", "content": "Create a follow-up campaign on Product Development that builds on the Hiring and Team Building insights."}]
})
print(second_campaign) # AI expands on previous campaign, ensuring continuity
🔹 为什么? AI 开发了战略性的活动叙事,而不是创建随机的独立帖子。
为什么 LangMem 是 AI 营销代理的变革者
如果没有记忆,AI 代理会生成一次性帖子,而没有连续性。有了 LangMem,我们解锁了:
✅ 品牌一致性 → AI 记住所有内容中的品牌标识、声音和消息传递。
✅ 内容质量控制 → AI 遵循结构化的活动工作流程,确保内容保持精美且引人入胜。
✅ 营销智能 → AI 记住过去的活动、行业见解和受众偏好,从而实现更明智的内容决策。
我们下一步该怎么做?
我们已经为记忆驱动的营销 AI 奠定了基础,但这仅仅是开始。以下是我们可以探索以进一步突破界限的几个主题:
🔹 高级个性化 → AI 动态地为不同的受众群体定制内容,确保更高的参与度。
🔹 跨平台内容改编 → AI 自动重新利用内容到多个社交媒体平台。
🔹 实时性能优化 → AI 分析受众反应并不断完善营销策略。
请继续关注,我们将继续重新定义 AI 驱动的社交媒体营销!🚀
参考
[1] LangChain 概念指南。取自:https://python.langchain.com/docs/concepts/
[2] LangMem 文档。取自:https://langchain-ai.github.io/langmem/
[3] LangGraph 文档。取自:https://langchain-ai.github.io/langgraph/
[4] 用于代理长期记忆的 LangMem SDK。取自:https://blog.langchain.dev/langmem-sdk-launch/
[5] LangMem 代码示例。取自:https://github.com/langchain-ai/langmem/tree/main/examples/intro_videos