了解Langchain的核心--Chain,掌握Chain的概念
Chains指的是将一系列的调用组装成序列--包括大语言模型(LLM),工具tool,还有数据预处理步骤的调用等等。目前最新的实现是通过LangChain Expression Language(LCEL)实现的Chains。

LCEL非常适合构建您自己的Chains,也有一些已经封装好的Chains也可以拿来就用。LangChain支持两种类型的现成的Chains:
[推荐] 使用LCEL构建的Chains。在这种情况下,LangChain提供了一个更高级别的构造器方法。然而,在底层所做的只是用LCEL构建一个Chain。
[遗留】通过从遗留的Chain类继承来构建的Chain。这些链在底层不使用LCEL,而是独立的类。
LangChain计划将所有Chains的LCEL版本创建出来。这样做有几个原因:
以这种方式构建的Chain很好,因为如果您想修改链的内部,您可以简单地修改LCEL。
这些Chain天生支持流式处理(stream)、异步(ainvoke)和批量处理(batch)。
这些Chain在每一步自动获得可观察性。langsmith
大模型生成笑话的示例,使用Chain改写依赖Chain的使用方式
import os
from dotenv import find_dotenv, load_dotenv
from langchain.prompts import PromptTemplate
from langchain_community.llms.tongyi import Tongyi
from langchain_core.output_parsers import JsonOutputParser, PydanticOutputParser # json格式的
from langchain_core.pydantic_v1 import BaseModel,Field, validator
from langchain.chains import LLMChain
# 通义获取api key
load_dotenv(find_dotenv())
DASHSCOPE_API_KEY = os.environ["DASHSCOPE_API_KEY"]
# 1.定义模型
model = Tongyi(model_name='qwen-max', model_kwargs={'temperature': 0.01})
# 定义期望的数据结构。
class Joke(BaseModel):
content: str = Field(description="笑话的内容")
reason: str = Field(description="为什么好笑")
# 2. 定义参数解析器。
output_parser = PydanticOutputParser(pydantic_object=Joke)
# 返回 内容指令 parser.get_format_instructions()
format_instructions = output_parser.get_format_instructions()
# 3.定义模板
prompt_tpl = PromptTemplate(
template="参考下面的格式,回答用户的问题.\n{format_instructions}\n{query}\n",
input_variables=["query"],
partial_variables={"format_instructions": format_instructions}, # 设置解析器并将指令注入到提示模板中。
)
# 3.定义个chain
# chain = LLMChain(prompt=prompt, llm=model, output_parser=parser) # 这种写法LangChai中的LLMChain类已弃用
chain = prompt_tpl | model | output_parser # chain表达式语言,社区推荐的方式
res = chain.invoke({
"query": "讲一个翠花进城里找小伙子的故事。",}
)
#print(res)
print(res.content)
print(res.reason)

end...
本文来自博客园,作者:王竹笙,转载请注明原文链接:https://www.cnblogs.com/edeny/p/18654857

浙公网安备 33010602011771号