Langchain实践指南:认识Langchain | 豆包MarsCode AI刷题
Langchain是大模型领域一个较为完善的外部工具链,目前正以一个星期一版的速度快速迭代LLM前沿最新的功能实现。从青训营的Langchain小册中,可以一窥Langchain的逻辑哲学。
本文将简要介绍Langchain一些基本api的使用。
Langchain的安装
参考Langchain官网的文档 Langchain,在Python3.12(推荐)环境下,可以通过pip安装:
pip install langchain
pip install langchain-openai
这将默认安装langchain_core等包,本文使用ChatOpenai,所以需要安装langchain-openai
考虑到V0.3版本的langchain使用了PydanticV2,许多旧api还没有完全更新,建议安装LangchainV0.2版本
pip install langchain == 0.2.16
Langchain的两个基本元素 ChatModel、Prompt
ChatModel 对话模型
ChatModel是Langchain最核心的一个部分,从字面意思上,就是大模型对象。它接受提示词,根据要求输出文本内容。
from langchain-openai import ChatOpenai
model = ChatOpenai(
base_url = <your_base_url>
model = <model_name>
api_key = <your_api_key>
)
base_url:即大模型api请求的endpoint。大部分大模型厂商都对Openai接口做了兼容,所以我们可以通过ChatOpenai对象复用客户端请求模型。需要注意的是它和系统变量中的OPENAI_API_BASE互通,所以两者只需要定义一次。
model: 模型的名称,不同厂商不同,在青训营中使用doubao-32k
。
api_key: 接口的密钥。
ChatModel有一个最简单的调用方式invoke(),这个方法可以通用Langchain多个对象。
text = model.invoke("你是谁")
print(text.content)
Prompt 提示词
从青训营的小册中可以看到,Langchain支持多种不同的提示词模板
这里选择一个最常用的提示词模板
from langchain_core.prompts import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)
# 模板的构建
template = "你是一位专业顾问,负责为专注于{product}的公司起名。"
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "公司主打产品是{product_detail}。"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
prompt_template = ChatPromptTemplate.from_messages(
[system_message_prompt, human_message_prompt]
)
构建链
Langchain可以通过多种方式组装提示词和语言模型,就好像搭积木。本文介绍一种LCEL(Langchain Expression Language)的方式
chain = prompt | model
如何运行?
如前文介绍,只需要一个简单的方法invoke()
为了构建完整的链,还需要引入输出解析。
from langchain_core.output_parsers import StrOutputParser
output_parser = StrOutputParser()
chain = prompt_template | model | output_parser
chain.invoke({"product": "鲜花装饰","product_detail": "创新的鲜花设计"})
总结
Langchain作为比较完善的LLM外部工具集合,已经成为LLM应用开发的一个重要标杆,还需要加紧学习,跟上AI的潮流。