使用说明
Jaclang聊天机器人
这个项目使用Jaclang实现了一个聊天机器人,充分利用了各种人工智能和自然语言处理(NLP)技术。
特点/功能
- 聊天路由对用户消息进行分类,并将其路由到相应的聊天处理程序(RAG、问答、图片、视频)。
- **RAG(检索增强生成)**使用了一个
RagEngine搜索文档并提供上下文感知的回复。 - **问答(Question Answering,简称QA)**处理一般的问答任务。
- 图片/视频聊天为未来的图像和视频处理功能预留的空间。
- MCP(模型上下文协议)集成连接到MCP服务器以执行工具(例如。,
search_docs,search_web)。 - Streamlit 前端提供一个基于网页的界面,用于与聊天机器人进行交互,包括文件上传功能。
- 文件上传支持上传PDF、TXT、图片和视频文件进行处理。
- 网络搜索与Serper API集成,以实现网页搜索功能。
设置
本地开发(不使用Docker)
-
克隆仓库:
git clone https://github.com/Brio97/Chatbot.git cd Chatbot -
安装依赖项:
pip install -r requirements.txt -
设置环境变量: 创建一个
.env在根目录中创建文件并添加以下内容:GEMINI_API_KEY=your_gemini_api_key SERPER_API_KEY=your_serper_api_key MCP_SERVER_URL=http://localhost:8899/mcp替换
your_gemini_api_key并且your_serper_api_key使用您实际的API密钥。 -
运行MCP服务器:
jac run mcp_server.jac -
运行Jaclang服务器:
jac run server.jac -
运行Streamlit前端:
streamlit run streamlit_app.py
Docker 部署
-
确保已安装Docker: 按照说明书上的指示操作 Docker 网站 安装 Docker Desktop。
-
设置环境变量: 创建一个
.env在根目录下创建文件(如果尚未创建)并添加您的API密钥:GEMINI_API_KEY=your_gemini_api_key SERPER_API_KEY=your_serper_api_key这个(或“该”)
docker-compose.yml会把这些捡起来。 -
构建并运行Docker容器: 从项目根目录运行:
docker compose up --build这个命令将:
- 构建
backend使用图像Dockerfile.backend。 - 构建
frontend使用图像Dockerfile.frontend。 - 启动两个服务,并在内部将它们连接起来。
- 构建
-
访问Streamlit前端: 一旦容器运行起来,打开你的浏览器到
http://localhost:8501。
项目结构
server.jac主要的Jaclang服务器逻辑,包括聊天路由和交互功能。client.jac用于Streamlit前端逻辑的Jaclang代码。streamlit_app.py用于运行 Streamlit 前端的 Python 脚本。mcp_client.jac用于与MCP服务器交互的Jaclang客户端。mcp_server.jac提供Jaclang MCP服务器search_docs和search_web工具。tools.jac包含RagEngine用于文档处理和WebSearch用于网页查询。requirements.txt列出所有Python依赖项。chroma/ChromaDB 嵌入向量的目录。uploads/上传文件的目录。
使用方法
本地开发
- 按照“本地开发”设置部分中的说明,启动所有三个组件(MCP服务器、Jaclang服务器、Streamlit前端)。
- 打开你的浏览器,访问Streamlit应用程序(通常
http://localhost:8501)。 - 通过输入消息或上传文件与聊天机器人互动。
Docker 部署
- 跑步之后
docker compose up --build打开您的浏览器到http://localhost:8501。 - 通过输入消息或上传文件与聊天机器人互动。
