AI Agent Service Toolkit:一站式大模型智能体开发套件
项目简介
该工具包基于LangGraph、FastAPI和Streamlit构建,提供了构建和运行大模型Agent的最小原子能力,包含LangGraph代理、FastAPI服务、用于与服务交互的客户端以及一个使用客户端提供聊天界面的Streamlit应用。用户可以利用该工具包提供的模板快速搭建基于LangGraph框架的智能体应用,简化部署和调试过程,快速验证效果。

功能特点
○ LangGraph代理:基于LangGraph框架的智能体工作流,可自由设置节点和中断处理。
○ FastAPI服务:提供API服务,包含流式和非流式。
○ 内容审核:实现LlamaGuard进行内容审核。
○ UI界面:基于Streamlit的聊天界面,简化交互流程。
○ 多代理支持:在服务中运行多个代理,并通过URL路径调用,支持在UI界面随时切换。
○ 异步设计:利用async/await高效处理并发请求。
○ Docker支持:包含Dockerfile和docker compose文件,方便开发和部署。
文件结构解析
○ src/agents/:定义具有不同功能的几个代理。
○ src/core/:包括LLM定义和其他设置。
○ src/service/service.py:基于FastAPI的流式和非流式服务。
○ src/client/client.py:封装的客户端,用于与代理服务API进行交互。
○ src/streamlit_app.py:基于Streamlit的聊天界面。
快速启动
1. 配置文件
在项目根目录下创建一个.env文件,并填入模型服务商的API KEY。
# 最少需要填入一个模型服务商的API—KEY
# API keys for different providers
OPENAI_API_KEY=
DEEPSEEK_API_KEY=
ANTHROPIC_API_KEY=
GOOGLE_API_KEY=
GROQ_API_KEY=
USE_AWS_BEDROCK=false# Use a fake model for testing
USE_FAKE_MODEL=false# Set a default model
DEFAULT_MODEL=# Web server configuration
HOST=0.0.0.0
PORT=8080# Authentication secret, HTTP bearer token header is required if set
AUTH_SECRET=# Langsmith configuration
LANGCHAIN_TRACING_V2=false
LANGCHAIN_PROJECT=default
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=# Application mode. If the value is "dev", it will enable uvicorn reload
MODE=# OpenWeatherMap API key
OPENWEATHERMAP_API_KEY=# Add for running ollama
# OLLAMA_MODEL=llama3.2
# Note: set OLLAMA_BASE_URL if running service in docker and ollama on bare metal
# OLLAMA_BASE_URL=http://host.docker.internal:11434# Agent URL: used in Streamlit app - if not set, defaults to http://{HOST}:{PORT}
# AGENT_URL=http://0.0.0.0:8080
2. 创建并启动虚拟环境
pip install uv
uv sync --frozen
source .venv/bin/activate
3. 启动agent服务
python src/run_service.py
4. 启动UI界面
source .venv/bin/activate
streamlit run src/streamlit_app.py
自定义agent
按照该项目的介绍,自定义agent需要如下两步:
- 在src/agents下新增自定义的agent模块。
- 将新增的agent导入src/agents/agents.py。
该项目默认提供了4种agent,其中的chatbot只能做简单的对话,因此笔者打算将其改造为智能问答阅读助手,可以用于解读上传的文件。
只需修改src/streamlit_app.py
# ... existing code ...# Config options
with st.sidebar:st.header(f"{APP_ICON} <相关文章:
AI Agent Service Toolkit:一站式大模型智能体开发套件
项目简介 该工具包基于LangGraph、FastAPI和Streamlit构建,提供了构建和运行大模型Agent的最小原子能力,包含LangGraph代理、FastAPI服务、用于与服务交互的客户端以及一个使用客户端提供聊天界面的Streamlit应用。用户可以利用该工具包提供的模板快速搭建基于LangGraph框架…...
大数据SQL调优专题——Hive执行原理
引入 Apache Hive 是基于Hadoop的数据仓库工具,它可以使用SQL来读取、写入和管理存在分布式文件系统中的海量数据。在Hive中,HQL默认转换成MapReduce程序运行到Yarn集群中,大大降低了非Java开发者数据分析的门槛,并且Hive提供命令…...
Python程序打包 |《Python基础教程》第18章笔记
《Python基础教程》第1章笔记👉https://blog.csdn.net/holeer/article/details/143052930 第18章 程序打包 程序可以发布后,你可能想先将它打包。如果程序只包含一个.py文件,这可能不是问题。然而,如果用户不是程序员࿰…...
图论 之 迪斯科特拉算法求解最短路径
文章目录 题目743.网络延迟时间3341.到达最后一个房间的最少时间I 求解最短路径的问题,分为使用BFS和使用迪斯科特拉算法,这两种算法求解的范围是有区别的 BFS适合求解,边的权值都是1的图中的最短路径的问题 图论 之 BFS迪斯科特拉算法适合求…...
掌握Spring开发_常用注解详解
1. 前言 1.1 写作目的 本文旨在全面解析Spring框架中常用的注解,帮助开发者更好地理解和使用这些注解,提高开发效率和代码质量。Spring框架提供了丰富的注解,简化了依赖注入、AOP、事务管理、Web开发等多个方面的开发工作。通过本文的学习,读者可以掌握这些注解的使用方法…...
华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)
文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下: 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件(Firmware࿰…...
Kubernetes的Ingress和Service有什么区别?
在Kubernetes中,Ingress和Service是两个不同的概念,它们在功能、作用范围、应用场景等方面存在明显区别,具体如下: 功能 Ingress:主要用于管理集群外部到内部服务的HTTP和HTTPS流量路由。它可以根据域名、路径等规则…...
洛谷B3619(B3620)
B3619 10 进制转 x 进制 - 洛谷 B3620 x 进制转 10 进制 - 洛谷 代码区: #include<algorithm> #include<iostream> #include<vector> using namespace std;int main(){int n,x;cin >> n >> x;vector<char> arry;while(n){if(…...
vue组件,父子通信,路由,异步请求后台接口,跨域
1.组件注册 1.1局部注册 局部注册组件---1.导入import 组件对象名 from 组件网页路径 export default{ name:"名称", data(){return {}}, created(){}, …...
详解分布式ID实践
引言 分布式ID,所谓的分布式ID,就是针对整个系统而言,任何时刻获取一个ID,无论系统处于何种情况,该值不会与之前产生的值重复,之后获取分布式ID时,也不会再获取到与其相同的值,它是…...
.NET + Vue3 的前后端项目在IIS的发布
目录 一、发布准备 1、安装 IIS 2、安装 Windows Hosting Bundle(.NET Core 托管捆绑包) 3、安装 IIS URL Rewrite 二、项目发布 1、后端项目发布 2、前端项目发布 3、将项目部署到 IIS中 三、网站配置 1、IP配置 2、防火墙配置 3、跨域配置…...
软件测试之压力测试
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&…...
矩阵-矩阵置零
矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为0 。请使用 原地 算法。在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter19-表单脚本
十九、表单脚本 表单脚本 JavaScript 较早的一个用途是承担一部分服务器端表单处理的责任。虽然 Web 和 JavaScript 都已经发展了很多年,但 Web 表单的变化不是很大。由于不能直接使用表单解决问题,因此开发者不得不使用JavaScript 既做表单验证…...
【C# 数据结构】队列 FIFO
目录 队列的概念FIFO (First-In, First-Out)Queue<T> 的工作原理:示例:解释: 小结: 环形队列1. **FIFO?**2. **环形缓冲队列如何实现FIFO?**关键概念: 3. **环形缓冲队列的工作过程**假设…...
论文笔记-WWWCompanion2024-LLM as Data Augmenters for Cold-Start Item Recommendation
论文笔记-WWW Companion 2024-Large Language Models as Data Augmenters for Cold-Start Item Recommendation 大语言模型作为冷启动项目推荐的数据增强器摘要1.引言2.前言3.LLMs作为数据增强3.1增强数据生成3.2成对比较损失 4.实验4.1实验设置4.2结果和分析4.3超参数实验 5.总…...
Java 语法新特性(Records、Pattern Matching、Sealed Classes)深度解析(11/17/21)✨
一、Records(Java 16) 📝 核心价值:简化不可变数据载体的定义 // 传统POJO vs Record public record User(String name, int age) {} // 自动生成:构造方法/equals()/hashCode()/toString() User user new User(&qu…...
QUdpSocket的readyRead信号只触发一次
问题 QUdpSocket的readyRead信号只触发一次。 原因 on_readyRead槽函数里必须读出现有数据后,才能触发新的事件。 解决办法 在on_readyRead槽函数里取出数据。 void MainWindow::on_readyRead() {qDebug() << "on_readyRead in";while (m_udp…...
jsherp importItemExcel接口存在SQL注入
一、漏洞简介 很多人说管伊佳ERP(原名:华夏ERP,英文名:jshERP)是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能,但后面将会推出ERP的全部功能,有兴趣请帮点一下 二、漏洞影响 …...
测试data_management函数
测试data_management函数 这是我最近正在开发的AI工具信息平台的部门功能模块测试,基于streamlit架构。整理出来与大家分享,也为我以后自己回溯找到资源。 为了测试 data_management 函数并结合 Excel 文件中的 “Tools” 表单内容,我们需要…...
Arduino U8g2库:从零构建精简中文字库的完整指南
1. 为什么需要定制中文字库? 很多开发者第一次接触Arduino的OLED显示时,会发现U8g2库已经内置了中文支持,直接调用现成的字体库就能显示汉字。但当你把代码烧录到ESP8266或ESP32这类资源受限的开发板上时,可能会遇到内存不足的报错…...
3步解决微信网页版访问限制:终极浏览器插件指南
3步解决微信网页版访问限制:终极浏览器插件指南 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 你可能会遇到这样的困境:在办公…...
面试真题集(八):多GPU编程与通信
引言 单卡优化是基础,多卡并行才是工业界常态。本专题精选20道面试真题,聚焦多GPU编程、NCCL通信、拓扑感知、分布式训练优化等核心内容,助你攻克多卡编程的难关。 一、选择题(6题) 1.1 关于多GPU编程,下列说法错误的是?(⭐⭐) A. 不同GPU的显存空间彼此独立,不能直…...
用FPGA驱动ADC128S022采集正弦波:一个完整的频谱分析项目实战(Verilog代码解析)
用FPGA驱动ADC128S022采集正弦波:一个完整的频谱分析项目实战(Verilog代码解析) 在工业测量和音频处理领域,实时采集模拟信号并进行频谱分析是常见需求。本文将手把手带您实现一个基于FPGA的完整信号采集系统,重点讲解…...
从若依RuoYi-Vue项目里“抠”出前端独立部署,保姆级分离实战教程
若依RuoYi-Vue项目前端独立部署实战:从一体化到模块化开发的深度拆解 在中小型团队的实际开发中,我们常常会遇到这样的困境:虽然采用了"前后端分离"的技术架构,但项目代码仍然耦合在一个仓库里,导致团队协作…...
Axure下拉复选框踩坑实录:为什么你的标签删不掉?中继器数据同步的3个关键点
Axure下拉复选框交互深度调试:中继器数据同步的实战解决方案 下拉复选框作为表单设计中的高频组件,其交互逻辑的完整性直接影响用户体验。许多Axure使用者在实现"选中标签显示-取消选中标签消失"的基础功能时,往往会在中继器数据同…...
Post-RFC部署实战:从本地开发到生产环境的完整指南
Post-RFC部署实战:从本地开发到生产环境的完整指南 【免费下载链接】post-rfc Blog post previews in need of peer review 项目地址: https://gitcode.com/gh_mirrors/po/post-rfc Post-RFC是一个专注于博客文章预览和同行评审的开源项目,通过本…...
PyTorch 2.8镜像代码实例:调用torch.compile加速ViT模型推理实测
PyTorch 2.8镜像代码实例:调用torch.compile加速ViT模型推理实测 1. 环境准备与快速验证 在开始之前,让我们先确认环境是否正常工作。这个PyTorch 2.8镜像已经预装了所有必要的深度学习组件,包括CUDA 12.4和cuDNN 8,专为RTX 409…...
清华PPT模板:3分钟打造专业学术汇报的终极方案
清华PPT模板:3分钟打造专业学术汇报的终极方案 【免费下载链接】THU-PPT-Theme 清华主题PPT模板 项目地址: https://gitcode.com/gh_mirrors/th/THU-PPT-Theme 还在为学术汇报的视觉呈现而烦恼吗?每次答辩或演讲前,你是否花费大量时间…...
5分钟搭建专属OCR服务:cv_resnet18_ocr-detection部署与使用详解
5分钟搭建专属OCR服务:cv_resnet18_ocr-detection部署与使用详解 1. 为什么选择cv_resnet18_ocr-detection 在日常工作和生活中,我们经常需要从图片中提取文字信息。无论是处理发票、识别证件,还是分析商品包装,传统的手动录入方…...
