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}删除数据库连接。
