Skip to content

Repository files navigation

小灵通问答agent — 行业深度分析平台

Python 3.11+ FastAPI React 18 License

一个面向行业研究、战略分析和投资决策的 AI 原生智能体平台。融合 RAG 知识检索、多维度分析框架和专业工具集,实现对前沿行业的深度洞察。


核心亮点

维度 能力
行业知识库 半导体、新能源汽车、AI、生物医药、新能源 — 5 大行业的结构化数据 + RAG 检索
分析工具链 11 个内置工具:SWOT / PESTEL / 波特五力 / 价值链 / 技术路线图 / 政策法规 / 竞争格局 / 供应链映射 / 行业新闻 / 企业背景 / 市场规模
智能体编排 5 节点工作流引擎(Start → Knowledge → Tool → LLM → Answer),SSE 流式输出
模型灵活 支持 OpenAI 兼容接口、DashScope、DeepSeek 等,可接入用户自有 LLM
平台能力 用户认证 / 工作空间 / 智能体发布审核 / 知识库管理 / 会话记忆 / 深度思考 / 联网搜索

🏗 系统架构

┌─────────────────────────────────────────────────────────────┐
│                     Browser (React 18 + Vite)                │
│                   http://127.0.0.1:5175                      │
└──────────────────────────┬──────────────────────────────────┘
                           │ HTTP / SSE
┌──────────────────────────▼──────────────────────────────────┐
│               FastAPI (api/main.py)  :8001                   │
│  ┌─────────┬──────────┬──────────┬──────────┬───────────┐  │
│  │  Auth   │  Agents  │Knowledge │   RAG    │  Tools    │  │
│  │  (JWT)  │  (CRUD)  │ (文档入库)│(Dense+B25│(11内置)   │  │
│  │         │          │          │+RRF+Rera │           │  │
│  │         │          │          │  nk)     │           │  │
│  └─────────┴──────────┴──────────┴──────────┴───────────┘  │
│  ┌──────────────────────────────────────────────────────┐   │
│  │           WorkflowRunner (core/runtime/workflow.py)   │   │
│  │    Start → Knowledge(RAG) → Tool(FC loop) → LLM → Ans │   │
│  └──────────────────────────────────────────────────────┘   │
└──────────────────────────┬──────────────────────────────────┘
           ┌───────────────┼───────────────┐
     ┌─────▼─────┐  ┌──────▼──────┐  ┌────▼────┐
     │ PostgreSQL │  │Milvus/内存  │  │  Redis   │
     │   (SQLite)  │  │  向量存储   │  │  (缓存)  │
     └───────────┘  └─────────────┘  └──────────┘

工作流引擎 (WorkflowRunner)

5 节点流水线,每节点产生可追踪的 RunStep:

Start ──► Knowledge ──► Tool ──► LLM ──► Answer
 │            │           │        │         │
 接收输入    RAG检索    工具调用   生成回答   输出结果
            实时返回引用  支持8轮    深度思考  结构化报告

RAG 检索管线

用户Query → Dense(向量嵌入) ─┐
                              ├──► RRF融合 ──► Rerank(qwen3) ──► TopK结果
          → BM25(jieba分词) ─┘       + Redis缓存              + 证据校验

📋 内置工具

工具名 功能 数据来源
industry_news 行业实时新闻 结构化新闻库 + DuckDuckGo 联网
company_background 企业背景查询 企业数据库(华为/比亚迪/宁德时代等)
market_sizing 市场规模数据 行业市场数据库
swot_analysis SWOT 分析框架 结构化分析模板
pestel_analysis PESTEL 宏观分析 结构化分析模板
porter_five_forces 波特五力分析 结构化分析模板
value_chain_analysis 价值链分析 行业价值链数据库
technical_roadmap 技术路线图 行业技术路线数据库
regulatory_analysis 政策法规分析 行业政策数据库
competitive_landscape 竞争格局分析 企业竞争数据库
supply_chain_mapping 供应链映射 供应链数据库

🚀 快速启动

环境要求

  • Python 3.11+
  • Node.js 18+ / npm

1. 创建环境变量

cp .env.example .env

.env 最小配置(本地开发)

JWT_SECRET=your-secret-key-here
DATABASE_URL=sqlite:///./lingshu.db
OPENAI_API_KEY=sk-your-key
OPENAI_MODEL=qwen-plus
LINGSHU_MOCK_LLM=true
LINGSHU_VECTOR_BACKEND=memory
API_KEY_ENCRYPTION_KEY=601016
CORS_ORIGINS=http://127.0.0.1:5175,http://localhost:5175

2. 安装依赖 + 启动

