LangChain 34: 一站式部署LLMs使用LangServe

2023-12-25 09:35:06

LangChain系列文章

  1. LangChain 实现给动物取名字
  2. LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字
  3. LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄
  4. LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve
  5. LangChain 5易速鲜花内部问答系统
  6. LangChain 6根据图片生成推广文案HuggingFace中的image-caption模型
  7. LangChain 7 文本模型TextLangChain和聊天模型ChatLangChain
  8. LangChain 8 模型Model I/O:输入提示、调用模型、解析输出
  9. LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt
  10. LangChain 10思维链Chain of Thought一步一步的思考 think step by step
  11. LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain
  12. LangChain 12调用模型HuggingFace中的Llama2和Google Flan t5
  13. LangChain 13输出解析Output Parsers 自动修复解析器
  14. LangChain 14 SequencialChain链接不同的组件
  15. LangChain 15根据问题自动路由Router Chain确定用户的意图
  16. LangChain 16 通过Memory记住历史对话的内容
  17. LangChain 17 LangSmith调试、测试、评估和监视基于任何LLM框架构建的链和智能代理
  18. LangChain 18 LangSmith监控评估Agent并创建对应的数据库
  19. LangChain 19 Agents Reason+Action自定义agent处理OpenAI的计算缺陷
  20. LangChain 20 Agents调用google搜索API搜索市场价格 Reason Action:在语言模型中协同推理和行动
  21. LangChain 21 Agents自问自答与搜索 Self-ask with search
  22. LangChain 22 LangServe用于一键部署LangChain应用程序
  23. LangChain 23 Agents中的Tools用于增强和扩展智能代理agent的功能
  24. LangChain 24 对本地文档的搜索RAG检索增强生成Retrieval-augmented generation
  25. LangChain 25: SQL Agent通过自然语言查询数据库sqlite
  26. LangChain 26: 回调函数callbacks打印prompt verbose调用
  27. LangChain 27 AI Agents角色扮演多轮对话解决问题CAMEL
  28. LangChain 28 BabyAGI编写旧金山的天气预报
  29. LangChain 29 调试Debugging 详细信息verbose
  30. LangChain 30 ChatGPT LLM将字符串作为输入并返回字符串Chat Model将消息列表作为输入并返回消息
  31. LangChain 31 模块复用Prompt templates 提示词模板
  32. LangChain 32 输出解析器Output parsers
  33. LangChain 33: LangChain表达语言LangChain Expression Language (LCEL)

在这里插入图片描述

现在我们已经建立了一个应用程序,我们需要提供服务。这就是LangServe的作用。LangServe帮助开发人员将LCEL链部署为REST API。该库与FastAPI集成,并使用pydantic进行数据验证。

1. Server服务器

为了为我们的应用程序创建一个服务器,我们将创建一个serve.py文件,其中包括三个内容:

  • 我们链的定义(与上面相同)
  • 我们的FastAPI应用程序
  • 一个用于提供链的路由的定义,使用langserve.add_routes完成
#!/usr/bin/env python
from typing import List

from fastapi import FastAPI
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain.schema import BaseOutputParser
from langserve import add_routes

# 1. Chain definition

class CommaSeparatedListOutputParser(BaseOutputParser[List[str]]):
    """Parse the output of an LLM call to a comma-separated list."""


    def parse(self, text: str) -> List[str]:
        """Parse the output of an LLM call."""
        return text.strip().split(", ")

template = """You are a helpful assistant who generates comma separated lists.
A user will pass in a category, and you should generate 5 objects in that category in a comma separated list.
ONLY return a comma separated list, and nothing more."""
human_template = "{text}"

chat_prompt = ChatPromptTemplate.from_messages([
    ("system", template),
    ("human", human_template),
])
category_chain = chat_prompt | ChatOpenAI() | CommaSeparatedListOutputParser()

# 2. App definition
app = FastAPI(
  title="LangChain Server",
  version="1.0",
  description="A simple API server using LangChain's Runnable interfaces",
)

# 3. Adding chain route
add_routes(
    app,
    category_chain,
    path="/category_chain",
)

if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="localhost", port=8000)

这就是!如果我们执行这个文件:

python Basic/serve.py  

在这里插入图片描述

我们应该在本地主机的8000端口看到我们的链被提供localhost:8000

2. Playground

每个LangServe服务都配有一个简单的内置UI,用于配置和调用具有流式输出和可见中间步骤的应用程序。前往 http://localhost:8000/category_chain/playground/一下吧!
在这里插入图片描述

3. Client

现在让我们为与我们的服务进行程序交互设置客户端。我们可以使用langserve.RemoteRunnable轻松实现这一点。使用它,我们可以像运行客户端一样与服务链进行交互。

from langserve import RemoteRunnable

remote_chain = RemoteRunnable("http://localhost:8000/category_chain/")
remote_chain.invoke({"text": "colors"})
# >> ['red', 'blue', 'green', 'yellow', 'orange']

要了解LangServe的其他许多功能,请点击这里

4. 下一步

我们已经讨论了如何使用LangChain构建应用程序,如何使用LangSmith跟踪它,以及如何使用LangServe提供服务。这三者中都有比我们在这里介绍的更多功能。要继续你的旅程:

代码

https://github.com/zgpeace/pets-name-langchain/tree/develop

参考

https://python.langchain.com/docs/get_started/quickstart

文章来源:https://blog.csdn.net/zgpeace/article/details/135178306
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。