智能工具生成与聊天服务器

Guruji是一个MCP服务器,能够根据需求生成工具,并提供一个具有记忆功能的复杂聊天机器人,可以调用工具以提高性能。

  • by NoObMaster69000
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 NoObMaster69000/Guruji

使用说明

Guruji 翻译成中文是“导师”或“大师”。这个称呼通常用于表示对某位老师、导师或精神领袖的尊敬,强调其在知识、智慧或道德方面的权威地位

Guruji是一个MCP服务器,它能够根据您的需求生成工具,并且是一个功能强大的聊天机器人,具备记忆功能,能够发起聊天并调用工具以提升性能

数据库

这个项目使用SQLAlchemy和Alembic来管理数据库。数据库是一个名为(此处应接具体文件名,但原文未给出)的SQLite数据库文件 guruji.db 位于 backend 目录。

数据库迁移

要在项目根目录下初始化数据库并应用迁移,请运行以下命令:

  1. 初始化数据库(仅限首次):

    cd backend
    alembic upgrade head
    
  2. 在更改模型后,生成一个新的迁移文件:

    cd backend
    alembic revision --autogenerate -m "A descriptive message for the migration"
    
  3. 应用新的迁移方案:

    cd backend
    alembic upgrade head
    

后端API

后端是一个FastAPI应用程序,提供了一组用于管理聊天会话、工具、知识库和数据库连接的API。

运行后端服务器

要运行后端服务器,请导航至 backend 进入目录并运行以下命令:

uvicorn main:app --reload

服务器将在 http://localhost:8000。

后端架构

后端已经重构,采用SQLite数据库并通过SQLAlchemy实现数据持久化。与之前的内存存储相比,这提供了一个更稳健且可扩展的解决方案。

关键组件:

  • **database.py**这个文件用于设置SQLAlchemy引擎、会话工厂以及ORM模型的声明式基类。
  • **sql_models.py**此文件包含所有中心(知识库、工具、数据库、提示)的SQLAlchemy对象关系映射(ORM)模型。这些模型定义了数据库架构。
  • **models.py**此文件包含用于API请求和响应验证的Pydantic模型。这些模型现已配置为与SQLAlchemy ORM模型协同工作。
  • **main.py**这是主要的FastAPI应用程序文件。所有CRUD(创建、读取、更新、删除)端点都已重构,以使用新的数据库会话和ORM模型来与数据库进行交互。
  • **蒸馏器(或蒸馏装置)**该项目现在使用Alembic进行数据库迁移。迁移脚本位于 backend/alembic/versions 目录。

知识库中心

知识库中心允许您管理聊天代理可使用的知识库。

终点:

  • **POST /kb/create**创建一个新的知识库。

    • 请求体: KnowledgeBaseRequest 模型。
    • 示例:
      curl -X POST http://localhost:8000/kb/create \
      -H "Content-Type: application/json" \
      -d '{
        "kb_name": "My KB",
        "vector_store": "ChromaDB",
        "allowed_file_types": [".pdf", ".txt"],
        "parsing_library": "PyPDF",
        "chunking_strategy": "fixed-size",
        "chunk_size": 512,
        "chunk_overlap": 64,
        "metadata_strategy": "basic"
      }'
      
  • **GET /kb/list**列出所有可用的知识库。

  • **GET /kb/{kb_id}**通过其ID检索单个知识库。

  • **PUT /kb/{kb_id}**更新现有的知识库。

    • 请求体: KnowledgeBaseRequest 模型。
  • **DELETE /kb/{kb_id}**删除知识库。

工具中心

工具中心允许您创建、管理和使用自定义工具。

终点:

  • **POST /tools/create**创建一个新的自定义工具。

    • 请求体: CustomToolCreate 模型。
    • 示例:
      curl -X POST http://localhost:8000/tools/create \
      -H "Content-Type: application/json" \
      -d '{
        "name": "my_adder",
        "description": "A simple tool that adds two numbers.",
        "code": "def my_adder(a: int, b: int) -> int: return a + b"
      }'
      
  • **GET /tools**列出所有可用工具(默认工具和自定义工具)。

  • **GET /tools/{tool_id}**通过ID检索一个自定义工具。

  • **PUT /tools/{tool_id}**更新现有的自定义工具。

    • 请求体: CustomToolCreate 模型。
  • **DELETE /tools/{tool_id}**删除自定义工具。

Prompt Hub(可译为“提示集/指令中心”,具体根据上下文选择更贴切的表述)

Prompt Hub 允许您管理可在聊天中使用的提示。

终点(或结果指标):

  • **POST /prompts/create**创建一个新的提示。

    • 请求体: PromptCreate 模型。
    • 示例:
      curl -X POST http://localhost:8000/prompts/create \
      -H "Content-Type: application/json" \
      -d '{
        "name": "My Prompt",
        "text": "This is my custom prompt."
      }'
      
  • **GET /prompts/list**列出所有可用的提示。

  • **GET /prompts/{prompt_id}**通过ID获取单个提示。

  • **PUT /prompts/{prompt_id}**更新现有的提示。

    • 请求体: PromptCreate 模型。
  • **DELETE /prompts/{prompt_id}**删除一个提示。

数据库中心

数据库中心允许您管理数据库连接配置。

终点(或结果指标):

  • **POST /databases/create**创建一个新的数据库连接。

    • 请求体: DatabaseConnectionCreate 模型。
    • 示例:
      curl -X POST http://localhost:8000/databases/create \
      -H "Content-Type: application/json" \
      -d '{
        "name": "My DB",
        "db_type": "PostgreSQL",
        "host": "localhost",
        "port": 5432,
        "username": "admin",
        "password": "password"
      }'
      
  • **GET /databases/list**列出所有可用的数据库连接。

  • **GET /databases/{db_id}**通过ID检索单个数据库连接。

  • **PUT /databases/{db_id}**更新现有的数据库连接。

    • 请求体: DatabaseConnectionCreate 模型。
  • **DELETE /databases/{db_id}**删除数据库连接。