想象你是一家餐厅的主厨,招牌菜最近总被客人说“差点意思”。改进它有两种思路:请一位“自动烹饪机器人”坐镇后厨——你只需告诉它“要一道酸甜口的鱼”,它会自己设计配方、反复试做、根据品鉴分数不停调整配料火候,直到分数满意为止;或者,给厨房装上全程录像和品鉴记录——每一道菜从备料到出锅都有迹可循,每个客人评价都被归档,你对着回放一点一点找到问题环节,然后亲手改进。前者是 DSPy 的哲学:程序化声明加自动优化;后者是 LangSmith 的哲学:全链路追踪加人工迭代。没有谁绝对更好,关键看你的餐厅需要什么样的提升节奏。

岗位关联

理解两大 Prompt 优化工具的设计哲学与适用场景,帮你像选厨具一样为团队选对工具链,避免“自动化过度”或“手工调试”的双重低效。

目录
  1. 可视化演示
  2. 一、工具定位差异:自动厨师与监控厨房
  3. 二、DSPy核心机制:机器人如何自动调配方
  4. 三、LangSmith核心机制:全流程监控与人工复盘
  5. 四、优化效果对比:自动与人工的账本
  6. 五、工程集成生态:厨房设备怎么搭配
  7. 六、选型决策指南:你的厨房需要哪种方案
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

动态演示DSPy与LangSmith的核心机制,通过源头/管道/节点/终端四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

DSPy与LangSmith:DSPy DSPy与LangSmith设 DSPy程序化自动优化Prom 核心机制可视化 DSPy与LangSmith整体架构与关键组件

一、工具定位差异:自动厨师与监控厨房

想象你是一家餐厅的主厨,招牌菜最近总被客人反馈“差点意思”。提升菜品有两条截然不同的路:请一位自动烹饪机器人——它会自己写配方、反复试做、按品鉴分数不断迭代;或者装一套全程监控系统——备料、腌制、下锅、装盘每一帧都有录像,每位客人的评价都归档,你盯着回放找到问题环节,亲手微调。

DSPy 就是那位自动烹饪机器人。它鼓励你把“提示词工程”改写成“程序化声明”:告诉它输入是什么、期望输出是什么、任务拆成哪些模块,剩下的 Prompt 文本怎么写、示例怎么选,交给优化器自动搜索。LangSmith 则是那套监控系统:为 LLM 应用提供链路追踪、数据集管理和在线评估,把每个环节的“录像”和“评分”呈现在你面前,但改不改、怎么改,由真人决定。

两者最根本的差异在于优化发生的时机和主体。DSPy 的优化发生在编译期,主体是优化器程序,它批量生成指令描述和示例组合,在验证集上打分排序;LangSmith 的优化发生在运行期,主体是工程师,它把线上真实输入、模型输出、token 成本完整记录,供人复盘决策。一个把“调 Prompt”变成“写程序”,一个把“调 Prompt”变成“看证据”。

选工具之前先问自己:你缺的是不知疲倦的自动厨师,还是帮你把问题看清楚的监控设备?方向想明白了,后面的选择就顺理成章。

