聊天机器人服务

基于Jaclang的聊天机器人服务,提供聊天路由、检索增强生成、问答处理、文件上传和网页搜索等功能,适用于多种交互场景。

  • by Brio97
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Brio97/Chatbot

使用说明

Jaclang聊天机器人

这个项目使用Jaclang实现了一个聊天机器人,充分利用了各种人工智能和自然语言处理(NLP)技术。

特点/功能

  • 聊天路由对用户消息进行分类,并将其路由到相应的聊天处理程序(RAG、问答、图片、视频)。
  • **RAG(检索增强生成)**使用了一个 RagEngine 搜索文档并提供上下文感知的回复。
  • **问答(Question Answering,简称QA)**处理一般的问答任务。
  • 图片/视频聊天为未来的图像和视频处理功能预留的空间。
  • MCP(模型上下文协议)集成连接到MCP服务器以执行工具(例如。, search_docs, search_web)。
  • Streamlit 前端提供一个基于网页的界面,用于与聊天机器人进行交互,包括文件上传功能。
  • 文件上传支持上传PDF、TXT、图片和视频文件进行处理。
  • 网络搜索与Serper API集成,以实现网页搜索功能。

设置

本地开发(不使用Docker)

  1. 克隆仓库:

    git clone https://github.com/Brio97/Chatbot.git
    cd Chatbot
    
  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 设置环境变量: 创建一个 .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密钥。

  4. 运行MCP服务器:

    jac run mcp_server.jac
    
  5. 运行Jaclang服务器:

    jac run server.jac
    
  6. 运行Streamlit前端:

    streamlit run streamlit_app.py
    

Docker 部署

  1. 确保已安装Docker: 按照说明书上的指示操作 Docker 网站 安装 Docker Desktop。

  2. 设置环境变量: 创建一个 .env 在根目录下创建文件(如果尚未创建)并添加您的API密钥:

    GEMINI_API_KEY=your_gemini_api_key
    SERPER_API_KEY=your_serper_api_key
    

    这个(或“该”) docker-compose.yml 会把这些捡起来。

  3. 构建并运行Docker容器: 从项目根目录运行:

    docker compose up --build
    

    这个命令将:

    • 构建 backend 使用图像 Dockerfile.backend。
    • 构建 frontend 使用图像 Dockerfile.frontend。
    • 启动两个服务,并在内部将它们连接起来。
  4. 访问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/上传文件的目录。

使用方法

本地开发

  1. 按照“本地开发”设置部分中的说明,启动所有三个组件(MCP服务器、Jaclang服务器、Streamlit前端)。
  2. 打开你的浏览器,访问Streamlit应用程序(通常 http://localhost:8501)。
  3. 通过输入消息或上传文件与聊天机器人互动。

Docker 部署

  1. 跑步之后 docker compose up --build打开您的浏览器到 http://localhost:8501。
  2. 通过输入消息或上传文件与聊天机器人互动。