使用说明
Guruji 翻译成中文是“导师”或“大师”。这个称呼通常用于表示对某位老师、导师或精神领袖的尊敬,强调其在知识、智慧或道德方面的权威地位
Guruji是一个MCP服务器,它能够根据您的需求生成工具,并且是一个功能强大的聊天机器人,具备记忆功能,能够发起聊天并调用工具以提升性能
数据库
这个项目使用SQLAlchemy和Alembic来管理数据库。数据库是一个名为(此处应接具体文件名,但原文未给出)的SQLite数据库文件 guruji.db 位于 backend 目录。
数据库迁移
要在项目根目录下初始化数据库并应用迁移,请运行以下命令:
-
初始化数据库(仅限首次):
cd backend alembic upgrade head -
在更改模型后,生成一个新的迁移文件:
cd backend alembic revision --autogenerate -m "A descriptive message for the migration" -
应用新的迁移方案:
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}**删除数据库连接。