NegotiationForge 不只是一个聊天界面。它将 LLM 对话、可解释状态跟踪、逐轮态势分析和分支重演组合成一个完整的谈判实验环境:你可以尝试一种说法,观察对手状态变化,再回到关键轮次验证另一种策略。
无需 API Key 即可运行内置 Demo。真实谈判会话支持 DeepSeek、OpenAI 和 Gemini。
| 能力 | 实现方式 | 价值 |
|---|---|---|
| 状态化对手建模 | 持续跟踪满意度、耐心、关系、阶段与策略 | 对手不是无记忆的聊天机器人 |
| 逐轮态势分析 | 分析筹码、信息优势、关系、成交概率和满意度 | 将谈判过程转成可观察信号 |
| 反事实重演 | 从历史轮次 Fork,按不同策略生成替代路径 | 回答“如果当时换一种说法会怎样” |
| 多模型适配 | 统一接入 DeepSeek、OpenAI 与 Gemini | 可按成本、速度和效果切换模型 |
| 本地优先 | SQLite 持久化,场景与配置保存在本机 | 数据边界清晰,方便学习和实验 |
flowchart LR
A[选择谈判场景] --> B[与 AI 对手多轮交涉]
B --> C[更新对手隐状态]
C --> D[生成逐轮态势分析]
D --> E{继续还是结束?}
E -->|继续| B
E -->|结束| F[生成谈判复盘]
D --> G[从关键轮次 Fork]
G --> H[重演替代策略]
H --> I[在分支树中对比结果]
flowchart TB
UI[Next.js 15 + React 19 UI]
API[FastAPI REST API]
SIM[Negotiation Simulation Engine]
ANA[Analysis and Replay Services]
LLM[LLM Provider Adapter]
DB[(SQLite)]
SCN[(JSON Scenarios)]
UI --> API
API --> SIM
API --> ANA
SIM --> LLM
ANA --> LLM
LLM --> DS[DeepSeek]
LLM --> OA[OpenAI]
LLM --> GM[Gemini]
SIM --> DB
ANA --> DB
SCN --> SIM
前端使用 @xyflow/react 展示会话谱系;后端以 FastAPI 提供异步 API,通过 SQLAlchemy + aiosqlite 保存会话、轮次快照、分析结果和复盘。LLM 层统一处理超时、重试、HTTP 错误与响应校验。
- 六类内置场景:租房、薪资、离职补偿、供应商、融资和升学选择
- 多轮 AI 对手交互与阶段化策略变化
- 实时状态仪表盘与后台逐轮分析
- 手动结束、自动成交或谈判破裂判定
- 会话历史、分支谱系和级联删除
- 指定轮次 Fork 与策略化 Replay
- 结束后生成转折点、策略得失和改进建议
- 本地场景 JSON 编辑与模型配置
- 中英文界面与无密钥 Demo
启动项目后打开 http://localhost:3000,点击首页的 「试用 Demo(无需 API Key)」。系统会载入一条租房谈判主线和两条失败分支,可直接查看分析、复盘与分支树。
要求:Python 3.11、Node.js 20+,以及一个受支持模型的 API Key。
git clone https://github.com/Powfu-zwx/NegotiationForge.git
cd NegotiationForge\backend
pip install -r requirements.txt
Copy-Item .env.example .env
python -m uvicorn app.main:app --reload --host 127.0.0.1 --port 8000在第二个终端中启动前端:
cd NegotiationForge\frontend
npm install
Copy-Item .env.local.example .env.local
npm run dev打开 http://localhost:3000。API 文档位于 http://127.0.0.1:8000/docs。
也可以在应用内的“本地设置”中填写模型配置,无需手动编辑 .env。
在 backend/.env 中选择提供商并填写对应密钥:
LLM_PROVIDER |
默认模型 | 必需变量 |
|---|---|---|
deepseek |
deepseek-chat |
DEEPSEEK_API_KEY |
openai |
gpt-4o-mini |
OPENAI_API_KEY |
gemini |
gemini-2.0-flash |
GEMINI_API_KEY |
如后端改用 8001 端口,请设置:
$env:NEXT_PUBLIC_API_URL="http://127.0.0.1:8001/api/v1"主要 API 位于 /api/v1:
| 路径 | 用途 |
|---|---|
POST /sessions |
创建谈判会话 |
POST /sessions/{id}/chat |
执行一轮谈判 |
GET /sessions/{id}/analysis |
获取逐轮态势分析 |
POST /sessions/{id}/fork |
从历史轮次创建分支 |
POST /sessions/{id}/replay |
使用替代策略重演一轮 |
GET /sessions/{id}/fork-tree |
获取会话分支树 |
POST /sessions/{id}/summary |
生成结束复盘 |
场景由 JSON 描述,包含双方目标、可协商议题、对手人格、隐藏底线、让步规则和终止条件,因此无需修改核心代码即可扩展训练内容。
NegotiationForge/
├── backend/
│ ├── app/api/ # FastAPI 路由
│ ├── app/llm/ # 多模型适配与容错
│ ├── app/services/ # 模拟、分析、Fork 与 Replay
│ ├── scenarios/ # JSON 谈判场景
│ └── tests/ # 后端回归测试
├── frontend/
│ ├── app/ # Next.js App Router
│ ├── components/ # 谈判工作台与分支树
│ └── lib/ # API、本地配置与视图模型
└── .github/workflows/ # 自动测试与构建
cd backend
python -m pytest -q
ruff check app tests
cd ..\frontend
npm run check
npm run buildGitHub Actions 会在每次推送和 Pull Request 时执行同样的后端测试、静态检查与前端构建。
这是面向本地单用户的训练与实验工具,不构成现实谈判、法律、财务或职业建议。项目没有实现公网部署所需的身份认证、租户隔离和密钥托管,请勿将开发服务器直接暴露到公网。



