面试表达
面试时怎么讲
一句话:我围绕「模型调用与提示词工程(GPT / Claude / 通义)」做过从问题拆解、方案设计、工程落地到效果验证的闭环。
追问重点:为什么这么设计、指标怎么验证、失败案例如何定位、上线后怎么观测和回滚。
证据建议:准备 README、架构图、关键代码片段、评测表和 2 个坏例复盘。
把“会用模型”升级为“会设计调用策略、输出约束、缓存友好 prompt、成本控制”。
本地学习进度
只保存在当前浏览器,不上传服务器。
学习产出
进阶能力,P1。阅读时尽量把知识点转成可演示项目、面试回答和简历证据。
能回答
你这门课的目标 / 从零认知图 / 10 天学习路径(建议每天 2~3h)
能交付
完成练习与自测,留下可复盘的代码、截图或 README
下一步
先读手把手版,再回到正文补架构和取舍
面试表达
一句话:我围绕「模型调用与提示词工程(GPT / Claude / 通义)」做过从问题拆解、方案设计、工程落地到效果验证的闭环。
追问重点:为什么这么设计、指标怎么验证、失败案例如何定位、上线后怎么观测和回滚。
证据建议:准备 README、架构图、关键代码片段、评测表和 2 个坏例复盘。
简历表达
围绕 模型调用与提示词工程(GPT / Claude / 通义) 场景,完成「把“会用模型”升级为“会设计调用策略、输出约束、缓存友好 prompt、成本控制”。」相关能力建设,沉淀可复用工程方案、测试样本和面试表达材料。
学完要达到 4 件事,而不是“会调一次 API”:
| 层级 | 你要理解什么 | 典型产出 |
|---|---|---|
| L1 | System / User / Tool 消息分工 | 一套角色稳定的对话模板 |
| L2 | 温度、top_p、max_tokens 对稳定性与成本的影响 | 同一任务的参数矩阵小实验 |
| L3 | JSON Mode / Schema / Function Calling | 可解析、可校验的下游输入 |
| L4 | 重试、降级、超时与熔断 | 调用层封装(含观测字段) |
| L5 | Prompt A/B 与评测闭环 | 改动前后对比报告 |
prompts/v1.2/classify.md + changelog;记录变更假设与验证方式。prompt-versioning.md:版本、假设、验证、回滚工程价值:Agent 长任务会放大 Token、工具轮次和重试成本。能在不牺牲质量的前提下降低单任务成本,并拿出可复现评测数据,是生产 AI 岗位的重要能力。
(input_tokens × in_price + output_tokens × out_price) × 调用次数,自己算清楚一单调用多少钱。各家实现(2026-07-29 官方文档口径):
cache_control 断点,TTL 为 5 min 或 1h;工具、system、messages 的稳定前缀顺序会直接影响命中。cached_tokens 与 cache_write_tokens。caches.create() 属于 generateContent API 的显式缓存路径,不能混为同一个接口。设计原则:
[缓存友好前缀] ← 稳定 system + few-shot + 大文档
[动态后缀] ← 用户输入 + 工具返回{timestamp} 插入 system 开头。def route(task):
if task.risk == "high" or task.type in {"contract", "sql_write"}:
return "gpt-5.6-sol" # 高风险 / 高难度
if task.tokens < 2000 and task.type == "classify":
return "gpt-5.6-luna" # 低风险、速度优先
if task.provider_policy == "anthropic":
return "claude-sonnet-5"
return "gpt-5.6-terra" # 常规执行fallback=true。key = embed(normalize(query)) # 向量键
cached = redis_get_near(key, thresh=0.92)
if cached and not is_stale(cached):
return cachedmax_tokens 别爆,选择 stop 提早截断。# token bucket
bucket = RedisTokenBucket(rate=100, burst=200)
if not await bucket.acquire(cost_tokens):
return fallback_short_answer()
# 单用户并发
sem = user_semaphores[user_id] # e.g., 2
async with sem:
result = await llm(...)429 Retry-After,配合前端友好提示。每次调用必录:input_tokens, cached_tokens, output_tokens, reasoning_tokens, model, cost_usd, latency_ms, ttft_ms, finish_reason, cache_hit。
周报看两条曲线:成本/活跃 DAU 、 缓存命中率。
| 场景 | 替换方案 | 准确率损失 | 成本下降 |
|---|---|---|---|
| 分类 | embedding + logistic | 1–3% | 95% |
| 短摘要 | 7B 小模型本地 | 3–5% | 80% |
| 错别字 / 纠错 | 规则 + 小模型 | <1% | 90% |
| 意图识别 | 微调 BGE + linear | 2–4% | 90% |
| 复杂推理 | 保留大模型 | - | - |
seed。libs/llm_router.py(路由 + fallback + 降级)libs/prompt_cache.py(前缀构造工具)docs/cost-budget-table.mddashboards/cost-quality.json与 llmops-observability-evaluation、ai-frontend-streaming-ux、model-serving-and-inference 联动。