多模态AI聊天机器人

一个能够与文档、图像和视频交互的多模态AI助手,具备上下文感知响应、网页搜索集成和智能查询路由等功能。

  • by Kamoing98
  • 本地部署
  • 更新于
在 GitHub 查看 Kamoing98/jac-mcp-chatbot.

使用说明

构建一个基于人工智能的多模态MCP聊天机器人

这个项目展示了如何构建一个能够与文档、图片和视频进行交互的现代聊天机器人。通过利用Jac独特的编程范式,你将开发出一个具备高级功能的多模态人工智能助手。

特点/功能

  • 多模态交互与PDF文件、文本文件、图片和视频进行聊天。
  • 情境感知响应搜索文档并提供相关答案。
  • 网络搜索集成使用实时网络搜索回答一般问题。
  • **AI Vision(人工智能视觉)**理解并讨论图片和视频。
  • 智能查询路由自动将问题路由到专门的人工智能处理程序。

学习目标

  • **对象空间编程(OSP)**使用Jac的node-walker架构来组织你的应用程序。
  • **平均类型化编程(MTP)**启用人工智能自动分类和路由用户查询。
  • **模型上下文协议(MCP)**构建模块化、可重用的AI工具。
  • 多模态人工智能开发在一个应用程序中处理文本、图像和视频。

所用技术

  • Jac 语言核心应用逻辑。
  • **Jac Cloud(人名,可译为“雅克·克劳德”或根据具体语境保留原名)**后端服务器基础设施。
  • **Streamlit(注:这是一个专有名词,通常直接音译,不进行意译,表示一个用于创建数据应用的开源框架)**用户友好的网页界面。
  • **ChromaDB(注:此为一个假设或特定上下文中的名称,直接翻译为“色度数据库”或根据具体上下文可能有更贴切的译名,但在此仅提供直译)**文档搜索与存储。
  • OpenAI GPTAI聊天和视觉功能。
  • Serper API实时网页搜索。

项目结构

  • client.jac用于聊天和文件上传的网页界面。
  • server.jac使用对象空间编程的主要应用程序逻辑。
  • server.impl.jac实施细节如下: server.jac。
  • mcp_server.jac用于文档和网页搜索的工具服务器。
  • mcp_client.jac工具通信接口。
  • tools.jac文档处理和搜索逻辑。

安装说明

先决条件

  • Python 3.12 或更高版本。
  • OpenAI和Serper的API密钥。

安装

  1. 安装所需的软件包:

    pip install jaclang jac-cloud jac-streamlit byllm langchain langchain-community langchain-openai langchain-chroma chromadb openai pypdf tiktoken requests mcp[cli] anyio
    
  2. 设置环境变量:

    export OPENAI_API_KEY=<your-openai-key>
    export SERPER_API_KEY=<your-serper-key>
    

运行应用程序

  1. 启动工具服务器:

    jac run mcp_server.jac
    
  2. 启动主应用程序:

    jac serve server.jac
    
  3. 启动网页界面:

    jac streamlit client.jac
    

访问网页界面于 http://localhost:8501。

使用方法

  1. 注册并登录 使用网页界面。
  2. 上传文件PDF文件、文本文件、图片或视频。
  3. 开始聊天就您上传的内容或一般话题提出问题。

故障排除

  • 确保所有依赖项均已安装且兼容。
  • 验证API密钥是否设置正确。
  • 检查服务器日志中的错误。
  • 确保服务在其各自的端口上运行。

扩展聊天机器人功能

  • 添加对新文件类型的支持(例如,音频、电子表格)。
  • 集成更多工具(例如,天气API、数据库连接)。
  • 提升用于特定任务的人工智能模型。
  • 实现结合关键词搜索和语义搜索的混合搜索功能。
  • 为特定领域的查询创建自定义聊天节点。

API 端点

  • POST /user/register创建一个新用户账户。
  • POST /user/login登录并获取访问令牌。
  • POST /walker/upload_file上传文件(需要认证)。
  • POST /walker/interact与AI聊天(需要验证)。

访问 http://localhost:8000/docs 查看完整API文档。