Prompt 优化={自动搜索: θ∗=arg⁡max⁡θS(θ)人工迭代: Pk+1=Adjust(Pk)\displaystyle \text{Prompt 优化} = \begin{cases} \text{自动搜索: } \theta^* = \arg\max_{\theta} S(\theta) \\ \text{人工迭代: } P_{k+1} = \text{Adjust}\big(P_k\big) \end{cases}
通俗说明:自动路径是“把所有配方试一遍,留下最高分”;人工路径是“看上一轮结果,手动改一版再看效果”。
  1. 自动搜索式优化器遍历候选配方,用评分函数 S 打分,留下分数最高的那版配置。
    θ∗=arg⁡max⁡θS(θ)\theta^* = \arg\max_{\theta} S(\theta)
  2. 人工迭代式人类工程师根据追踪到的失败案例,手工修改 Prompt 得到下一版,再继续观察效果。
    Pk+1=Adjust(Pk)P_{k+1} = \text{Adjust}\big(P_k\big)

二、DSPy核心机制:机器人如何自动调配方

自动烹饪机器人的厉害之处在于“体系化试错”。它不会凭感觉撒盐,而是把做菜拆成固定流程:先声明这道菜的输入(鱼、糖、醋)和输出(酸甜口的成品),再把流程分成腌制、调汁、烹饪几个模块,反复试做、记录评分、自动调整配方。

DSPy 的核心正是这套流程。用 Signature(签名)声明输入输出字段;用 Module(模块)把任务拆成多个 Predictor(预测器);用 Optimizer(优化器,旧称 Teleprompter)自动搜索最佳 Prompt;最后通过 Compile(编译)把优化结果固化成可直接部署的程序。这些模块拼装起来,就是前文说的“模型程序” $f_\theta$。

优化器不只会改指令措辞,还会调整示例选择、模块顺序,甚至多步任务中每一步的提示方式。每一版候选都会在验证集上跑一遍,用平均分决定是否保留。公式化地看,DSPy 的整个优化过程就是:

你只需声明“我要一道酸甜口的鱼”,剩下几十次试做和微调全部自动化。代价是你要准备足够好的“品鉴标准”——评估集质量直接决定机器人能优化到什么程度。

θ∗=arg⁡max⁡θ  1N∑i=1NScore(fθ(xi),  yi)\displaystyle \theta^* = \arg\max_{\theta} \; \frac{1}{N} \sum_{i=1}^{N} \text{Score}\big(f_\theta(x_i),\; y_i\big)
通俗说明:在 N 道评测菜上,逐一品尝机器人按当前配方做出的成品,打分取平均;然后继续调整配方参数,直到平均分不再上升。
  1. 输入与标准答案第 i 个测试问题的输入 $x_i$ 和期望输出 $y_i$,相当于“任务描述 + 标准成品”。
    (xi,  yi)(x_i,\; y_i)
  2. 模型程序模块与 Prompt 组成的完整流程对输入的处理结果,$\theta$ 代表当前配方参数。
    fθ(xi)f_\theta(x_i)
  3. 评分函数衡量生成结果与标准答案的匹配程度,可以是规则校验或大模型裁判打分。
    Score(fθ(xi),  yi)\text{Score}\big(f_\theta(x_i),\; y_i\big)
  4. 求平均把全部测试用例的分数加总取平均,代表整套配方的综合水平。
    1N∑i=1NSi\frac{1}{N} \sum_{i=1}^{N} S_i
  5. 最优参数在参数空间中搜索平均分最高的那组配置,得到最终优化结果。
    θ∗=arg⁡max⁡θ\theta^* = \arg\max_{\theta}

三、LangSmith核心机制:全流程监控与人工复盘

监控厨房不替你颠勺,但它把一切都记录在案:每道菜的备料时长、腌制克数、下锅火候、客人评价、后厨损耗,全部量化归档。出问题了,你翻回放立刻能定位是“腌制时间太短”还是“收汁太猛”。

LangSmith 的核心能力一一对应:链路追踪(Traces)记录一次请求从入口到每个 LLM 调用、工具调用的完整链路,包含延迟、token 消耗和成本;数据集管理(Datasets)让你把线上 bad case 沉淀成回归测试集;评估器(Evaluators)支持自动打分和人工标注;在线对比则把新旧两版 Prompt 放在同一批输入上并排跑分。

每次评估结果同样可以量化成平均分。评估器可以用大模型裁判、规则校验或人工标注,把“这版 Prompt 好不好”变成一个可比较的数值:

但 LangSmith 最关键的一步在“分数之后”:分数低只是个信号,真正的改进动作——把“很抱歉”改成“感谢您的反馈,我们来解决”——依然由你根据 trace 回放来拍板。监控不替你做菜,但让你每一次调整都有据可依。

Score=1N∑i=1NEval(y^i,  yi)\displaystyle \text{Score} = \frac{1}{N} \sum_{i=1}^{N} \text{Eval}\big(\hat{y}_i,\; y_i\big)
通俗说明:把 N 个测试问题分别交给当前 Prompt 处理,用评估器逐个打分,再取平均,得到这版 Prompt 的质量基线。
  1. 预测输出当前 Prompt 在测试问题 i 上生成的回答,是评估的对象。
    y^i=LLMprompt(xi)\hat{y}_i = \text{LLM}_{\text{prompt}}(x_i)
  2. 标准答案该问题期望的正确回答,来自人工标注或线上优质样本。
    yiy_i
  3. 评估器大模型裁判、规则匹配或人工评分,输出 0~1 或 0~100 的分值。
    Eval(y^i,  yi)\text{Eval}\big(\hat{y}_i,\; y_i\big)
  4. 质量基线N 条结果的平均值,作为该版本 Prompt 质量的量化基线。
    1N∑i=1NSi\frac{1}{N}\sum_{i=1}^{N} S_i

四、优化效果对比:自动与人工的账本

自动厨师和监控厨房到底哪个更划算?这要算一笔账。自动厨师跑得快,但每次试做都要真金白银买食材;监控厨房省食材,但每道菜都需要师傅投入工时去复盘。

自动化收益方面,DSPy 在评估集明确的前提下,能以很低的边际成本探索几十上百个 Prompt 变体,避免凭感觉拍脑袋;人工可控性方面,LangSmith 全链路透明,每一步改动都有 trace 依据,在合规审查和团队评审时更有说服力。

迭代成本方面,DSPy 的编译过程会消耗额外 token 和计算资源,LangSmith 的隐性开销则是工程师的工时;效果衡量方面,两者都高度依赖评估集质量——评估集不准,优化方向就会跑偏。用一张 ROI 公式可以把这笔账算得更清楚:

账算明白,选型就不纠结:预算充足、追求规模化自动提升的团队可以押注 DSPy;人力充足、追求透明可控的团队更适合 LangSmith。而聪明的餐厅,通常两样都装。

ROI=ΔQΔT+ΔC\displaystyle \text{ROI} = \frac{\Delta Q}{\Delta T + \Delta C}
通俗说明:收益是效果提升量,成本等于人工时间加上计算开销。DSPy 的时间成本小但计算成本大,LangSmith 时间成本大但计算成本小。
  1. 效果提升优化前后评估分数的差值,代表改进步幅。
    ΔQ=Qafter−Qbefore\Delta Q = Q_{\text{after}} - Q_{\text{before}}
  2. 时间成本工程师介入的总工时,包括分析、标注、评审。
    ΔT\Delta T
  3. 计算成本token 消耗和编译耗时等机器开销。
    ΔC\Delta C
  4. 投入产出比分子分母的相对大小,决定了当前阶段哪条路径更划算。
    ROI=ΔQΔT+ΔC\text{ROI} = \frac{\Delta Q}{\Delta T + \Delta C}

五、工程集成生态:厨房设备怎么搭配

厨房里从来不缺设备,缺的是能互相配合的设备。自动机器人和监控系统完全可以装在同一间后厨,关键看接口通不通、数据合不合。

工程集成上,DSPy 是框架无关的轻量 Python 库,可以对接 OpenAI、Anthropic、本地私有化模型等各类推理后端;LangSmith 原生与 LangChain 深度集成,也提供 SDK 接入其他框架。DSPy 的所有 Prompt 和模块以代码形式存在,天然进入 Git 做版本管理;LangSmith 的共享 trace 链接则方便团队异步评审、bad case 归档。部署上,DSPy 编译产物就是普通 Python 程序,可部署在任何推理环境;LangSmith 以 SaaS 或自托管方式作为外部观测系统运行。

LangSmith 的链路追踪会把一次请求的总耗时拆成各环节明细,帮你精准定位瓶颈。这个“拆解”背后的逻辑很简单:总耗时就等于检索、模型推理、后处理三段时间之和,哪一段异常加长,trace 面板上立刻现形:

两台设备各司其职:DSPy 在开发期快速迭代出“好配方”,LangSmith 在生产期盯着“出品质量和成本”。接口打通之后,1+1 的效果远大于二选一。

Ttotal=Tret+Tllm+Tpost\displaystyle T_{\text{total}} = T_{\text{ret}} + T_{\text{llm}} + T_{\text{post}}
通俗说明:一次问答的总耗时等于检索、大模型推理、输出后处理三段时间之和,trace 面板会把这三个数字一格格列出来。
  1. 检索耗时向量数据库或外部工具调用占用的时间。
    TretT_{\text{ret}}
  2. 模型耗时大模型生成回复的时长,随输出 token 数增长。
    TllmT_{\text{llm}}
  3. 后处理耗时输出解析、格式化或校验的耗时。
    TpostT_{\text{post}}
  4. 总耗时求和三段时间相加,与观测到的端到端延迟互相印证。
    Ttotal=Tret+Tllm+TpostT_{\text{total}} = T_{\text{ret}} + T_{\text{llm}} + T_{\text{post}}

六、选型决策指南:你的厨房需要哪种方案

回到开头的厨房。到底请自动机器人还是装监控?经验丰富的餐厅会从四个问题出发:店面多少桌(项目规模)、师傅什么水平(团队能力)、你最怕什么事故(需求优先级)、以及——能不能两个都要(混合使用)。

项目规模上,少量固定 Prompt 用 LangSmith 人工调即可;几十上百个动态 Prompt、频繁更换策略时,DSPy 的自动化才能覆盖搜索空间。团队技术栈上,Python 工程化能力强、有评估经验的团队上手 DSPy 很快;没有专职 LLM 工程师的团队,先用 LangSmith 的可视化界面建立认知更稳妥。需求优先级上,追求极限效果且评估集完善,选 DSPy;追求逻辑可解释、过程可审计,选 LangSmith。混合使用上,目前最主流的打法是用 DSPy 自动优化导出最佳 Prompt,再接入 LangSmith 做生产监控和回归。

如果多个维度难以取舍,可以把选型量化成加权打分:对每个候选工具,把“自动化程度、可控性、成本”三个维度的得分按你的权重加权求和,总分高者胜出。

没有“最好的工具”,只有“最适合当前阶段”的组合。先小步验证,再用数据说话——这和做菜的道理一模一样:盐放多少,尝了才知道。

Tool∗=arg⁡max⁡t∈{DSPy, LangSmith}∑j=13wj⋅stj\displaystyle \text{Tool}^* = \arg\max_{t \in \{\text{DSPy},\, \text{LangSmith}\}} \sum_{j=1}^{3} w_j \cdot s_{tj}
通俗说明:对每个候选工具,把“自动化程度、可控性、成本”三个维度的得分按你的权重加权求和,总分最高的就是当前阶段的最优选择。
  1. 候选集合参与评分的候选工具,这里是 DSPy 和 LangSmith。
    t∈{DSPy, LangSmith}t \in \{\text{DSPy},\, \text{LangSmith}\}
  2. 维度得分工具 t 在第 j 个维度上的评分,例如 1 到 5 分。
    stj,j=1,2,3s_{tj}, \quad j = 1,2,3
  3. 权重归一按项目阶段分配给各维度的重视程度,三者之和为 1。
    w1+w2+w3=1w_1 + w_2 + w_3 = 1
  4. 加权择优选加权总分最高的工具作为决策结果。
    Tool∗=arg⁡max⁡t∑jwj⋅stj\text{Tool}^* = \arg\max_{t} \sum_{j} w_j \cdot s_{tj}

AI 应用场景

场景一:电商客服 Prompt 批量自动优化

阶段:Prompt 开发与自动优化

解决的问题:电商客服有成百上千个意图分类和多轮话术 Prompt,靠人工逐条调试效率极低,且不同运营团队写出的 Prompt 风格不一、效果参差。用 DSPy 把意图分类写成模块化程序,自动搜索最优指令和示例,把“调 Prompt”变成“跑编译”。

具体案例:某电商团队把 30 个客服意图分类任务封装成 DSPy 模块,用一周沉淀的 2000 条标注数据做评估集。编译结果平均准确率从 78% 提升到 91%,并且每次业务规则变化,只需更新评估集重新编译,不再需要逐条手改提示词。

场景二:RAG 系统生产质量监控与回归

阶段:部署与可观测

解决的问题:RAG 应用上线后,知识库更新、模型版本切换都可能导致回答质量悄悄退化,只知道“看起来不对”却找不到证据。LangSmith 的 trace 能把检索命中、模型回复、成本延迟拆开看,配合在线评估器自动报警。

具体案例:某法律问答产品接入 LangSmith 后,发现“知识库检索为空”导致的错误回答占比高达 12%。通过 trace 定位到查询改写 Prompt 对长句拆分不佳,人工调整后该比例降到 2%,并将该 case 沉淀为回归测试集永久监控。

场景三:开发期自动优化 + 生产期监控的组合拳

阶段:全链路(开发到生产)

解决的问题:单用 DSPy 缺少生产视角,单用 LangSmith 缺少自动化手段。组合使用才能兼顾“优化效率”和“交付质量”,这正是“自动厨师 + 监控厨房”的完整形态。

具体案例:某智能文档助手团队建立固定节奏:每周一用 DSPy 对候选 Prompt 批量编译优化;周三将最优版本部署上线,由 LangSmith 的评估器在线上流量中抽样打分;周五人工根据 trace 和分数决定定版或回滚。三个月内回答好评率稳定提升 15%。

Python 演示

python53 行
import random EXAMPLES = [    ("今天订单什么时候到", "您好, 您的订单预计明天送达。"),    ("怎么申请退货", "您好, 请在订单页面点击退货申请。"),] CANDIDATES = [    "你是一个客服机器人, 请简洁回答用户问题。",    "你是金牌客服, 回复要友好、专业、条理清晰。",    "你先共情用户, 再给出可操作的解决方案。",] def eval_prompt(prompt, query, expected):    """模拟评估器: 关键词命中越多, 得分越高"""    keywords = ["您好", "订单", "退货", "申请", "送达", "页面"]    hit = sum(1 for w in keywords if w in prompt + expected)    score = 0.4 + hit * 0.08    return min(score + random.uniform(0, 0.1), 1.0) def dspy_style(examples, rounds=5):    """模拟DSPy风格: 自动搜索候选并保留最优"""    best_prompt, best_score = None, 0.0    for i in range(rounds):        prompt = random.choice(CANDIDATES)        scores = [eval_prompt(prompt, q, e) for q, e in examples]        avg = sum(scores) / len(scores)        print(f"第{i+1}轮候选平均分: {avg:.2f}")        if avg > best_score:            best_prompt, best_score = prompt, avg    return best_prompt, best_score def langsmith_style(examples, traces):    """模拟LangSmith风格: 基于追踪结论人工迭代"""    final_prompt, final_score = None, 0.0    for i, prompt in enumerate(traces):        scores = [eval_prompt(prompt, q, e) for q, e in examples]        avg = sum(scores) / len(scores)        print(f"第{i+1}次人工调整平均分: {avg:.2f}")        if avg > final_score:            final_prompt, final_score = prompt, avg    return final_prompt, final_score def main():    print("=== DSPy 风格: 自动搜索最优 Prompt ===")    p1, s1 = dspy_style(EXAMPLES)    print(f"最优 Prompt: {p1}\n最高分: {s1:.2f}\n")    print("=== LangSmith 风格: 人工追踪迭代 ===")    p2, s2 = langsmith_style(EXAMPLES, CANDIDATES[:2])    print(f"最终 Prompt: {p2}\n最终分: {s2:.2f}") if __name__ == "__main__":    main()
目的:用同一批客服问答样例,分别模拟 DSPy 的自动搜索式优化和 LangSmith 的追踪驱动式人工迭代,直观对比两种思路的迭代节奏与结果。
  1. EXAMPLES = [两条客服问答样例,充当“评估集”;没有它,两种优化都无从打分
  2. def eval_prompt(prompt, query, expected):定义简易评估器:关键词命中越多,得分越高,对应正文中的 Score 函数
  3. prompt = random.choice(CANDIDATES)自动搜索时随机抽取一个候选配方,模拟优化器遍历搜索空间
  4. avg = sum(scores) / len(scores)计算一组样例的平均分,对应公式中的 1/N 求和
  5. if avg > best_score:保留历史最高分,模拟优化器的择优逻辑
  6. print(f"第{i+1}轮候选平均分: {avg:.2f}")输出每轮得分,让自动优化过程“可观测”
  7. if __name__ == "__main__":保证脚本既可被其他模块导入,也可直接运行

常见误区

误区把任务丢给 DSPy 就等着收结果,觉得连模块拆分、评估集、签名都不用自己设计,机器会全部搞定。

正解被自动化的只是 Prompt 文本的搜索和更新。模块怎么拆、输入输出签名怎么写、评估集怎么标,仍然依赖人的设计。它更像“自动帮你试配方”,但“做酸甜口还是麻辣口”的方向还是你来定。评估集质量差,自动优化的结果就是“在错误的目标上精益求精”。

为何常见:“自动优化”四个字太有吸引力,宣传材料又突出零人工,容易让人忽略前置设计成本。

误区打开 LangSmith 全是 trace 列表,觉得它只是比 print 日志好看一点的可视化工具,价值有限。

正解链路追踪只是入口。LangSmith 还包含数据集版本管理、批量回归测试、在线评估器、延迟与成本告警,是覆盖开发、测试、生产全生命周期的 LLM 应用平台。把它当日志面板,相当于把整个厨房监控系统当成一个摄像头。

为何常见:新手最容易接触的就是 trace 浏览界面,其他功能藏在菜单深处,容易以偏概全。

误区对比文章看多了,把两者当成同一赛道互相替代的产品,选型时必须分出个你死我活。

正解一个管“开发期自动优化”,一个管“全链路可观测调试”,职能不同、阶段互补。DSPy 优化后的应用照样可以接入 LangSmith 做生产监控;LangSmith 沉淀的 bad case 反过来可以丰富 DSPy 的评估集。它们是厨具和监控的关系,不是微波炉和烤箱的关系。

为何常见:工具对比类文章天然制造“二选一”的叙事,忽略了使用阶段和使用场景的差异。

误区机器穷举了几十个变体,得分又更高,那专家经验还有什么用?直接全自动就完事了。

正解自动优化的上限取决于评估集质量和模块设计。评估集有偏、指标单一,机器就会“刷题式”过拟合;而业务约束、安全合规、用户体验这类软指标很难写进评分函数。人工经验的价值恰恰在这些评分函数覆盖不到的地方。

为何常见:把“自动”等同于“更优”,忽略了目标函数本身由人定义,机器只是在目标函数内做局部搜索。

误区觉得 DSPy 只是换个措辞,LangSmith 只是看文本日志,跟工程指标没关系。

正解DSPy 的优化维度包括指令措辞、示例选择、模块编排甚至多步推理路径;LangSmith 的评估覆盖准确率、召回率、延迟、token 成本、错误率等工程指标。两边的“优化”和“观测”都远超纯文本范畴。

为何常见:工具名字带“Prompt“和”Debug”,让人误以为它们只在文本层面工作,忽略了完整的程序化能力。

面试题

Q1. DSPy 最核心的设计理念是什么?

单选题 · easy

  • A.以追踪日志辅助调试
  • B.程序化声明与自动优化← 正确答案
  • C.人工逐条修改提示词
  • D.强化学习微调大模型

答案:B。DSPy 把 Prompt 工程变成“声明输入输出 + 优化器自动搜索”,本质是程序化自动优化。A 是 LangSmith 的路线,C 是传统手工调参,D 属于模型微调范畴,都不是 DSPy 的设计理念。

Q2. LangSmith 的核心定位是什么?

单选题 · easy

  • A.自动改写Prompt的编译器
  • B.LLM应用调试与观测平台← 正确答案
  • C.大模型微调训练工具库
  • D.向量检索引擎类插件库

答案:B。LangSmith 提供链路追踪、数据集管理、在线评估和监控告警,是 LLM 应用的可观测与调试平台。A 是 DSPy 优化器的形象说法,C、D 与 LangSmith 的定位无关。

Q3. DSPy 中的“签名”(Signature)指的是什么?

单选题 · easy

  • A.输入输出字段声明← 正确答案
  • B.模型加密密钥文件
  • C.用户登录凭证信息
  • D.API鉴权参数配置

答案:A。签名用声明式语法描述输入字段和输出字段,是 DSPy 模块与优化器之间沟通的“接口契约”。B、C、D 都是字面意义的“签名/凭证”,与 DSPy 无关。

Q4. DSPy 优化器(Optimizer)的主要作用是什么?

单选题 · mid

  • A.记录调用延迟消耗
  • B.人工标注错误案例
  • C.自动搜索更新Prompt← 正确答案
  • D.生成可视化报表

答案:C。优化器会生成候选指令、调整示例并评估打分,自动更新 Prompt 以提升平均分。A、D 是观测平台的能力,B 是人工评估流程的一部分,都不是优化器的职责。

Q5. LangSmith 提供的核心能力包括哪些?

多选题 · mid

  • A.追踪LLM调用完整链路← 正确答案
  • B.管理数据集批量测试← 正确答案
  • C.自动改写Prompt文本
  • D.在线评估回归对比← 正确答案

答案:ABD。追踪、数据集管理、在线评估回归都是 LangSmith 的核心能力;C 是 DSPy 优化器做的事,LangSmith 定位是观测与调试,不会自动改写 Prompt。

Q6. 以下哪种场景更适合选择 LangSmith 而不是 DSPy?

单选题 · mid

  • A.需要透明可控人工决策← 正确答案
  • B.大量Prompt变体自动搜索
  • C.追求最少人工介入
  • D.已有自动化评估管线

答案:A。LangSmith 强调“把问题看清楚,由人来做决定”,适合透明可控、过程可审计的场景。B、C 恰恰是 DSPy 自动化的优势场景;D 是 DSPy 的依赖条件,不是选 LangSmith 的理由。

Q7. 关于 DSPy 与 LangSmith 的组合使用,下列说法正确的有?

多选题 · hard

  • A.DSPy优化后接入监控← 正确答案
  • B.评估数据指导设计← 正确答案
  • C.两者只能二选一
  • D.优化结果不可追踪

答案:AB。DSPy 产出的应用可以接入 LangSmith 做生产监控,LangSmith 沉淀的 bad case 也能反哺 DSPy 的评估集,两者天然互补。C、D 把两者对立起来,不符合工程实践。

Q8. DSPy 优化目标中“模型程序 f_θ”指的是什么?

单选题 · hard

  • A.大模型权重与参数量
  • B.声明模块与模型调用组合体← 正确答案
  • C.训练数据集的分布律
  • D.评估指标的设定方案

答案:B。f_θ 是由签名、模块、Prompt 模板和模型调用组合而成的完整程序,θ 是它的可调配置。A 是模型微调的对象,C 是数据集属性,D 是评测设计,均不符合 f_θ 的含义。

Q9. 关于 DSPy 与 LangSmith 的迭代成本,下列说法正确的有?

多选题 · mid

  • A.DSPy省人力耗更多计算← 正确答案
  • B.LangSmith几乎不耗资源
  • C.DSPy编译需要评估集← 正确答案
  • D.LangSmith无法跟踪线上

答案:AC。DSPy 用 token 和计算换人力,编译必须有评估集做基准;LangSmith 的隐性成本是工程师工时,且能跟踪线上流量。B 忽略了 LangSmith 同样消耗算力,D 与事实相反。

Q10. 团队既要自动优化效果,又要保证生产可观测,最合理的方案是?

单选题 · hard

  • A.只用DSPy放弃生产监控
  • B.只用LangSmith拒绝自动化
  • C.DSPy优化加LangSmith监控← 正确答案
  • D.放弃两者全部手工维护

答案:C。开发期用 DSPy 自动优化,部署期接入 LangSmith 做监控与回归,是目前工程界最主流的组合打法。A、B 都只覆盖单侧需求,D 退回手工时代,都不够合理。