code/chapter15/Helloagents-AI-Town/backend/README.md
基于HelloAgents框架的AI NPC对话系统后端服务。
cd backend
pip install -r requirements.txt
创建.env文件或设置环境变量:
注意: 如果不配置API密钥,系统将使用预设对话模式运行。
python main.py
uvicorn main:app --reload --host 0.0.0.0 --port 8000
启动成功后访问:
运行测试脚本:
python test_api.py
测试内容包括:
GET /npcs
响应示例:
{
"npcs": [
{
"name": "张三",
"title": "Python工程师",
"location": "工位区",
"activity": "写代码",
"available": true
}
],
"total": 3
}
POST /chat
Content-Type: application/json
{
"npc_name": "张三",
"message": "你好,你在做什么?"
}
响应示例:
{
"npc_name": "张三",
"npc_title": "Python工程师",
"message": "你好!我正在优化一个多智能体系统的性能,挺有意思的。",
"success": true,
"timestamp": "2024-01-15T10:30:00"
}
GET /npcs/status
响应示例:
{
"dialogues": {
"张三": "终于把这个bug修复了,测试通过!",
"李四": "下周的产品评审会需要准备一下资料。",
"王五": "这个配色方案看起来不错,再调整一下细节。"
},
"last_update": "2024-01-15T10:30:00",
"next_update_in": 25
}
POST /npcs/status/refresh
backend/
├── main.py # FastAPI主程序
├── config.py # 配置文件
├── models.py # 数据模型(Pydantic)
├── agents.py # NPC Agent系统
├── batch_generator.py # 批量对话生成器
├── state_manager.py # NPC状态管理器
├── test_api.py # API测试脚本
├── requirements.txt # Python依赖
└── README.md # 本文件
为了降低API成本和延迟,系统采用批量生成策略:
传统方式:
批量方式:
1. 定时器触发(30秒)
↓
2. 批量生成器构建提示词
↓
3. 一次LLM调用生成所有NPC对话
↓
4. 解析JSON响应
↓
5. 更新状态管理器缓存
↓
6. Godot客户端定时获取状态
# NPC更新间隔(秒)
NPC_UPDATE_INTERVAL = 30
# LLM配置
OPENAI_MODEL = "gpt-4o-mini" # 推荐使用mini版本降低成本
修改config.py中的NPC_UPDATE_INTERVAL:
❌ LLM初始化失败
解决: 检查OPENAI_API_KEY环境变量是否设置
⚠️ 将使用预设对话模式
解决: 系统自动降级到预设对话,不影响基本功能
解决: 检查config.py中的CORS_ORIGINS配置
agents.py的NPC_ROLES中添加配置batch_generator.py的preset_dialogues中添加预设对话修改agents.py中的create_system_prompt函数
修改batch_generator.py中的_build_batch_prompt函数
本项目遵循 HelloAgents 项目的开源协议。