【AI】Langchain框架学习04

  • 怎么结合消息存储方法与LCEL
    (因为RedischatMessageHistory组件本身是没有实现Runnable类的,也没有invoke等相关方法的,所以无法直接书写成链式语法,需要借助 RunnableWithMessageHistory 类)
from langchain_core.runnables.history import RunnableWithMessageHistory

#构建阿里云百炼大模型客户端 
llm = ChatOpenAI(
    model="qwen-plus"
    base_url "https://dashscope_aliyunes_com/compatible-mode/v1",
    openai_api_key=load_key("BAILIAN_API_KEY"),
)

runnable = RunnableWithMessageHistory(
    llm,
    get_session_history = lambda: history, # 匿名函数,返回history
) # 返回的 key

# 第一次聊天,清除聊天记录
history.clear()

runnable.invoke({"text":"你是谁"})
# 之后每次聊天时,会自动带上Redis中的聊天记录。
runnable.invoke({"text":"请重复一次"})
  • 结合前几节,构建更复杂些的链式逻辑
from langchain_core.runnables.history import RunnableWithMessageHistory

# 提示词模板
prompt_template = ChatPromptTemplate.from_messages([
    ("user", "{text}")
])

#构建阿里云百炼大模型客户端 
llm = ChatOpenAI(
    model="qwen-plus"
    base_url "https://dashscope_aliyunes_com/compatible-mode/v1",
    openai_api_key=load_key("BAILIAN_API_KEY"),
)

# 结果解析器 StrOutputParser会AIMessage 转换成为str,实际上就是获取AIMessage的content属性。
parser = StrOutputParser()
#构建链
chain = prompt_template |llm | parser

runnable = RunnableWithMessageHistory(
    chain,
    get_session_history = lambda: history, # 匿名函数,返回history
) # 返回的 key

# 第一次聊天,清除聊天记录
history.clear()

runnable.invoke({"text":"你是谁"})
# 之后每次聊天时,会自动带上Redis中的聊天记录。
runnable.invoke({"text":"请重复一次"})
posted @ 2026-07-21 13:32  leah-xx  阅读(7)  评论(0)    收藏  举报