KARTHIK1749/Palantir-task-Terminal-Based-AI-Agent-for-Support-tickets
GitHub: KARTHIK1749/Palantir-task-Terminal-Based-AI-Agent-for-Support-tickets
一个基于终端的企业级支持工单智能分流 AI Agent,能够在离线知识库的支持下完成工单分类、自动回复生成与高风险案例升级,并具备对抗性输入防护能力。
Stars: 0 | Forks: 0
# MLE 招聘挑战赛
**MLE 招聘挑战赛**(24 小时窗口)的启动代码库。
仅使用本代码库附带的支持知识库,构建一个基于终端的 AI agent,对跨三个产品生态系统 —— **DevPlatform**、**Claude** 和 **Visa** —— 的真实支持工单进行分类处理。
阅读 [`problem_statement.md`](./problem_statement.md) 以获取完整的任务说明、输入/输出 schema 和允许的值,以及阅读 [`evalutation_criteria.md`](./evalutation_criteria.md) 了解如何对提交内容进行评分。
## 目录
1. [代码库结构](#repository-layout)
2. [你需要构建什么](#what-you-need-to-build)
3. [代码存放位置](#where-your-code-goes)
4. [快速开始](#quickstart)
5. [聊天记录日志](#chat-transcript-logging)
6. [提交说明](#submission)
7. [最终的一对一面试](#final-1-on-1-interview)
8. [评估标准](#evaluation-criteria)
9. [推荐方法](#recommended-approaches)
10. [常见陷阱](#common-pitfalls)
## 代码库结构
```
.
├── AGENTS.md # Rules for AI coding tools + transcript logging
├── problem_statement.md # Full task description and I/O schema
├── evalutation_criteria.md # Scoring rubric (read carefully — hidden requirements)
├── README.md # You are here
├── code/ # ← Build your agent here
│ ├── main.py # Entry point (rename/extend as you like)
│ └── validate_output.py # Format validation (structure only, not quality)
├── data/ # Local-only support corpus (no network needed)
│ ├── devplatform/ # DevPlatform help center
│ ├── claude/ # Claude Help Center export
│ └── visa/ # Visa consumer + small-business support
└── support_tickets/
├── sample_support_tickets.csv # Inputs + expected outputs (format reference)
├── support_tickets.csv # Inputs only (run your agent on these)
└── output.csv # Write your agent's predictions here
```
## 你需要构建什么
一个基于终端的 agent,对于 `support_tickets/support_tickets.csv` 中的每一行,生成一个完整的输出行。请查看 `sample_support_tickets.csv` 和 `output.csv` 的表头以获取完整的列 schema —— 确保你生成了**所有**必需的列,而不仅仅是问题描述中主要输出部分提到的那些。
| 列名 | 描述 |
| --- | --- |
| `status` | `replied` 或 `escalated` |
| `product_area` | 最相关的支持类别 / 领域 |
| `response` | 基于所提供知识库的面向用户的回答 |
| `justification` | 对路由/回答决策的简明解释 |
| `request_type` | `product_issue`、`feature_request`、`bug` 或 `invalid` |
硬性要求(来自 `problem_statement.md`):
- 必须**基于终端**。
- 必须**仅使用提供的支持知识库**(不进行实时的网络调用以获取标准答案)。
- 必须**升级**(escalate)高风险、敏感或不受支持的案例,而不是盲目猜测。
- 必须避免产生幻觉的策略或不受支持的声明。
- 必须稳健地处理对抗性输入。
- 必须产生确定、可复现的输出。
除此之外,你可以自由选择你自己的方法 —— RAG、向量数据库、工具使用、结构化输出、agent 框架、经典的机器学习,或其他任何方法。
## 代码存放位置
你所有的工作都应放在 [`code/`](./code/) 中。该代码库附带了一个空的 `code/main.py`,你可以将其扩展为你完整的 agent —— 根据需要在其旁边添加更多模块(如 `agent.py`、`retriever.py`、`classifier.py` 等)。
约定:
- 在 `code/` 中放置一个 **README**,描述如何安装依赖和运行你的 agent。
- 在 `code/` 中放置一个 **ARCHITECTURE.md**,记录你的 agent 的设计(参见评估标准)。
- **仅从环境变量中读取**密钥(`OPENAI_API_KEY`、`ANTHROPIC_API_KEY`、……)。如果你需要使用的话,将 `.env.example` 复制为 `.env`(已被 gitignore 忽略)。**切勿硬编码密钥。**
- 尽可能保持**确定性**。为任何随机采样设置随机种子。
- 将响应写入 `support_tickets/output.csv`。
## 快速开始
克隆此代码库:
```
git clone
cd MLE-hiring
```
你可以自由使用任何语言或 runtime。我们推荐使用 **Python**、**JavaScript** 或 **TypeScript**。
## 聊天记录日志
本代码库附带了一个 `AGENTS.md` 文件,任何现代的 AI 编码工具(Cursor、Claude Code、Codex、Gemini CLI、Copilot 等)都会读取它。它会指示该工具将每一轮对话追加到一个共享的日志文件中:
| 平台 | 路径 |
| -------------- | ------------------------------------------------- |
| macOS / Linux | `$HOME/mle_hiring/log.txt` |
| Windows | `%USERPROFILE%\mle_hiring\log.txt` |
你不需要做任何额外的操作来启用它 —— 只需正常使用你的 AI 工具。你将在提交时上传这个 `log.txt` 作为你的聊天记录。
## 提交说明
你将上传**四个**文件:
1. **代码 zip 压缩包** —— 压缩你的 `code/` 目录并上传。需包含 `ARCHITECTURE.md` 和 `README.md`。排除虚拟环境、`node_modules`、构建产物、`data/` 知识库以及 `support_tickets/` 下的 CSV 文件。
2. **预测 CSV 文件** —— 你的 agent 对 `support_tickets/support_tickets.csv` 处理后的输出(即填充好的 `output.csv`)。我们将重新运行你的代码以验证其是否匹配。
3. **聊天记录** —— 来自[聊天记录日志](#chat-transcript-logging)中指定路径的 `log.txt` 文件。
4. **Git 历史记录** —— 运行 `git log --oneline --all > git_history.txt` 并将其包含在内,或者在 zip 压缩包中包含你的 `.git` 目录。
## 最终的一对一面试
在成功提交后,你将被邀请与我们的工程团队进行最终的一对一面试,这是发放 Offer 前的最后一步。
团队将会提前审阅你的代码,面试包含三个部分:
1. **架构深度探讨**(15 分钟)—— 解释你的设计决策、权衡,以及你如何使用 AI 工具来构建你的解决方案。
2. **现场红蓝对抗**(15 分钟)—— 面试官将提供新的对抗性工单。你需要现场运行你的 agent 并为输出结果进行辩护。
3. **自我评估回顾**(15 分钟)—— 讨论你的 `code/ARCHITECTURE.md` 中的自我评估以及潜在的故障模式。
面试时长为 45 分钟。
## 评估标准
提交的内容将跨多个维度进行评分,包括对抗鲁棒性、升级精度、响应质量、来源归属、PII 处理、代码架构、置信度校准以及确定性。
请参阅 [`evalutation_criteria.md`](./evalutation_criteria.md) 获取完整的评分标准。**请仔细阅读** —— 其中有一些很容易被忽略的具体要求和惩罚机制。
## 推荐方法
以下是基于类似挑战中行之有效的经验提出的一些建议。请选择适合你技能组合的方法:
1. **简单的 RAG 流水线** —— 对知识库进行分块,构建向量索引(FAISS、ChromaDB),针对每个工单检索前 k 个块,传递给 LLM 进行分类和生成回复。构建速度快,但可能难以处理对抗性输入和知识库冲突。
2. **多阶段 Agent** —— 将检索、安全筛选、分类和响应生成分离为独立的流水线阶段。较为复杂,但允许在每个阶段进行专门的处理。
3. **Agentic 框架** —— 使用 LangChain、LlamaIndex、CrewAI 等。提供了基础结构,但增加了抽象开销,可能使调试变得更加困难。
4. **经典 ML + LLM 混合模式** —— 使用 TF-IDF 或 BM25 进行检索,配合轻量级分类器进行路由,然后仅使用 LLM 生成响应。快速且具有确定性,但推理能力有限。
## 常见陷阱
- **盲目信任样本集分布。** 样本工单大多是直接明了的 FAQ。实际的测试集并非如此。
- **忽略扩展的输出列。** 问题描述的主要输出部分列出了 5 列。完整的 schema 包含更多列。请检查 `output.csv` 和 `sample_support_tickets.csv`。
- **缺乏对抗性处理。** 单个提示词注入合规性失败会导致在最大评估维度(占总分的 25%)上得分为 0%。
- **产生幻觉的引用。** 引用不存在的知识库文件比省略引用会受到更严厉的惩罚。
- **过度设计。** 花费 8 个小时构建一个完美的 RAG 系统将没有时间进行安全防护、校准和测试。
- **阅读规范不仔细。** 要求分布在 `problem_statement.md`、`evalutation_criteria.md`、`AGENTS.md` 和此 README 中。请阅读所有这些文件。
标签:AI智能体, C2, Python, 工单分类, 无后门, 机器学习工程, 自动化客服, 逆向工具