LCEL&LangSmith | Langchain实战课笔记

3 阅读2分钟

LCEL-LangChain Expression Language

  • LangChain Expression(LCEL) 是一种声明式表达方式,用于轻松组合多个步骤。
  • 设计用于将原型无代码变更地投入生产,从最简单的“提示+LLM'链到最复杂的链。
  • 流式支持、异步支持、优化的并行执行、重试和回退配置, 无缝的LangSmith追踪集成以及无缝的LangServe部署集成

代码实例

#导人所需的库
from langchain.prompts 
import PromptTemplate
from langchain.llms import OpenAI
from langchain.schema.output parser 
import StrOutputParser

prompt = PromptTemplate.from template("{flower}的花语是?")
model = OpenAI()
output_parser = StrOutputParser()
chain = prompt | model | output_parser
result = chain.invoke({"flower":"玫瑰"})
print(result)
  1. 用LCEL构造链
  2. 用invoke调用、执行链

Stream 流式调用

一边调用模型一边生成结果,即不需要等到完成整个链才输出结果。

#导人所需的库
from dotenv import load dotenv #用于加载环境变量load dotenv()#加载.env 文件中的环境变量
from langchain core.runnables import RunnablePassthrough
from langchain.chat models import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain_core.output parsers import StrOutputParser

prompt=ChatPromptTemplate.from template("告诉我关于{flower}的故事")
output_parser=StrOutputParser()
model=ChatOpenAI(model="gpt-3.5-turbo")
#用LCEL构造链
chain=({"flower": RunnablePassthrough()}
        | prompt #提示
        | model #模型
        | output parser #输出解析
       )
#执行链
for chunk in chain.stream(“百合花"):
    print(chunk, end=""",flush=True)

批量调用

一次性批量地运行链

# 执行链
result = chain.batch(["郁金香""梅花""食人花"])
print(result)

Logging&Tracing

  • 输出调用链的中间过程
  1. 在创建链的时候传入参数verbose=True

    chain = LLMChain(
        llm=model,
        prompt=prompt,
        output_parser=output_parser,
        verbose=True
        )    
    
  2. 通过全局的方式设置verbose参数

     from langchain.globals import set_verbose
     set_verbose=True
    

以上两种方式对于非LCEL有效

  1. global debug
    from langchain.globals import set_debug
    set_debug=True
    
    中间信息比较全,但有些细碎。

LangSmith

  • 测试评估(test&evalute)
  • 监视管理(monitor)
  • 调试(debug)

前置

官网注册账号

环境配置

  • 确保langchain版本升级到有支持的版本:0.2的都有

    pip install -U langchain

  • 设置环境变量

    • 使用的开关:LANGCHAIN_TRACING_V2=True
    • 必须的变量:
      • LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
      • LANGCHAIN_API_KEY(官方上注册账号获取API_KEY)
    • (可选)
      • 项目名称LANGCHAIN_PROJECT,如果不设置默认时在default项目下。

    也可以在python脚本用os.environ[xxxx]=设置,缺点是不够保护隐私。

使用

直接运行代码(环境变量配置完),在网站会记录trace等等。

hub里有一些可以调用的开源prompt等。