# road **Repository Path**: estrell9/road ## Basic Information - **Project Name**: road - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-22 - **Last Updated**: 2026-03-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README <<<<<<< HEAD # RoadVision AI - 智慧道路系统 ## 项目介绍 RoadVision AI是一个智能道路监控和分析系统,利用计算机视觉和人工智能技术,实现对道路状况的实时监控、分析和预警。系统整合了多种先进技术,提供道路状况识别、交通流量分析、事故检测和安全预警等功能。 ## 核心功能 - **道路状况实时监控**:通过摄像头实时获取道路图像,识别道路状况 - **交通流量分析**:智能分析交通流量,预测潜在拥堵 - **事故检测与预警**:自动检测道路事故,及时发出预警 - **数据可视化**:直观展示道路状况和交通数据 - **智能决策支持**:提供基于数据的决策建议 ## MCP智能体系统 ### 什么是MCP? MCP(Multi-Agent Conversational Programming,多智能体对话编程)是一种创新的技术架构,通过多个专业智能体的协作,共同解决复杂问题。在RoadVision AI系统中,我们整合了LangChain和AutoGen等MCP框架,实现了一个强大的多智能体协作系统。 ### MCP系统架构 RoadVision AI的MCP系统由以下部分组成: 1. **基础智能体**:监控道路、分析数据、发出安全警报的专业智能体 2. **MCP增强智能体**:基于LangChain和AutoGen的高级智能体 3. **智能体管理器**:协调各智能体的协作与通信 4. **消息总线**:智能体间的通信机制 5. **Web API接口**:提供与外部系统的交互 ### 关键特性 - **多框架集成**:同时支持LangChain和AutoGen框架 - **智能协作**:智能体间的自动协作与任务分配 - **动态工作流**:支持顺序和并行的协作模式 - **可扩展性**:易于添加新的智能体和功能 - **自然语言交互**:通过自然语言与系统交互 ### 交互方式 用户可以通过以下方式与MCP系统交互: 1. **Web界面**:直观的用户界面,发送查询并查看结果 2. **API接口**:通过REST API进行程序化交互 3. **自然语言问答**:直接用自然语言提问并获取答案 ## 技术栈 - **前端**:Vue.js, Element UI - **后端**:Flask, SQLAlchemy - **数据库**:MySQL - **AI框架**:PyTorch, OpenCV, LangChain, AutoGen - **部署**:Docker, Nginx ## 安装与使用 ### 环境要求 - Python 3.8+ - Node.js 14+ - MySQL 5.7+ ### 安装步骤 1. 克隆代码库: ```bash git clone https://github.com/yourusername/RoadVision-AI.git cd RoadVision-AI ``` 2. 安装后端依赖: ```bash pip install -r requirements.txt ``` 3. 安装前端依赖: ```bash cd frontend npm install ``` 4. 配置数据库: ```bash python manage.py db init python manage.py db migrate python manage.py db upgrade ``` 5. 配置MCP系统: - 编辑`RoadVisionAI/mcp_config.yaml`,设置API密钥和框架配置 6. 启动服务: ```bash # 启动后端服务 python app.py # 启动前端开发服务器 cd frontend npm run serve ``` ### 使用MCP智能体 1. 通过API调用MCP智能体: ```python import requests response = requests.post("http://localhost:5000/api/agent/mcp/query", json={ "agent_id": "langchain_road_agent", "query": "西湖大道当前的交通状况如何?", "context": { "road_name": "西湖大道" } }) print(response.json()) ``` 2. 使用综合问答接口: ```python response = requests.post("http://localhost:5000/api/agent/qa/ask", json={ "question": "预测明天早高峰西湖大道的交通状况", "context": { "road_name": "西湖大道", "time": "早高峰" } }) print(response.json()) ``` ## 开发扩展 ### 添加新的智能体 1. 在`RoadVisionAI/agents/`目录下创建新的智能体类 2. 在`RoadVisionAI/mcp_config.yaml`中添加智能体配置 3. 在智能体管理器中注册新智能体 ### 创建新的工作流 1. 在`RoadVisionAI/mcp_config.yaml`的`collaboration.workflows`部分添加新工作流 2. 指定参与的智能体和执行模式 ## 贡献指南 我们欢迎社区贡献!如果您想参与项目开发,请: 1. Fork项目仓库 2. 创建您的特性分支: `git checkout -b feature/amazing-feature` 3. 提交您的更改: `git commit -m 'Add some amazing feature'` 4. 推送到分支: `git push origin feature/amazing-feature` 5. 提交Pull Request ## 许可证 本项目采用MIT许可证 - 详情请查看[LICENSE](LICENSE)文件 ======= >>>>>>> b282f7c4e3fce1686b050acea460a5789d69f012 ## 项目描述 [IofTV-Screen](https://gitee.com/daidaibg/IofTV-Screen/tree/main) 的 Vue3+vite版本, ### 与vue2版本对比 #### 功能 功能采用与vue2版本相同功能 因为要与vue2版本相同功能,有些组件不兼容vue3版本,例如:胶囊柱图,数字滚动皆重新封装为组件,整体来说,功能属实相同。根据自己需求选择[vue2](#vue2版本地址)版本与[vue3](#本项目地址 vue3+vite)版本 #### 样式 进行微调,整体看着更加美观 - 项目需要全屏展示(按 F11)。 - 项目部分区域使用了全局注册方式,增加了打包体积,在实际运用中请使用 **按需引入**。 - 项目环境:Vite、Echarts、Npm、Node,axios,mock,vue3。 - 请拉取 master 分支的代码,其余分支是开发分支。 - 在项目public目录下存放地图数据合集,根据地市编存放。 友情链接: 1. [Vue 官方文档](https://cn.vuejs.org/) 3. [echarts 实例](https://gitee.com/link?target=https%3A%2F%2Fecharts.apache.org%2Fexamples%2Fzh%2Findex.html),[echarts API 文档](https://gitee.com/link?target=https%3A%2F%2Fecharts.apache.org%2Fzh%2Fapi.html%23echarts) 4. [mock.js官网](http://mockjs.com/examples.html) 5. [axios官网](https://axios-http.com/) **项目展示** ![项目展示](https://www.daidaibg.com/bigscreen/a-img/home.png) ### 项目预览地址 [https://www.daidaibg.com/bigscreen-vue3](https://www.daidaibg.com/bigscreen-vue3) ### 项目仓库地址 #### 本项目地址 vue3+vite **github地址** [https://github.com/daidaibg/IofTV-Screen-Vue3](https://github.com/daidaibg/IofTV-Screen-Vue3) **Gitee地址** [https://gitee.com/daidaibg/IofTV-Screen-Vue3](https://gitee.com/daidaibg/IofTV-Screen-Vue3) #### vue2版本地址 **github地址** [https://github.com/daidaibg/IofTV-Screen](https://github.com/daidaibg/IofTV-Screen) **Gitee地址** [https://gitee.com/daidaibg/IofTV-Screen](https://gitee.com/daidaibg/IofTV-Screen) ### 采用自适应组件方式, ### 滚动设置,自适应设置 项目中可以进行滚动配置,内容是否滚动 点击右上角设置按钮 ![设置](https://www.daidaibg.com/bigscreen/a-img/setting.png) 可以进行以下配置,可以自行代码中进行修改或增加配置 ![在这里插入图片描述](https://www.daidaibg.com/bigscreen/a-img/setting2.png) ## 2、主要文件介绍 | 文件 | 作用/功能 | | ----------------- | ------------------------------------------------------------ | | main.js | 主目录文件,引入 Echart/DataV 等文件 | | utils | 工具函数与 mixins 函数等 | | views/ home.vue | 项目主结构 | | views/其余文件 | 界面各个区域组件(按照位置来命名) | | assets | 静态资源目录,放置 logo 与背景图片 | | assets / css/ | 通用 CSS 文件,全局项目快捷样式调节 | | components/echart | 所有 echart 图表(按照位置来命名) | | common/... | 全局封装的 ECharts 和 flexible 插件代码(适配屏幕尺寸,可定制化修改) | | api/api.js | 接口封装文件 | | mock | 模拟数据接口地址 | ### ## 使用介绍 ### 安装 ```npm npm install ``` ### 启动 ```npm npm run dev ``` ### 取消mock模拟数据 ```javascript // src\main.ts文件 把下面两行代码注释掉就可以了。 import { mockXHR } from "@/mock/index"; mockXHR() ``` ## ## 公用组件 封装了除面条外个别用到的组件 ### 自适应缩放组件 #### 注意 采用Scale方式,会自动给组件父元素添加overflow:hidden #### 使用 ```vue ``` #### API | 属性 | 说明 | 类型 | 默认值 | | ------------ | ------------------------------------------------------------ | -------------------------------- | ------ | | selfAdaption | 是否进行自适应 | Boolean | true | | width | 大屏宽度 | `Number` or `String` | 1920 | | height | 大屏高度 | `Number` or `String` | 1080 | | autoScale | 自适应配置,配置为boolean类型时,为启动或者关闭自适应,配置为对象时,若x为true,x轴产生边距,y为true时,y轴产生边距,启用fullScreen时此配置失效 | Boolean or {x:boolean,y:boolean} | true | | delay | 窗口变化防抖延迟时间 | Number | 500 | | fullScreen | 全屏自适应,启用此配置项时会存在拉伸效果,同时autoScale失效,非必要情况下不建议开启 | Boolean | false | | boxStyle | 修改容器样式,如居中展示时侧边背景色,符合Vue双向绑定style标准格式 | Object | null | | wrapperStyle | 修改自适应区域样式,符合Vue双向绑定style标准格式 | Object | null | ### 外边框 因为我的项目外边框几乎一样,还有title,所以封装了此组件。 根据自己需求更改,更换外边框(src\components\item-wrap\item-wrap.vue)下更换。 ```vue
我是谁?
``` | 参数 | 描述 | 默认值 | 类型 | 可选值 | | :---: | :--: | :----: | :----: | :----: | | title | 标头 | - | string | - | ### CountUp 数字滚动 以下属性同 coutup.js 配置项(same as countup.js properties) #### Props | Name | Type | Default | Description | | -------- | ---------------- | ------- | ------------------------------------------------------------ | | endVal | Number \| String | - | 结束值 | | startVal | Number \| String | 0 | 起始值 | | duration | Number | 2.5 | 动画时长,单位:秒 | | options | Object | - | [countUp.js](https://github.com/inorganik/countUp.js) options 配置项 | 以下为组件特有属性(extension properties) | Name | Type | Default | Description | | -------- | ----------------- | ------- | ----------------------------- | | autoplay | Boolean | true | 是否自动计数 | | loop | Boolean \| Number | false | 循环次数,有限次数 / 无限循环 | | delay | Number | 0 | loop 循环的间隔时间,单位:秒 | #### 插槽(slots) | Name | Description | | ------ | ----------- | | prefix | 前缀 | | suffix | 后缀 | #### 事件(Events) | Name | Description | return | | --------- | -------------------------- | ------------ | | @init | CountUp 实例初始化完成触发 | CountUp 实例 | | @finished | 计数结束时触发 | - | #### countup.js 配置项说明 ```ts interface CountUpOptions { startVal?: number // number to start at (0) 开始数值,默认 0 decimalPlaces?: number // number of decimal places (0) 小数点 位数 duration?: number // animation duration in seconds (2) 动画时长 useGrouping?: boolean // example: 1,000 vs 1000 (true) 是否使用千分位 useEasing?: boolean // ease animation (true) 是否开启动画过渡,默认动画函数为easeOutExpo smartEasingThreshold?: number // smooth easing for large numbers above this if useEasing (999) smartEasingAmount?: number // amount to be eased for numbers above threshold (333) separator?: string // grouping separator (',') 千分位分隔符 decimal?: string // decimal ('.') 小数点分隔符 // easingFn: easing function for animation (easeOutExpo) 动画函数 easingFn?: (t: number, b: number, c: number, d: number) => number formattingFn?: (n: number) => string // this function formats result 格式化结果 prefix?: string // text prepended to result 数值前缀 suffix?: string // text appended to result 数值后缀 numerals?: string[] // numeral glyph substitution 数字符号替换 0 - 9,例如替换为 [a,b,c,d,e,f,g,h,i,j] enableScrollSpy?: boolean // start animation when target is in view 在可视范围内才开始动画 scrollSpyDelay?: number // delay (ms) after target comes into view 目标进入可视范围内后的延迟时间(毫秒) } ``` ### 胶囊柱图 #### Props | 属性 | 说明 | 类型 | 可选值 | 默认值 | | :----: | :------: | :-------------: | :-----------------------: | :-----: | | data | 柱数据 | `Array` | [data属性](#data属性) | `[]` | | config | 基础配置 | Object | [config属性](#config属性) | `false` | #### config属性 | 属性 | 说明 | 类型 | 可选值 | 默认值 | | :-------: | :------: | :-------------: | :----: | :-----: | | unit | 单位 | `String` | --- | `''` | | colors | 环颜色 | `Array` | [1] | [2] | | showValue | 显示数值 | `Boolean` | --- | `false` | #### 注释config注释 [1] 颜色支持`hex|rgb|rgba|颜色关键字`等四种类型。 [2] 默认配色为`['#37a2da', '#32c5e9', '#67e0e3', '#9fe6b8', '#ffdb5c', '#ff9f7f', '#fb7293']`。 #### data属性 | 属性 | 说明 | 类型 | 可选值 | 默认值 | | :---: | :------: | :------: | :----: | :----: | | name | 柱名称 | `String` | --- | --- | | value | 柱对应值 | `Number` | --- | --- | ### 无缝轮播组件 看此文档 优化次源码 [https://doc.wssio.com/opensource/vue3-seamless-scroll/](https://doc.wssio.com/opensource/vue3-seamless-scroll/) ## 中间地图 ### 南海显隐控制 根据需求来,**修改此值请刷新页面** ```indexs/center-map.vue``` 文件中```isSouthChinaSea```变量 默认不显示南海(false),为```true```的时候显示南海 ``` isSouthChinaSea:false,//默认不显示南海,改为true可显示南海 ``` ## 大屏交流反馈(面条的群) ### 大屏QQ群 QQ群号: 一群:713105837 (已满) 二群:495755841 <<<<<<< HEAD # RoadVision AI 智能体系统 - 本地LLM配置指南 ## 目录 - [介绍](#介绍) - [为什么需要本地LLM](#为什么需要本地llm) - [系统要求](#系统要求) - [步骤1:部署本地LLM服务](#步骤1部署本地llm服务) - [步骤2:配置RoadVision AI使用本地LLM](#步骤2配置roadvision-ai使用本地llm) - [步骤3:启动和测试](#步骤3启动和测试) - [常见问题](#常见问题) - [参考资料](#参考资料) ## 介绍 RoadVision AI 智能体系统原本设计使用OpenAI API,但考虑到API密钥可能无法获取或使用费用高昂的问题,我们支持使用开源的本地大语言模型(LLM)作为替代方案。本指南将详细介绍如何配置和使用本地LLM。 ## 为什么需要本地LLM - **无需API密钥**:不需要OpenAI账号和API密钥 - **降低成本**:无需支付API调用费用 - **更好的隐私**:数据不会发送到外部服务器 - **更高的自由度**:可以选择和调整适合需求的开源模型 - **离线使用**:不依赖网络连接,可在本地环境运行 ## 系统要求 - **硬件要求**: - 最低配置:8GB RAM,CUDA兼容GPU(至少4GB显存) - 推荐配置:16GB+ RAM,CUDA兼容GPU(至少8GB显存) - **软件要求**: - Python 3.9+ - CUDA 11.6+(对于GPU加速) - Docker(可选,用于容器化部署) ## 步骤1:部署本地LLM服务 我们推荐使用[api-for-open-llm](https://github.com/xusenlinzy/api-for-open-llm)项目,它提供了OpenAI API兼容的接口,支持多种开源大语言模型。 ### 1.1 使用Docker部署(推荐) 安装Docker后,运行以下命令: ```bash # 拉取镜像 docker pull xusenlin/api-for-open-llm:latest # 启动ChatGLM3-6B模型(适用于大多数场景) docker run -d -p 8000:8000 \ --name local-llm \ -e MODEL_NAME=chatglm3 \ -e PROMPT_NAME=chatglm3 \ -e DTYPE=float16 \ xusenlin/api-for-open-llm:latest ``` ### 1.2 手动部署 如果您希望手动部署,请按照以下步骤操作: ```bash # 克隆仓库 git clone https://github.com/xusenlinzy/api-for-open-llm.git cd api-for-open-llm # 安装依赖 pip install -r requirements.txt # 启动服务(ChatGLM3-6B模型) MODEL_NAME=chatglm3 PROMPT_NAME=chatglm3 python main.py ``` ### 1.3 验证服务 在浏览器中访问`http://localhost:8000/docs`,如果显示了Swagger文档界面,说明服务已成功启动。 ## 步骤2:配置RoadVision AI使用本地LLM 配置`RoadVisionAI/mcp_config.yaml`文件,将后端类型设置为`local`,并指定本地LLM服务地址和模型名称: ```yaml # 通用设置 general: # API密钥设置 api_keys: openai: "" # 无需填写 # 后端配置 backend: type: "local" # 使用本地LLM local_url: "http://localhost:8000/v1" # 本地LLM服务地址 local_model: "chatglm3" # 本地模型名称 # 默认使用的大模型 default_model: "local" ``` 对所有智能体配置,确保使用`local`作为模型名称: ```yaml # LangChain框架配置 langchain: models: default: "local" advanced: "local" agents: - id: "langchain_road_agent" # ... model: "local" ``` ## 步骤3:启动和测试 ### 3.1 启动服务 ```bash # 启动RoadVision AI系统 cd RoadVisionAI python app.py ``` ### 3.2 测试本地LLM 使用curl或Postman向API发送请求: ```bash curl -X POST http://localhost:5000/api/agent/query \ -H "Content-Type: application/json" \ -d '{ "query": "西湖大道当前的交通状况如何?", "context": {"location": "杭州"} }' ``` 如果返回了正常的响应结果,说明本地LLM集成成功。 ### 3.3 使用工作流 您也可以通过工作流API使用本地LLM: ```bash curl -X POST http://localhost:5000/api/agent/workflow/execute \ -H "Content-Type: application/json" \ -d '{ "workflow": "traffic_analysis", "input": { "road_id": "rd10001", "forecast_hours": 2 } }' ``` ## 常见问题 ### 模型加载很慢或内存不足 - 尝试使用更小的模型,如ChatGLM3-6B-base - 增加系统内存或使用显存更大的GPU - 使用int8或int4量化模型来减少内存使用 ### 服务返回错误 - 检查本地LLM服务是否正常运行(访问`http://localhost:8000/docs`) - 检查`mcp_config.yaml`中的`local_url`和`local_model`配置 - 查看日志文件中的详细错误信息 ### 响应质量较差 - 尝试调整温度参数(temperature),降低可获得更确定性的回答 - 使用更大或性能更好的模型,如Qwen-14B或Baichuan2-13B - 改进提示词工程,提供更详细的上下文 ## 参考资料 - [api-for-open-llm 文档](https://github.com/xusenlinzy/api-for-open-llm) - [常见开源大语言模型列表](https://github.com/eugeneyan/open-llms) - [提示词工程指南](https://platform.openai.com/docs/guides/prompt-engineering) - [LangChain 文档](https://python.langchain.com/docs/get_started/introduction.html) - [AutoGen 文档](https://microsoft.github.io/autogen/) ======= >>>>>>> b282f7c4e3fce1686b050acea460a5789d69f012