老铁们,今天咱们来聊聊如何用LangChain快速构建一个简易的LLM(大语言模型)应用。这次的主题是通过一行代码加上一些提示来实现文本翻译。这种应用虽然简单,但也是上手LangChain的极好方式——很多强大的功能其实只需要一些提示和LLM调用就可以搞定!
看完这个教程,你将获得:
- 使用语言模型的高阶概念
- 运用PromptTemplates和OutputParsers的技巧
- 利用LangChain Expression Language (LCEL)联结组件
- 使用LangSmith进行应用调试和跟踪
- 使用LangServe部署你的应用
设置环境
Jupyter Notebook
这个指南适合在Jupyter Notebook中执行。毕竟,调试和学习LLM系统这种复杂的东东,互动式环境再合适不过啦!安装指南在这里
安装LangChain
通过以下命令安装LangChain:
pip install langchain
conda install langchain -c conda-forge
更多安装细节可以查看我们的安装指南。
LangSmith
LangChain应用往往会包含多步骤和多LLM调用。随着复杂度增加,洞察链内或代理内部的操作细节至关重要。LangSmith就是解决这问题的好帮手。
注册后,确保你的环境变量设置正确来开始日志跟踪:
export LANGCHAIN_TRACING_V2="true"
export LANGCHAIN_API_KEY="..."
在Notebook中可以这样设置:
import getpass
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass()
使用语言模型
首先,咱们来看怎样单独使用语言模型。LangChain支持多种语言模型,老铁们可以根据需要选择一个:
OpenAI、Anthropic、Azure、Google、Cohere等等。
安装OpenAI模型举例:
pip install -qU langchain-openai
代码如下:
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass()
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4")
通过调用模型,你可以传入一个消息列表给.invoke
方法。
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage(content="Translate the following from English into Italian"),
HumanMessage(content="hi!"),
]
result = model.invoke(messages)
OutputParsers
模型返回的是AIMessage
,里边不光是字符串,还有元数据。通常我们只需要处理字符串,这时就派上了StrOutputParser
的用场。
from langchain_core.output_parsers import StrOutputParser
parser = StrOutputParser()
result = parser.invoke(result)
Prompt Templates
我们往模型里传的消息列表通常来自用户输入和应用逻辑的组合。PromptTemplates
正是为此而生,可以把原始用户输入加工为可以传入模型的prompt。
创建PromptTemplate
实例:
from langchain_core.prompts import ChatPromptTemplate
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{text}")]
)
LCEL组件连结
通过管道符号|
将各个组件连在一起,实现优化的流和追踪支持。
chain = prompt_template | model | parser
result = chain.invoke({"language": "italian", "text": "hi"})
使用LangServe进行服务
最后一步就是部署应用。我们会创建一个Python文件,将应用逻辑放入并通过LangServe部署。
步骤如下:
pip install "langserve[all]"
创建serve.py
文件:
from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from langserve import add_routes
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
('system', system_template),
('user', '{text}')
])
model = ChatOpenAI()
parser = StrOutputParser()
chain = prompt_template | model | parser
app = FastAPI(
title="LangChain Server",
version="1.0",
description="A simple API server using LangChain's Runnable interfaces",
)
add_routes(app, chain, path="/chain")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
运行服务器:
python serve.py
通过访问http://localhost:8000即能看到你部署的服务啦!
小结
在这个教程中,我们构建了一个基础的LLM应用。通过语言模型、输出解析、提示模板,结合LCEL,得到了良好的可观察性,并用LangServe成功部署。老铁们,这只是成为AI工程师的开始,后续还有更多进阶内容等着你去探索!
今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~
—END—