使用LangChain搭建简单LLM应用:从文本翻译开始

126 阅读2分钟

引言

在人工智能的发展中,语言模型(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---