13-从零构建生产级Agent服务
从零构建生产级Agent服务
1、系统功能
-
使用FastAPI框架实现对外提供Agent智能体API后端接口服务
-
使用LangGraph中预置的ReAct架构的Agent
-
支持Short-term(短期记忆)并使用PostgreSQL进行持久化存储
-
支持Function Calling,包含自定义工具和MCP Server提供的工具
-
支持Human in the loop(HITL 人工审查)对工具调用提供人工审查功能,支持四种审查类型
-
支持多厂家大模型接口调用,OpenAI、阿里通义千问、本地开源大模型(Ollama)等
-
支持Redis存储用户会话状态,支持客户端的故障恢复和服务端的故障恢复
-
使用功能强大的rich库实现前端demo应用,与后端API接口服务联调
-
支持动态调整会话的过期时间
-
支持用户登录到系统后自动打开最近一次使用的会话,若无则新建会话
-
支持历史会话管理和历史会话恢复
-
支持修剪短期记忆中的聊天历史以满足上下文对token数量或消息数量的限制
-
支持读取和写入长期记忆(如用户偏好设置等)
-
支持异步模式调用Agent运行,支持并行(Celery是一个强大的异步任务队列/作业队列库),接口立即返回task_id
-
支持客户端随时通过task_id来查询服务端任务的状态与响应内容
2、核心业务流程
2.1 后端业务核心流程
-
docs/01_后端业务核心流程.pdf
-
docs/02_API接口和数据模型描述.pdf
2.2 前端业务核心流程
-
docs/03_前端业务核心流程.pdf
3、前期准备工作
3.1 集成开发环境搭建
-
anaconda提供python虚拟环境(Conda)
-
pycharm提供集成开发环境
3.2 大模型LLM服务接口调用方案
-
OpenAI等国外大模型使用方案
-
国内无法直接访问,可以使用代理的方式,具体代理方案自己选择
-
-
国内大模型采用厂商原生接口
-
本地开源大模型方案(Ollama方式)
4、项目初始化
4.1 安装项目依赖
# 创建项目虚拟环境 conda create -n ReActAgents python=3.11
# 安装项目依赖 pip install langgraph==0.4.5 pip install langchain==0.3.25 pip install langchain-openai==0.3.17 pip install langgraph-checkpoint-postgres==2.0.21 pip install rich==14.0.0 pip install fastapi==0.115.12 pip install redis==6.2.0 pip install concurrent-log-handler==0.9.28 pip install celery==5.5.3
[!CAUTION]
建议先使用要求的对应版本进行本项目测试,避免因版本升级造成的代码不兼容。测试通过后,可进行升级测试。
4.2 构建项目
使用PyCharm构建一个项目,为项目配置虚拟python环境 项目名称:ReActAgents
4.3 将课件代码拷贝到项目工程中
将下载的代码文件夹中的文件全部拷贝到新建的项目根目录下
5、功能测试
5.1 使用Docker方式运行PostgreSQL数据库和Redis数据库
-
进入官网 https://www.docker.com/ 下载安装Docker Desktop软件并安装,安装完成后打开软件
-
打开命令行终端,进入到docker/postgresql下执行 docker-compose up -d 运行PostgreSQL服务
-
进入到docker/redis下执行 docker-compose up -d 运行Redis服务
-
运行成功后可在Docker Desktop软件中进行管理操作或使用命令行操作或使用指令
-
使用数据库客户端软件远程登陆进行可视化操作,这里使用Navicat客户端软件和Redis-Insight客户端软件
5.2 测试 HITL 对工具请求进行人类反馈
-
进入 04_ReActAgentHITLApi 文件夹下运行脚本进行测试
-
运行后端服务
python 01_backendServer.py -
运行前端服务
python 02_frontendServer.py
使用python实现的一个模拟酒店预订的工具 book_hotel
-
其需传入的参数为:{hotel_name}
使用python实现的一个计算两个数的乘积的工具 multiply
-
其需传入的参数为:{a:float, b:float}
测试流程:
-
输入 'yes' 接受工具调用
调用工具预定如家酒店
-
输入 'no' 拒绝工具调用
调用工具预定桔子酒店
-
输入 'edit' 修改工具参数后调用工具
调用工具预定全季酒店
{"hotel_name": "全季酒店(软件园店)"}
-
输入 'response' 不调用工具直接反馈信息
调用工具预定汉庭酒店
把酒店名称换为:汉庭酒店(软件园店),再调用工具预定
5.3 测试 status、new、exit指令
-
status 查看会话状态,用于客户端故障恢复
-
new 新建会话
-
exit 退出当前会话
5.4 测试客户端和服务端故障恢复
客户端故障恢复:会话管理
-
用户ID(test2):上海天气如何?
-
强制关闭客户端(意外退出)
-
再次启动客户端,输入用户ID(test2),会话自动恢复到中断的状态
服务端故障恢复:LangGraph节点的状态恢复(checkpointer)
5.5 测试动态调整会话的过期时间
5.6 测试历史会话管理和历史会话恢复
5.7 测试异步模式调用Agent服务
-
进入
06_ReActAgentHILApiMultiSessionTask文件夹下运行脚本进行测试,支持多用户访问 -
首先运行
celery -A 01_backendServer.celery_app worker --loglevel=info启动 celery 服务 -
再运行后端服务
python 01_backendServer.py -
最后运行前端服务
python 02_frontendServer.py
6、扩展学习
国外大神讲解rag,agent,提示词工程,cicd的流水线
NirDiamant:https://github.com/NirDiamant

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)