生物机器人
BioBot是一个基于Fastapi、SQLite、Redis、Azure Openai和MCP服务器的植物学查询应用程序,该应用程序公开了搜索SQL模板和执行只读查询的工具。
该项目目前的流程是代理的:
- API以自然语言接收问题。
- 应用入口护栏。
- 在Redis中查询混合缓存。
- 如果没有缓存命中,LLM代理将通过以下方式打开MCP会话
stdio. - 代理决定是否使用
search_templates,query_datao响应工具。 - SQL查询在运行到SQLite之前经过验证。
- 答案回到了Markdown的前沿。
堆栈
- 用于HTTP API和静态前端的FastaAPI。
- SQLite作为主要植物学数据库。
- Redis作为混合缓存:精确哈希+语义嵌入。
- 用于SQL模板语义搜索的QDRANT云。
- Azure Openai用于LLM代理和远程嵌入。
- Langfuse用于可追溯性。
- HTML、CSS和JavaScript的简单前端。
要求
- Python 3.10更高级。
- Docker,如果你要举起Redis
docker-compose. - Azure Openai的有效凭据。
安装
安装声明的依赖项:
pip install -r requirements.txt注意:当前代码还使用未完全反映在 requirements.txt,例如 qdrant-client, sentence-transformers, numpy y pydantic。如果您的环境干净,可能需要手动添加它们或完成该文件。
配置
该项目将配置集中在 config/app_config.py y李变量desde .env.
相关变量:
AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_API_KEY=
AZURE_OPENAI_API_VERSION=
AZURE_OPENAI_MODEL=
AZURE_EMBEDDING_DEPLOYMENT=
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
CACHE_TTL=3600
CACHE_SIMILARITY_THRESHOLD=0.75
CACHE_EMBEDDING_MODEL=
SQLITE_DB_PATH=dbtest.db
FEEDBACK_DB_PATH=dbfeedback/dbfeedback.db
QDRANT_URL=
QDRANT_API_KEY=
QDRANT_COLLECTION=templates
QDRANT_VECTOR_SIZE=3072
LANGFUSE_PUBLIC_KEY=
LANGFUSE_SECRET_KEY=
LANGFUSE_HOST=https://cloud.langfuse.com电梯工程
1. 启动网络
docker-compose up -d这引起了雷迪斯的注意 6379 和RedisinSight 8001.
2. 启动API
uvicorn app:app --reload该应用程序可在 http://localhost:8000.
3.打开前端
Frontend从同一应用程序提供服务:
http://localhost:8000/关於MCP
不需要电梯 mcp_servers/mcp_server.py 手动停止正常流量。
API创建MCP会话 stdio_client(...) 并在处理查询时将该脚本作为子进程启动。档案馆 mcp_servers/mcp_server.py 它仍然是MCP服务器的入口点,但它的正常使用是间接的,因为 QueryService.
端点
公开的
GET /:前端服务。GET /health:检查Redis、Qdrant和MCP脚本的存在。POST /response:端点负责人。POST /feedback:保存用户的反馈,如果是阳性,则缓存响应。
请求示例 POST /response:
{
"question": "Dame las plantas de la familia Rosaceae"
}响应示例:
{
"answer": "...respuesta en markdown...",
"query_llm": "SELECT id, common_name, science_name, type, origin FROM botanica WHERE family = 'Rosaceae' ORDER BY common_name;"
}管理
POST /admin/cache/clearGET /admin/cache/statsPOST /admin/templates/clear
这些端点在当前回购状态下没有身份验证。它们是为当地使用或受控环境设计的。
建筑概述
API
app.py:创建Fastapi应用程序,装载静态并注册路由器。routers/query_router.py:家,健康y终点负责人。routers/feedback_router.py:反馈持续性。routers/admin_router.py:维护操作。
查询编排
services/query_service.py:管道负责人。services/llm/azureopenai.py具有工具调用的代理。services/tools/tool_execution_service.py:工具执行和SQL验证。
数据和搜索
mcp_servers/mcp_server.py:工具MCPsearch_templatesyquery_data.services/templates/:模板,渲染SQL y向量存储。config/templates.py:植物模板目录。
安全性和可观察性
guardrails_folder/input_validator.py:封锁越狱和禁言。guardrails_folder/sql_validator.py:在执行之前验证SQL。services/traicing/tracing_service.py:与Langfuse集成。
缓存和反馈
cache/hybrid_cache.py:精确缓存+语义。repositories/feedback_respository.py:访问反馈BD。services/feedback/feedback_service.py:缓存反馈和提升的持久性。
存储库的操作状态
在干净运行之前,有几个细节需要知道:
- 没有观察到重新索引的自动引导
config/templates.py启动APP时。 - 基本反馈和表格
interacciones_llm它们被认为存在。 requirements.txt它落后于一些真正的代码导入。
换句话说:回购更像是一个已经武装起来的作战基地,而不是一个从头开始初始化一切的scaffold。
前端
Web客户端:
- 向发送查询
POST /response; - 渲染标记
marked并用DOMPurify; - 允许发送正面或负面的反馈
POST /feedback; - 显示带有水平滚动的表格;
- 使用简单的面向聊天的视觉风格。
图片
更新的流程记录在 esquema.md.
安全观察
在将其用于开发之外之前,应至少审查:
- 认证
/admin/*; - CORS向任何来源开放;
- 保密和全权证书管理;
- 利率限制;
- 加强SQL验证。
______________________________________________________________________
由Luz Tappro开发,2026年。
