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, 工单分类, 无后门, 机器学习工程, 自动化客服, 逆向工具