Langchain 社区支持
VeADK 在 veadk.community.langchain_ai 模块下提供了一系列与 Langchain / LangGraph 生态集成的组件,让您可以在 Langchain 应用中直接复用 VeADK 的模型、知识库与记忆能力。
模型
ArkChatModel 继承自 Langchain 的 ChatOpenAI,用于调用火山引擎方舟(Ark)平台上的模型。使用前请先配置环境变量:
export MODEL_AGENT_API_KEY="<你的方舟 API Key>"from veadk.community.langchain_ai.models.ark_model import ArkChatModel
llm = ArkChatModel(model="deepseek-v3-1-terminus")
response = llm.invoke("你好,请介绍一下你自己。")
print(response.content)ArkChatModel 兼容 Langchain ChatOpenAI 的全部接口,您可以像使用任意 Langchain 聊天模型一样在链(chain)、代理(agent)或图(graph)中使用它。
知识库
KnowledgeBase 提供基于向量检索的知识库能力。在 Langchain / LangGraph 中,可以通过 load_knowledgebase 工具将知识库的语义检索能力暴露给智能体。该工具会从运行时上下文(runtime.context.knowledgebase)读取知识库实例,因此你需要把配置好的 KnowledgeBase 通过 context 传入。
from dataclasses import dataclass
from langchain.agents import create_agent
from veadk.knowledgebase import KnowledgeBase
from veadk.community.langchain_ai.models.ark_model import ArkChatModel
from veadk.community.langchain_ai.tools.load_knowledgebase import load_knowledgebase
# 1. 配置知识库实例
knowledgebase = KnowledgeBase(
name="preference",
backend="viking",
index="viking_demo_create_2",
)
# 2. 定义上下文 schema,把知识库传给工具
@dataclass
class Context:
knowledgebase: KnowledgeBase
# 3. 构建 LangGraph 智能体,并把 load_knowledgebase 作为工具
agent = create_agent(
model=ArkChatModel(model="deepseek-v3-1-terminus"),
tools=[load_knowledgebase],
context_schema=Context,
)
# 4. 调用时通过 context 注入知识库实例
result = agent.invoke(
{"messages": [{"role": "user", "content": "我的偏好是什么?"}]},
context=Context(knowledgebase=knowledgebase),
)
print(result["messages"][-1].content)智能体在运行时会调用 load_knowledgebase(query),对 context 中的知识库执行语义检索并返回相关片段。
短期记忆
ShortTermMemory 提供会话级别(session-scoped)的短期记忆,用于在单次会话内保存对话上下文。
from veadk.memory.short_term_memory import ShortTermMemory
short_term_memory = ShortTermMemory(backend="sqlite")短期记忆按会话隔离,适合在一次连续对话中保留上下文。会话结束后,这些数据不会跨会话保留。
长期记忆
长期记忆用于在不同会话之间持久化记忆。VeADK 通过 VikingMemoryStore 提供基于火山引擎 Viking 的长期记忆存储,并通过 load_memory 工具让智能体检索历史记忆。load_memory 会从运行时读取记忆存储(runtime.store)与用户标识(runtime.context.user_id),因此你需要把 VikingMemoryStore 作为 store 传入,并在 context 中提供 user_id。
from dataclasses import dataclass
from langchain.agents import create_agent
from veadk.community.langchain_ai.models.ark_model import ArkChatModel
from veadk.community.langchain_ai.tools.load_memory import load_memory
from veadk.community.langchain_ai.store.memory.viking_memory import VikingMemoryStore
# 1. 配置长期记忆存储
store = VikingMemoryStore(index="aiops")
# 2. 定义上下文 schema,提供 user_id
@dataclass
class Context:
user_id: str
# 3. 构建 LangGraph 智能体,把 store 与 load_memory 工具接入
agent = create_agent(
model=ArkChatModel(model="deepseek-v3-1-terminus"),
tools=[load_memory],
context_schema=Context,
store=store,
)
# 4. 调用时通过 context 提供 user_id
result = agent.invoke(
{"messages": [{"role": "user", "content": "我们上次聊到哪了?"}]},
context=Context(user_id="user-123"),
)
print(result["messages"][-1].content)智能体在运行时会调用 load_memory(query),从长期记忆存储中检索与当前问题相关的历史记忆,从而实现跨会话的记忆能力。
使用 VikingMemoryStore 前,请确保已正确配置火山引擎 Viking 相关的环境变量。