引言
在人工智能的发展中,语言模型(LLM)成为了一种强大的工具。而LangChain作为一种框架,通过组合语言模型和提示模板,为开发者提供了灵活的应用构建方式。本篇文章将带你走进LangChain世界,教你如何搭建一个简单的LLM应用,实现英语文本的多语言翻译。
主要内容
使用语言模型
LangChain支持多种语言模型,如OpenAI、Anthropic、Azure等。选择适合你的模型并进行设置:
import getpass
import os
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = getpass.getpass() # 输入你的API密钥
model = ChatOpenAI(model="gpt-4")
提示模板和输出解析器
通过提示模板(PromptTemplate),我们可以将用户输入转换为适合LLM的消息格式。输出解析器(OutputParser)则用于解析LLM的响应,使结果更易于使用。
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
('system', system_template),
('user', '{text}')
])
parser = StrOutputParser()
LCEL链组件
使用LangChain Expression Language(LCEL)可以将不同模块连接在一起,形成链式调用。
chain = prompt_template | model | parser
通过这种方式可以简化多步骤调用的管理。
部署应用
LangServe可以将应用部署为REST API,请先安装它:
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
app = FastAPI()
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
add_routes(app, chain, path="/chain")
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
运行后在http://localhost:8000可以访问你的API。
代码示例
以下是一个完整的代码示例,展示如何构建一个从英语翻译到意大利语的应用:
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
# 使用API代理服务提高访问稳定性
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
('system', system_template),
('user', '{text}')
])
model = ChatOpenAI(model="gpt-4")
parser = StrOutputParser()
chain = prompt_template | model | parser
result = chain.invoke({"language": "italian", "text": "hi"})
print(result) # 输出: 'ciao'
常见问题和解决方案
- API访问问题:由于网络限制,可以通过API代理服务提高访问稳定性。
- 输出解析失败:确保输出解析器与LLM的输出格式匹配。
总结和进一步学习资源
本文指导你通过LangChain快速搭建一个简单的LLM应用。更多详细的概念和高级用法可以参考以下资源:
参考资料
- LangChain官方文档
- FastAPI官方指南
- Python API调用最佳实践
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力! ---END---