怎么给网站做网页,做棋牌网站抓到会怎么量刑,百度推广托管,wordpress 游客3 LangChain Expression Language(LCEL)
LCEL是LangChain用于构建和编排AI工作流的声明式编程语言#xff0c;通过标准化接口简化了大型语言模型#xff08;LLM#xff09;应用的开发流程。LCEL的所有组件#xff08;模型、提示模板、解析器等#xff09;均实现Runnable接…3 LangChain Expression Language(LCEL)
LCEL是LangChain用于构建和编排AI工作流的声明式编程语言通过标准化接口简化了大型语言模型LLM应用的开发流程。LCEL的所有组件模型、提示模板、解析器等均实现Runnable接口,支持一致的调用方法invoke、stream、batch等。即Langchain提供了一个顶级父类Runnable只要是Runnable的子类都可以放入chain中。
声明式编程用户描述“做什么”而非“如何做”。
3.1 串行条构建
单个链条的构建
def qwen_single_chain():os.environ.setdefault(DASHSCOPE_API_KEY, load_key(DASHSCOPE_API_KEY))# 提示词模板from langchain_core.prompts import ChatPromptTemplateprompt_template ChatPromptTemplate.from_messages([(system, You are a helpful assistant that translates {input_language} to {output_language}.),(human, {text}),])# 模型调用llm ChatQwen(modelqwen-plus, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1)# 结果解析器from langchain_core.output_parsers import StrOutputParserparser StrOutputParser()# chain链chain prompt_template | llm | parserprint(chain.invoke({input_language: English, output_language: Chinese, text: I love programming.}))
------------------------------
我爱编程注意事项
串行链时| 与 RunnableSequence不能直接替换。
# 等价关系
chain prompt | llm | parser
# RunnableSequence本应等价于|但 | 操作符会自动插入许多组件、类型转化,所以会抛出异常: TypeError: Expected str, got PromptValue
chain RunnableSequence([prompt, llm, parser]) # 原因分析
# prompt_template 输出的是 PromptValue 类型
# llm 期望接收 str 类型需调用 .to_string() 转换
# RunnableSequence 不会自动插入类型转换步骤差异对比如下 3.2 并行链条构建
def qwen_parallel_chain():os.environ.setdefault(DASHSCOPE_API_KEY, load_key(DASHSCOPE_API_KEY))from langchain_core.prompts import ChatPromptTemplate# 模板1prompt_template_zh ChatPromptTemplate.from_messages([(system, You are a helpful assistant that translates English to Chinese.),(human, {text}),])# 模板2prompt_template_fr ChatPromptTemplate.from_messages([(system, You are a helpful assistant that translates English to French.),(human, {text}),])# 模型llm ChatQwen(modelqwen-plus, base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1)# 结果解析器from langchain_core.output_parsers import StrOutputParserparser StrOutputParser()# chain链chain_zh prompt_template_zh | llm | parserchain_fr prompt_template_fr | llm | parser# 并行执行两个链条RunnableMap RunnableParallel可以互相替换from langchain_core.runnables import RunnableMap, RunnableLambdaparallel_chains RunnableMap({Chinese: chain_zh,French: chain_fr})# 合并结果final_chain parallel_chains | RunnableLambda(lambda x: \n.join([f{k}: {v} for k, v in x.items()]))# 调用chainprint(final_chain.invoke({text: I love programming.}))3.3 查看图形化链条
# 利用langgraph产看图形化链条
final_chain.get_graph().print_ascii()