Langchain实践指南:认识Langchain | 豆包MarsCode AI刷题

713 阅读2分钟

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)

image.png

Prompt 提示词

从青训营的小册中可以看到,Langchain支持多种不同的提示词模板 image.png

这里选择一个最常用的提示词模板

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": "创新的鲜花设计"})

image.png

总结

Langchain作为比较完善的LLM外部工具集合,已经成为LLM应用开发的一个重要标杆,还需要加紧学习,跟上AI的潮流。

参考文献

LangChain 实战课 - 掘金小册 - 掘金小册

Langchain文档