markdown
## 引言
在这篇文章中,我们将展示如何使用LangChain构建一个简单的语言模型(LLM)应用程序。这个应用程序的功能是将文本从英语翻译成其他语言。尽管应用程序的逻辑相对简单,但它能够帮助我们学习如何使用LangChain进行更多复杂的功能开发。
### 文章目的
通过阅读本教程,你将掌握以下内容:
- 如何使用语言模型
- 如何使用PromptTemplates和OutputParsers
- 如何使用LangChain Expression Language (LCEL)连接组件
- 如何使用LangSmith调试和跟踪应用程序
- 如何用LangServe部署应用程序
让我们开始吧!
## 主要内容
### 环境设置
#### Jupyter Notebook
本指南推荐在Jupyter Notebook中运行,便于交互式学习LLM系统。点击[这里](https://jupyter.org/install)获取安装说明。
#### 安装LangChain
通过以下命令安装LangChain:
```bash
pip install langchain
conda install langchain -c conda-forge
使用语言模型
首先,我们学习如何使用一个语言模型。LangChain支持多种模型,你可以根据需要选择。
OpenAI模型示例
bash
pip install -qU langchain-openai
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass() # 获取API密钥
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4")
调用模型
python
from langchain_core.messages import HumanMessage, SystemMessage
messages = [
SystemMessage(content="Translate the following from English into Italian"),
HumanMessage(content="hi!"),
]
model.invoke(messages) # 使用API代理服务提高访问稳定性
OutputParsers
为了提取模型的响应字符串,我们可以使用OutputParser。
python
from langchain_core.output_parsers import StrOutputParser
parser = StrOutputParser()
result = model.invoke(messages)
parser.invoke(result)
Prompt Templates
PromptTemplates用于将用户输入转换为可传递给模型的格式。
python
from langchain_core.prompts import ChatPromptTemplate
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages(
[("system", system_template), ("user", "{text}")]
)
LCEL连接组件
利用LCEL,我们可以将PromptTemplate、模型和OutputParser串联在一起。
python
chain = prompt_template | model | parser
chain.invoke({"language": "italian", "text": "hi"})
LangServe部署应用程序
创建一个名为serve.py
的文件,并添加以下代码以启动服务器:
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()
add_routes(app, chain, path="/chain")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
启动服务器:
bash
python serve.py
常见问题和解决方案
- API访问问题:如果在某些地区访问API困难,可以考虑使用代理服务。
- 调试问题:使用LangSmith可以更好地跟踪和调试应用程序。
总结和进一步学习资源
通过本教程,你已经学会了如何使用LangChain创建简单的LLM应用程序。要深入学习以下内容:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---