在这篇快速入门教程中,我们将向您展示如何使用LangChain构建一个简单的LLM(大型语言模型)应用程序。这个应用程序的功能是将文本从英语翻译成其他语言,这是一个相对简单的LLM应用,只需一个LLM调用加上一些提示。但即使是这样,也不失为一个很好的入门LangChain的方法——通过一点提示和LLM调用可以构建很多的功能!
在阅读这篇教程后,您将对以下内容有一个高级别的概述:
- 使用语言模型
- 使用PromptTemplates和OutputParsers
- 使用LangChain表达语言(LCEL)来将组件链接在一起
- 使用LangSmith进行调试和跟踪您的应用
- 使用LangServe部署您的应用
让我们开始吧!
设置
Jupyter Notebook
本指南(以及文档中的大多数其他指南)使用Jupyter notebooks,也假设读者也使用它。Jupyter notebooks非常适合学习如何使用LLM系统,因为很多时候会出现问题(意外输出,API停机等),在交互式环境中浏览指南是更好理解它们的方法。
安装
要安装LangChain请运行:
pip install langchain
#或者使用Conda
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支持许多不同的可互换使用的语言模型——选择您想使用的模型即可!
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")
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage(content="Translate the following from English into Italian"),
HumanMessage(content="hi!"),
]
response = model.invoke(messages)
print(response.content) # 输出: 'ciao!'
OutputParsers
下面我们使用一个简单的输出解析器来提取模型返回的字符串响应。
from langchain_core.output_parsers import StrOutputParser
parser = StrOutputParser()
result = model.invoke(messages)
parsed_result = parser.invoke(result)
print(parsed_result) # 输出: 'Ciao!'
提示模板
提示模板用于将用户输入转换为可以传递给语言模型的消息列表。以下是如何创建一个提示模板的示例:
from langchain_core.prompts import ChatPromptTemplate
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{text}")]
)
result = prompt_template.invoke({"language": "italian", "text": "hi"})
print(result.to_messages()) # 输出消息列表
使用LCEL链接组件
我们可以使用管道(|
)操作符将提示模板、模型和输出解析器组合在一起:
chain = prompt_template | model | parser
final_result = chain.invoke({"language": "italian", "text": "hi"})
print(final_result) # 输出: 'ciao'
使用LangServe部署
pip install "langserve[all]"
创建一个serve.py
文件用于部署:
#!/usr/bin/env python
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/chain/playground/测试应用。
结论
通过阅读本文,您学习了如何创建一个简单的LLM应用,涵盖了使用语言模型、解析输出、创建提示模板、通过LCEL将它们链接、使用LangSmith观察链以及通过LangServe部署。要深入学习LangChain的更多功能,确保查看详细的概念指南和LangSmith文档。
如果遇到问题欢迎在评论区交流。
—END—