1. 项目概述:构建一个智能租房推荐Agent
去年参与山东大学实训项目时,我们团队接到了一个很有意思的挑战——开发一个基于大数据的智能租房推荐系统。不同于传统的推荐系统,我们需要构建的是一个能够理解用户需求、进行多轮对话、并自主调用各种工具来完成复杂任务的智能体(Agent)。
这个智能体的核心能力包括:
- 理解自然语言描述的租房需求
- 管理多轮对话上下文
- 自主决定何时以及如何调用各种工具(如房源数据库、地图API、价格分析工具等)
- 将工具返回的结果整合成用户友好的回复
我们选择使用TypeScript作为开发语言,主要考虑到:
- 类型系统能在复杂系统中提供更好的开发体验和代码质量
- 与前端生态(如React)更好的集成可能性
- 团队成员对JavaScript生态都比较熟悉
技术栈方面,我们基于LangChain框架构建核心Agent能力,它提供了对话管理、工具调用等常用功能的封装,让我们能快速搭建原型,同时保留了足够的灵活性进行定制开发。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 项目结构与设计思路
2.1 目录结构设计
良好的项目结构是可持续开发的基础。我们参考了Claude Code的Agent框架设计,最终确定的目录结构如下:
code复制house-recommend/
├── data/ # 数据目录
│ └── mockListings.json # 模拟房源数据
├── docs/ # 文档目录
│ ├── architecture.md # 架构文档
│ └── prompt_templates_v1.md # 提示模板
├── src/ # 源代码目录
│ ├── agent/ # 智能体相关代码
│ ├── config/ # 配置文件
│ ├── domain/ # 领域模型
│ ├── memory/ # 记忆系统
│ ├── runtime/ # 运行时
│ ├── tools/ # 工具定义
│ └── types/ # 类型定义
├── storage/ # 存储目录
├── .env.example # 环境变量示例
├── package.json # 依赖配置
└── tsconfig.json # TypeScript 配置
这样设计的考虑是:
- **模块化分
