构建基于LangChain的翻译工具

在本文中,将学习如何利用LangChain的强大功能来创建一个从英文翻译到其他语言的基本应用程序。尽管这是一个简单的示例,但它为提供了对LangChain中一些关键概念和工作流程的基础理解。将使用LCEL(LangChain表达式语言)来构建这个LLM应用程序。

通过本文的学习,将更好地理解以下要点:

  • 使用语言模型:应用程序的核心是调用一个大型语言模型(LLM)来处理翻译,通过发送提示并接收响应。
  • 提示模板和输出解析器:提示模板为动态输入创建灵活的提示,而输出解析器确保LLM的响应格式正确。
  • LangChain表达式语言(LCEL):LCEL将创建提示、发送LLM和处理输出等步骤串联起来,实现更复杂的工作流程。
  • 使用LangSmith进行调试:LangSmith帮助监控性能,追踪数据流,并在应用程序扩展时调试组件。
  • 使用LangServe部署:LangServe允许将应用程序部署到云端,使其对其他用户可用。

以下是构建LCEL的LLM应用程序的步骤:

  1. 安装所需库

    !pip install langchain !pip install -qU langchain-openai !pip install fastapi !pip install uvicorn !pip install langserve[all]
  2. 设置OpenAI GPT-4模型进行翻译

    import getpass import os os.environ["OPENAI_API_KEY"] = getpass.getpass('Enter your OpenAI API Key:') from langchain_openai import ChatOpenAI model = ChatOpenAI(model="gpt-4")
  3. 使用模型进行英文到日文翻译

    from langchain_core.messages import HumanMessage, SystemMessage messages = [ SystemMessage(content="Translate the following from English into Japanese"), HumanMessage(content="I love programming in Python!"), ] response = model.invoke(messages) response.content
  4. 使用输出解析器

    from langchain_core.output_parsers import StrOutputParser parser = StrOutputParser() parsed_result = parser.invoke(response) parsed_result
  5. 将组件串联在一起

    chain = model | parser translated_text = chain.invoke(messages) translated_text
  6. 使用提示模板进行翻译

    from langchain_core.prompts import ChatPromptTemplate system_template = "Translate the following text into Japanese:" prompt_template = ChatPromptTemplate.from_messages([ ('system', system_template), ('user', '{text}') ]) result = prompt_template.invoke({"text": "I love programming in Python!"}) result.to_messages()
  7. 使用LCEL(LangChain表达式语言)进行串联

    chain = prompt_template | model | parser final_translation = chain.invoke({"text": "I love programming in Python!"}) final_translation
  8. 使用LangSmith进行调试

    os.environ["LANGCHAIN_TRACING_V2"] = "true" os.environ["LANGCHAIN_API_KEY"] = getpass.getpass('Enter your LangSmith API Key:')
  9. 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 import os os.environ["OPENAI_API_KEY"] = "Put your api here" model = ChatOpenAI() prompt_template = ChatPromptTemplate.from_messages([ ('system', system_template), ('user', '{text}') ]) parser = StrOutputParser() chain = prompt_template | model | parser app = FastAPI(title="LangChain English to Japanese Translation API", version="1.0") add_routes(app, chain, path="/chain")
  10. if __name__ == "__main__": import uvicorn uvicorn.run(app, host="localhost", port=8000)
  11. from langserve import RemoteRunnable remote_chain = RemoteRunnable("http://localhost:8000/chain/") translated_text = remote_chain.invoke({"text": "I love programming in Python!"}) print(translated_text)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485