# 后端
pip install -r requirements.txt
uvicorn api.main:app --host 127.0.0.1 --port 8001

# 前端 (新终端)
cd frontend
npm install
npm run dev -- --port 5175

3. 使用

  1. 打开 http://127.0.0.1:5175
  2. 注册账号(第一个用户自动成为管理员)
  3. 系统自动创建"行业分析专家"智能体 + 行业知识库
  4. 开始对话,例如:"分析半导体行业竞争格局"

使用 Docker(可选)

# 启动基础设施
docker-compose up -d postgres redis
# 修改 .env 中 DATABASE_URL 和 REDIS_URL 指向 Docker

📁 项目结构

.
├── api/                         # FastAPI 应用层
│   ├── main.py                  # 40+ 端点、SSE 流式、启动事件
│   ├── schemas.py               # Pydantic 请求/响应模型
│   └── deps.py                  # JWT 鉴权、权限依赖注入
├── core/                        # 核心业务层
│   ├── config.py                # Pydantic Settings 配置管理
│   ├── db/
│   │   ├── models.py            # 20+ SQLAlchemy ORM 模型
│   │   └── session.py           # 数据库会话工厂
│   ├── integrations/
│   │   ├── llm.py               # OpenAI 兼容 LLM 网关
│   │   └── vector_store.py      # 向量存储抽象 (Milvus/Memory)
│   ├── runtime/
│   │   └── workflow.py          # 工作流引擎 WorkflowRunner
│   ├── security/
│   │   ├── auth.py              # JWT + PBKDF2 密码哈希
│   │   ├── api_keys.py          # Fernet API Key 加密
│   │   └── permissions.py       # 角色 RBAC
│   └── services/
│       ├── industry_data.py     # ★ 行业数据中心 - 结构化知识资产
│       ├── tools.py             # 11 个内置行业分析工具
│       ├── rag.py               # RAG 检索管线
│       ├── knowledge.py         # 知识库管理
│       ├── bootstrap.py         # 首次启动初始化
│       └── ...
├── frontend/                    # React SPA
│   └── src/
│       ├── main.jsx             # 单文件应用(多页面路由)
│       ├── styles.css           # 全局样式系统
│       └── views/               # 页面组件
├── data/                        # 知识库原始数据
│   ├── 半导体行业分析.txt
│   ├── 新能源汽车行业分析.txt
│   ├── 人工智能行业分析.txt
│   ├── 医药行业分析.txt
│   └── 新能源行业分析.txt
├── tests/                       # pytest 集成测试
├── docker-compose.yml
└── requirements.txt

🛠 技术栈

技术 说明
后端框架 FastAPI 0.115 + Uvicorn 异步高性能、自动 OpenAPI 文档
前端 React 18 + Vite 5 SPA、SSE 流式渲染、Markdown
数据库 SQLAlchemy 2.0 + PostgreSQL/SQLite ORM、兼容迁移
向量检索 Milvus / 内存向量 Dense 检索 + BM25 混合
缓存 Redis RAG 缓存、任务状态
LLM OpenAI 兼容协议 DashScope / DeepSeek / 自定义
分词 jieba 中文 BM25 分词
安全 JWT + PBKDF2 + Fernet 认证、密码哈希、API Key 加密

🔧 关键技术实现

1. 工具调用循环 (Multi-turn Tool Calling)

# core/runtime/workflow.py - Tool 节点
for _round in range(8):                      # 最多 8 轮
    response = provider.chat(messages, tools=schema)
    if not response.tool_calls: break        # 无工具调用则结束
    for tc in response.tool_calls:
        result = execute_tool(tool, args)    # 执行工具
        messages.append({"role": "tool", ...}) # 结果回填
# 最终用累积上下文生成答案

2. API Key 加密存储

# core/security/api_keys.py
from cryptography.fernet import Fernet
# 用户 LLM Key 使用 Fernet 对称加密存储,前端永不回显

3. SSRF 防护

# core/services/tools.py - HTTP 工具 URL 校验
# 拒绝: localhost / 内网IP / 链路本地地址 / 云元数据地址
# 要求: HTTPS 协议

📊 项目特点总结

面试看点 具体体现
全栈能力 前后端分离、数据库设计、Docker部署
架构设计 工作流引擎、多节点流水线、依赖注入
AI 工程化 RAG 混合检索、Function Calling、SSE 流式
安全实践 JWT、PBKDF2、Fernet加密、SSRF防护、RBAC
工程规范 Pydantic 配置管理、pytest 测试、CS架构
业务深度 行业知识库、专业分析工具、结构化输出

📝 License

MIT

About

一款基于ReAct框架的自研agent

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages