启用 LangChain 开发构建小型项目
2023-12-13 08:15:08
启用 LangChain 开发构建小型项目:LangChain 老喻的干货店聊天Robot(二)
前言
上篇文章我们开发了老喻干货店 RAG 聊天机器人,这篇文章专门来聊聊部署。
LangChain 实战:老喻干货店社交网络 Agent 一使用的是 Flask MVC 框架做的 Web 服务器程序,这次我们改用 LangChain 自带的服务器部署。
部署
LangChain 自带的服务器部署非常简单,只需要三步:
- 安装 LangChain 服务器:
pip install langchain-server
- 创建 LangChain 项目:
langchain-server init my_project
- 启动 LangChain 服务器:
langchain-server start
这样,LangChain 服务器就启动成功了。
数据库
LangChain 使用 PostgreSQL 作为数据库,PostgreSQL 是一个开源的对象关系数据库管理系统(ORDBMS),以其可靠性和稳定性著称。
如果你的电脑上还没有安装 PostgreSQL,可以按照以下步骤安装:
- 下载 PostgreSQL 安装包:
https://www.postgresql.org/download/
- 安装 PostgreSQL:
双击安装包,按照提示安装即可。
- 创建 PostgreSQL 数据库:
createdb my_database
- 配置 LangChain 使用 PostgreSQL:
在 LangChain 项目的配置文件 config.py 中,找到以下配置项:
LANGCHAIN_DATABASE_URL = 'postgresql://postgres:my_password@localhost:5432/my_database'
将 LANGCHAIN_DATABASE_URL 的值修改为你自己的 PostgreSQL 数据库连接信息。
- 同步数据库结构:
langchain-server syncdb
这样,LangChain 就会使用 PostgreSQL 作为数据库了。
单元测试
LangChain 提供了单元测试框架,可以方便地对 LangChain 项目进行单元测试。
在 LangChain 项目中,创建一个 tests 目录,并在 tests 目录中创建一个 test_app.py 文件,在 test_app.py 文件中编写单元测试用例。
例如,以下单元测试用例测试了 LangChain 项目的 hello 函数:
import unittest
from app import hello
class TestApp(unittest.TestCase):
def test_hello(self):
result = hello('world')
self.assertEqual(result, 'Hello, world!')
if __name__ == '__main__':
unittest.main()
要运行单元测试用例,可以执行以下命令:
python -m unittest discover
CI/CD
LangChain 提供了 CI/CD 支持,可以方便地对 LangChain 项目进行持续集成和持续交付。
在 LangChain 项目中,创建一个 .github 目录,并在 .github 目录中创建一个 workflows 目录,在 workflows 目录中创建一个 main.yml 文件,在 main.yml 文件中编写 CI/CD 工作流。
例如,以下 CI/CD 工作流配置了单元测试和部署:
name: CI/CD
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: pip install -r requirements.txt
- run: python -m unittest discover
deploy:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v2
- run: langchain-server init
- run: langchain-server syncdb
- run: langchain-server start
要运行 CI/CD 工作流,可以将 LangChain 项目推送到 GitHub 仓库。
结语
以上就是 LangChain 开发构建小型项目的教程,希望对大家有所帮助。
LangChain 是一款非常棒的工具,它可以帮助我们轻松地构建各种各样的项目。