【AI大模型应用开发】【LangChain系列】7. LangServe:轻松将你的LangChain程序部署成服务

慈云数据 2024-03-15 技术支持 55 0

大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。

LangServe 用于将 Chain 或者 Runnable 部署成一个 REST API 服务。

0. 安装

  • 同时安装langserve的服务端和客户端
    pip install "langserve[all]"
    
    • 只安装客户端
      pip install "langserve[client]"
      
      • 只安装服务端
        pip install "langserve[server]"
        

        1. 代码及运行结果

        1.1 服务端代码

        import os
        # 加载 .env 到环境变量
        from dotenv import load_dotenv, find_dotenv
        _ = load_dotenv(find_dotenv())
        #!/usr/bin/env python
        from fastapi import FastAPI
        from langchain.prompts import ChatPromptTemplate
        from langchain_openai import ChatOpenAI
        from langserve import add_routes
        import uvicorn
        app = FastAPI(
          title="LangChain Server",
          version="1.0",
          description="A simple api server using Langchain's Runnable interfaces",
        )
        prompt_template = """
        我的名字叫【{name}】,我的个人介绍是【{description}】。
        请根据我的名字和介绍,帮我想一段有吸引力的自我介绍的句子,以此来吸引读者关注和点赞我的账号。
        """
        model = ChatOpenAI()
        prompt = ChatPromptTemplate.from_template(prompt_template)
        add_routes(
            app,
            prompt | model,
            path="/self_introduction",
        )
        if __name__ == "__main__":
            uvicorn.run(app, host="localhost", port=9999)
        

        从代码来看创建LangServe的重点:

        (1)创建一个FastAPI实例:app

        (2)add_routes函数直接将app, chain, path加进去

        • path:访问路径(接口)

          (3)通过 uvicorn.run 跑起来

          注意上面的访问路径为/self_introduction,端口为9999,客户端要与之对应。

          运行之后:

          在这里插入图片描述

          补充知识:Uvicorn是什么?

          • 基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器
          • 它不是一个 Web 框架,而是一个服务器,这是 FastAPI 框架提供的东西
          • 它是 FastAPI 的推荐使用的服务器

            1.2 客户端代码

            import requests
            response = requests.post(
                "http://localhost:9999/self_introduction/invoke",
                json={'input': {'name': '同学小张', 'description': '热爱AI,持续学习,持续干货输出'}}
            )
            print(response.json())
            

            就是发送一个post请求,注意url路径和端口号与serve端对应。url路径除了接口后面还加一个invoke,别漏了。

            运行之后(请确保你的服务代码先运行起来):

            在这里插入图片描述

            大功告成。

            本文比较简单,通过一个例子带大家看了下LangServe的使用方法。它其实就是将LangChain程序制作成了一个 FastAPI 服务,方便部署和发布。重点在 add_routes 函数。

            如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~


            • 大家好,我是同学小张
            • 欢迎 点赞 + 关注 👏,促使我持续学习,持续干货输出。
            • +v: jasper_8017 一起交流💬,一起进步💪。
            • 微信公众号也可搜【同学小张】 🙏
            • 踩坑不易,感谢关注和围观

              本站文章一览:

              在这里插入图片描述

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon