Agent Skills:AI 智能体技能评估框架


基本信息


导语

Agent Skills 是大模型应用从“对话”走向“行动”的关键技术,它通过赋予模型调用外部工具的能力,显著提升了系统在复杂业务场景中的实用价值。本文将深入剖析 Agent Skills 的核心设计逻辑与落地难点,并结合实际案例探讨如何构建高效的工具调用体系。通过阅读,你将掌握一套可复用的技能设计方法论,为开发高可用、智能化的 Agent 应用提供参考。


评论

评价维度: 技术架构、行业趋势、工程落地


一、 核心观点与结构分析

中心观点: 文章《Agent Skills》主张构建智能体的核心不在于通用的底层大模型,而在于如何通过精细化的“技能”设计、编排与评估,将模型能力转化为解决复杂任务的垂直能力。

支撑理由:

  1. 能力解耦与专业化: LLM 是通用的概率推理引擎,而在特定垂直领域(如代码生成、数据分析)需要特定的工具调用逻辑和领域知识,将“技能”作为独立模块进行封装,符合软件工程的“分治”原则。
  2. 鲁棒性与可观测性: 单体 Agent 往往是黑盒,而基于技能的架构可以将复杂的任务拆解为可独立监控和调试的微服务,从而提高系统的整体稳定性。
  3. 迭代进化: 技能可以被独立优化、替换或增加,而无需重新训练整个模型,这符合当前 LLM Ops 的轻量级迭代趋势。

反例/边界条件:

  1. 过度碎片化的代价: 如果技能切分得过于细碎,会导致编排层的逻辑复杂度呈指数级上升,且跨技能的上下文传递可能会产生信息损耗。
  2. 端到端学习的潜力: 在某些高度依赖隐性推理或全局优化的场景下(如创意写作),人为拆解技能可能会破坏模型生成的连贯性和涌现能力。

二、 深度评价(基于六大维度)

1. 内容深度:观点的深度和论证的严谨性

  • 评价: 如果该文章聚焦于如何定义、测试和组合技能,则触及了当前 AI Agent 落地的深水区。它超越了简单的“Prompt Engineering”,转向了“System 2 Design”(系统2设计)。
  • 事实陈述: 目前业界(如 LangGraph, AutoGen)确实正在从单一 Prompt 向多节点编排转变。
  • 你的推断: 文章可能隐含了一个假设——技能是静态可组合的。但在实际中,技能往往具有动态性,文章若未讨论技能之间的冲突消解机制,其论证在严谨性上存在缺口。

2. 实用价值:对实际工作的指导意义

  • 评价: 极高。对于正在从 Demo 转向生产级应用的团队,文章提供了一种清晰的架构范式。
  • 结合案例: 在构建一个“财报分析 Agent”时,将“Excel读取”、“图表绘制”、“趋势总结”定义为独立技能,比让模型一次性完成所有工作要可靠得多。这直接指导了工程师如何进行 Error Handling(例如:Excel 读取失败不应导致整个 Agent 崩溃,只需重试该技能)。

3. 创新性:提出了什么新观点或新方法

  • 作者观点: 文章可能提出了“技能即代码”或“技能原子化”的概念。
  • 行业对比: 这并非全新概念,类似于面向对象编程(OOP)中的类或微服务架构。但其创新点在于将这一经典软件工程概念与 LLM 的非确定性推理相结合,提出了“半确定性半概率”的混合架构思路。

4. 可读性:表达的清晰度和逻辑性

  • 评价: 此类文章通常面临“概念抽象”的挑战。如果文章使用了具体的伪代码或架构图来展示技能的输入输出,则可读性强;如果仅停留在哲学层面的讨论,则容易显得空洞。

5. 行业影响:对行业或社区的潜在影响

  • 评价: 这篇文章可能成为“Agent 工程化”的指南。它预示着 AI 开发者的角色转变——从“调参侠”变为“技能架构师”。它可能会推动社区建立标准化的“技能库”或“技能市场”。

6. 争议点或不同观点

  • 争议点: 硬编码技能 vs. 动态规划。
    • 观点 A(文章倾向):人类专家预先定义好技能树,Agent 只是调用者。
    • 观点 B(端到端派):Agent 应该具备“元认知”,能够根据任务动态生成或学习新技能,而不是受限于人类预设的框架。
  • 你的推断: 文章可能低估了 LLM 在“技能选择”这一步的幻觉风险。如果 Router(路由层)选错了技能,后续执行再完美也是徒劳。

三、 实际应用建议与验证

实际应用建议

  1. 标准化接口: 在设计 Agent 技能时,强制要求每个技能拥有标准化的 Schema(输入参数、输出结果、错误码),以便于编排层管理。
  2. 技能库分层: 不要将所有技能平铺。建议分为“原子技能”(如 Google Search)和“复合技能”(如“市场调研”= Search + Summarize + Write Report)。
  3. 灰度发布: 技能的更新应该像软件版本管理一样,支持 A/B 测试,不要直接替换核心技能。

可验证的检查方式

  1. 指标:技能复用率
    • 定义: 统计不同任务流中,同一技能被调用的频率。
    • 验证: 如果复用率低,说明技能抽象粒度不对(过于定制化),需要

代码示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 示例1:获取Hacker News热门文章标题
import requests

def get_hn_top_stories(limit=5):
    """
    获取Hacker News当前热门文章标题
    :param limit: 需要获取的文章数量
    :return: 包含标题和链接的列表
    """
    # 获取热门文章ID列表
    url = "https://hacker-news.firebaseio.com/v0/topstories.json"
    response = requests.get(url)
    story_ids = response.json()[:limit]
    
    stories = []
    for story_id in story_ids:
        # 获取每篇文章的详细信息
        detail_url = f"https://hacker-news.firebaseio.com/v0/item/{story_id}.json"
        detail_response = requests.get(detail_url).json()
        stories.append({
            "title": detail_response.get("title"),
            "url": detail_response.get("url", f"https://news.ycombinator.com/item?id={story_id}")
        })
    
    return stories

# 测试调用
if __name__ == "__main__":
    for story in get_hn_top_stories():
        print(f"标题: {story['title']}")
        print(f"链接: {story['url']}\n")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 示例2:搜索Hacker News关键词
from datetime import datetime, timedelta

def search_hn_by_date(keyword, days=7):
    """
    搜索最近N天内包含特定关键词的文章
    :param keyword: 搜索关键词
    :param days: 搜索天数范围
    :return: 匹配的文章列表
    """
    # 获取最近的文章ID
    url = "https://hacker-news.firebaseio.com/v0/newstories.json"
    response = requests.get(url)
    story_ids = response.json()[:500]  # 取最近500篇
    
    threshold_time = datetime.now() - timedelta(days=days)
    matches = []
    
    for story_id in story_ids:
        detail_url = f"https://hacker-news.firebaseio.com/v0/item/{story_id}.json"
        detail_response = requests.get(detail_url).json()
        
        # 检查时间范围和关键词匹配
        if detail_response.get("time", 0) >= threshold_time.timestamp():
            title = detail_response.get("title", "").lower()
            if keyword.lower() in title:
                matches.append({
                    "title": detail_response.get("title"),
                    "url": detail_response.get("url", f"https://news.ycombinator.com/item?id={story_id}"),
                    "time": datetime.fromtimestamp(detail_response.get("time")).strftime("%Y-%m-%d")
                })
    
    return matches

# 测试调用
if __name__ == "__main__":
    for article in search_hn_by_date("AI", days=3):
        print(f"日期: {article['time']}")
        print(f"标题: {article['title']}")
        print(f"链接: {article['url']}\n")
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 示例3:获取Hacker News用户评论统计
def get_user_comment_stats(username):
    """
    获取指定用户的评论统计信息
    :param username: Hacker News用户名
    :return: 包含评论统计的字典
    """
    # 获取用户信息
    user_url = f"https://hacker-news.firebaseio.com/v0/user/{username}.json"
    user_data = requests.get(user_url).json()
    
    if not user_data:
        return {"error": "用户不存在"}
    
    # 获取最近100条评论
    comment_ids = user_data.get("submitted", [])[:100]
    stats = {
        "karma": user_data.get("karma", 0),
        "total_comments": len(comment_ids),
        "avg_comment_length": 0,
        "top_comment": None
    }
    
    total_length = 0
    max_score = -1
    
    for comment_id in comment_ids:
        comment_url = f"https://hacker-news.firebaseio.com/v0/item/{comment_id}.json"
        comment_data = requests.get(comment_url).json()
        
        if comment_data and comment_data.get("type") == "comment":
            text = comment_data.get("text", "")
            total_length += len(text)
            
            # 寻找得分最高的评论
            score = comment_data.get("score", 0)
            if score > max_score:
                max_score = score
                stats["top_comment"] = {
                    "text": text[:100] + "..." if len(text) > 100 else text,
                    "score": score
                }
    
    stats["avg_comment_length"] = total_length / stats["total_comments"] if stats["total_comments"] > 0 else 0
    return stats

# 测试调用
if __name__ == "__main__":
    stats = get_user_comment_stats("pg")
    print(f"Karma: {stats['karma']}")
    print(f"评论总数: {stats['total_comments']}")
    print(f"平均评论长度: {stats['avg_comment_length']:.1f} 字符")
    print(f"最高分评论: {stats['top_comment']['text']}")

案例研究

1:Cognition AI(Devin )

1:Cognition AI(Devin )

背景: Cognition AI 是一家专注于 AI 编程代理的初创公司,其产品 Devin 被称为世界上第一个 AI 软件工程师。在早期开发阶段,团队面临如何让 LLM(大语言模型)在复杂、真实且具有多步骤的软件工程任务中保持上下文连贯性和准确性的挑战。

问题: 传统的 LLM 往往在单轮对话中表现出色,但在需要长时间运行的软件工程任务(如修复 Bug、构建功能、端到端测试)中,模型容易产生幻觉或“迷失方向”。简单的 Prompt(提示词)工程无法让模型自主决定何时使用 shell 命令、何时编辑代码或如何调试错误。模型缺乏将高层意图分解为可执行的低级操作序列的能力。

解决方案: Cognition AI 构建了一个名为“Agent Skills”的架构体系。Devin 不仅仅是基于原始的 LLM,而是被赋予了一套明确的工具调用能力和规划机制。系统通过强化学习(RL)和专家演示,训练了特定的“技能”子模块。Devin 被设计为可以自主规划任务,并在一个安全的沙盒环境中(包含浏览器、代码编辑器和终端)反复执行这些技能。它能够根据当前的执行状态(如编译错误信息)动态调整下一步的行动,而不是一次性生成所有代码。

效果: Devin 能够在 Upwork 等自由职业平台上完成真实的软件工程任务。在实际测试中,它解决了 13.86% 的端到端软件工程问题,而之前的模型(如 GPT-4)仅能解决 1.74%。这种基于技能的代理架构使得 AI 能够处理复杂的长周期任务,显著提升了自动化编程的实用性和可靠性。


2:Rabbit Inc.(R1 与 Large Action Model)

2:Rabbit Inc.(R1 与 Large Action Model)

背景: Rabbit Inc. 是一家硬件初创公司,推出了便携式 AI 设备 Rabbit R1。他们的目标是通过自然语言界面取代传统的 APP 操作模式,让用户不再需要在手机屏幕上点击无数次的按钮来点咖啡、叫车或播放音乐。

问题: 现有的语音助手(如 Siri 或 Alexa)主要依赖与特定 API 的硬编码集成,扩展性差,且难以处理跨 APP 的复杂操作流程。对于成千上万个基于 Web 的服务,为每一个服务编写特定的 API 集成是不现实的。核心问题在于如何让 AI 理解并操作现有的图形用户界面(GUI),就像人类一样看屏幕并点击按钮。

解决方案: Rabbit 开发了一种“基于动作的模型”架构,本质上是一种基于 Agent Skills 的实现方式。他们没有依赖 API 密钥,而是训练了一个神经网络来观察现有的 APP 界面。通过“教学模式”,用户或演示者记录在特定应用(如 Uber 或 Spotify)中执行任务的交互过程。系统将这些交互过程学习为“技能”。当用户发出指令时,R1 会激活相应的技能,通过计算机视觉识别界面元素并模拟点击和输入,从而完成任务。

效果: Rabbit R1 在 CES 2024 上引起了巨大反响。通过这种基于技能的学习机制,设备成功实现了跨应用操作(例如,根据用户的语音指令,在 Spotify 搜索歌曲并播放,或者在 Uber 上预约车辆)。这证明了通过学习界面交互技能而非依赖 API 接口,可以构建一个更通用、更灵活的 AI 代理操作系统,极大地降低了用户操作数字服务的门槛。


3:Imbue(原 Generally Intelligent)

3:Imbue(原 Generally Intelligent)

背景: Imbue 是一家致力于构建具备推理能力的 AI 代理的公司,专注于让 AI 能够编写代码并解决复杂的实际问题。他们获得了数亿美元的融资,旨在解决 AI 在实际工作流中“不够聪明”的问题。

问题: 虽然现代 LLM 可以编写简单的代码片段,但在处理需要多步推理、逻辑纠错和自我调试的复杂任务时,表现往往不佳。例如,在处理数据清洗、分析或编写复杂的游戏逻辑时,模型经常会因为一个小的错误而失败,且缺乏自主修复的能力。仅仅增加模型参数规模并不能解决这种逻辑推理和工具使用的鲁棒性问题。

解决方案: Imbue 专注于开发能够进行深度推理的“Agent Skills”。他们构建了一个专门的训练流程,不仅训练模型生成代码,更重要的是训练模型具备“元认知”能力——即知道自己在何时可能出错了,并调用相应的调试技能。他们构建了包含数百万个合成任务的数据集,专门用于训练代理在遇到错误时的自我修正和工具使用策略。这种架构将“推理”作为核心技能,配合代码解释器作为工具,使代理能够在更长的上下文窗口中保持逻辑一致性。

效果: Imbue 的代理在编写功能性代码和解决复杂逻辑谜题方面的表现显著优于通用的 GPT-3.5 模型。在内部基准测试中,他们优化的代理在处理需要 10 步以上推理的任务时,成功率远超基线模型。这表明,通过专门训练推理和自我修正的技能,AI 代理可以在实际的生产环境中承担更复杂、更关键的决策任务,而不仅仅是简单的文本生成。


最佳实践

最佳实践指南

实践 1:基于 LLM 的工具调用能力

说明:
利用大语言模型(LLM)的理解和推理能力,让 Agent 能够根据上下文自动选择并调用合适的工具或 API。这需要模型能够理解工具的描述、参数要求以及返回结果的含义。

实施步骤:

  1. 为每个工具编写清晰的描述文档,包括功能、输入参数和输出格式
  2. 设计标准化的工具调用接口,确保模型能正确解析和执行
  3. 实现工具调用结果的反馈机制,让模型能根据结果决定下一步操作

注意事项:

  • 工具描述应简洁明了,避免歧义
  • 需要处理工具调用失败的情况,设计重试或降级策略
  • 注意工具调用的权限和安全性控制

实践 2:多步骤推理与规划

说明:
Agent 应具备将复杂任务分解为多个子任务的能力,并能够按照逻辑顺序执行这些子任务。这需要模型具备强大的推理能力和上下文记忆能力。

实施步骤:

  1. 设计任务分解机制,将复杂问题拆解为可管理的步骤
  2. 实现执行状态的跟踪和管理,确保每一步都能正确完成
  3. 建立步骤间的依赖关系处理,支持动态调整执行计划

注意事项:

  • 避免过度分解导致效率低下
  • 需要处理步骤执行失败的情况,支持回滚或跳过
  • 考虑并行执行独立步骤的可能性

实践 3:上下文记忆管理

说明:
Agent 需要维护对话历史和任务执行状态,以便在多轮交互中保持连贯性。这包括短期记忆(当前对话)和长期记忆(历史经验和知识)。

实施步骤:

  1. 设计记忆存储结构,区分不同类型的信息(对话历史、任务状态、用户偏好等)
  2. 实现记忆检索机制,根据当前任务需求提取相关信息
  3. 建立记忆更新策略,确保重要信息被正确保存

注意事项:

  • 控制记忆大小,避免上下文窗口溢出
  • 实现记忆的优先级管理,确保关键信息不被覆盖
  • 考虑隐私保护,避免存储敏感信息

实践 4:错误处理与恢复

说明:
Agent 应具备识别错误、分析原因并采取恢复措施的能力。这包括对工具调用失败、数据解析错误、逻辑冲突等问题的处理。

实施步骤:

  1. 建立全面的错误分类体系,明确不同错误类型的处理策略
  2. 实现自动重试机制,对临时性错误进行自动恢复
  3. 设计降级方案,在无法完全恢复时提供替代解决方案

注意事项:

  • 避免无限重试导致资源浪费
  • 记录错误日志,便于后续分析和优化
  • 向用户透明地报告错误状态和恢复进展

实践 5:人类协作与反馈

说明:
在关键决策或不确定情况下,Agent 应能主动寻求人类介入。同时,通过人类反馈不断优化 Agent 的行为和决策能力。

实施步骤:

  1. 定义需要人类介入的触发条件(如高风险操作、置信度低等)
  2. 设计清晰的人机交互界面,便于人类理解和干预
  3. 建立反馈收集机制,将人类决策转化为学习样本

注意事项:

  • 平衡自动化程度和人工干预频率
  • 确保人类反馈的及时性和准确性
  • 保护人类操作者的隐私和安全

实践 6:安全与合规控制

说明:
Agent 的行为必须符合安全规范和法律法规要求,包括数据隐私保护、操作权限控制、有害内容过滤等。

实施步骤:

  1. 建立权限管理体系,限制 Agent 的操作范围
  2. 实现内容过滤机制,防止生成有害或违规内容
  3. 设计审计日志,记录所有关键操作和决策过程

注意事项:

  • 定期审查和更新安全策略
  • 考虑不同地区的法规差异
  • 平衡安全性与功能性,避免过度限制

实践 7:性能监控与优化

说明:
持续监控 Agent 的性能指标,包括响应时间、成功率、资源消耗等,并根据监控数据进行针对性优化。

实施步骤:

  1. 定义关键性能指标(KPI),建立监控仪表板
  2. 实现日志收集和分析系统,识别性能瓶颈
  3. 建立优化迭代流程,持续改进 Agent 表现

注意事项:

  • 避免过度优化导致系统复杂化
  • 考虑成本效益比,优先优化高影响领域
  • 保持监控系统的轻量级,避免影响 Agent 性能

学习要点

  • 基于Hacker News关于Agent Skills的讨论,以下是5个关键要点:
  • 将复杂任务分解为可管理的子任务并逐个击破,是构建高可靠性Agent系统的核心架构原则。
  • 赋予Agent文件系统访问权限和代码执行能力,能显著扩展其解决实际问题的边界。
  • 在Agent工作流中集成人工反馈环节,是确保输出质量并防止系统失控的最有效安全机制。
  • 采用思维链提示策略,能大幅提升Agent在处理多步推理任务时的逻辑准确性。
  • 优先使用轻量级模型处理常规任务,仅在必要时调用昂贵的大模型,是实现成本效益最大化的关键。

常见问题

1: 什么是 Agent Skills,它与传统的 AI 助手有何不同?

1: 什么是 Agent Skills,它与传统的 AI 助手有何不同?

A: Agent Skills(智能体技能)是指自主智能体所具备的特定能力或工具集。与传统的 AI 助手(主要基于预设的对话逻辑或单一的语言模型生成能力)不同,具备 Agent Skills 的智能体通常具有更强的自主性和交互性。它们不仅能理解自然语言,还能利用特定的“技能”来执行复杂任务,例如调用外部 API、操作软件、检索实时信息或编写代码。Agent Skills 赋予了 AI 智能体“动手”的能力,使其能够跨越单一的信息咨询范畴,直接完成用户的实际目标。

2: 开发 Agent Skills 的主要技术栈和工具有哪些?

2: 开发 Agent Skills 的主要技术栈和工具有哪些?

A: 开发 Agent Skills 的生态系统正在快速发展,目前主流的技术栈和工具通常包括以下几个层面:

  1. 编排框架:如 LangChain、LangGraph、Microsoft Semantic Kernel 或 AutoGen。这些框架帮助开发者定义智能体的行为逻辑、技能调用顺序以及记忆管理。
  2. 大语言模型:作为智能体的“大脑”,通常使用 GPT-4、Claude 3.5 或 Llama 3 等高性能模型来规划任务和解析意图。
  3. 工具集成:开发者通常通过 Function Calling(函数调用)或 API 将特定技能(如数据库查询、邮件发送、文件操作)挂载到智能体上。
  4. 评估与测试平台:如 Promptfoo 或 Arize,用于测试技能调用的准确性和稳定性。

3: 如何确保 Agent Skills 在执行任务时的安全性?

3: 如何确保 Agent Skills 在执行任务时的安全性?

A: 赋予智能体执行技能的能力会带来新的安全风险,因此必须采取严格的防护措施:

  1. 权限最小化:智能体在执行技能时应仅拥有完成任务所需的最小权限,避免给予其 unrestricted 的系统访问权。
  2. 人工确认机制:对于高风险操作(如删除文件、发送邮件或执行资金交易),应设置“人在回路”机制,要求人工审核确认后才能执行。
  3. 输入输出验证:在将数据传递给敏感技能之前,严格验证参数格式和内容,防止提示注入攻击。
  4. 沙箱环境:尽可能在隔离的容器或沙箱环境中运行代码类技能,防止影响宿主系统。

4: Agent Skills 在实际业务场景中有哪些具体应用?

4: Agent Skills 在实际业务场景中有哪些具体应用?

A: Agent Skills 的应用非常广泛,主要集中在需要自动化处理复杂流程的场景中:

  1. 研发辅助:智能体可以使用代码编写与调试技能,自动修复 Bug 或重构代码库。
  2. 客户服务:结合订单查询和 CRM 操作技能,智能体不仅能回答问题,还能直接帮用户办理退款、修改地址或升级套餐。
  3. 数据分析:具备 SQL 和 Python 分析技能的智能体,可以根据自然语言指令自动查询数据库并生成可视化图表。
  4. 企业办公:智能体可以调用日历、邮件和文档工具,自动安排会议、起草纪要或整理报告。

5: 处理 Agent Skills 调用失败或错误的最佳实践是什么?

5: 处理 Agent Skills 调用失败或错误的最佳实践是什么?

A: 由于 Agent Skills 依赖外部系统,错误处理是构建鲁棒系统的关键:

  1. 自我修正与重试:设计智能体在遇到错误时,能够分析错误信息并尝试修正参数后重新调用技能,而不是立即报错停止。
  2. 清晰的错误反馈:当技能无法执行时,智能体应将技术错误转化为用户可理解的自然语言解释,并给出替代方案。
  3. 回退策略:如果某个技能不可用(例如 API 挂了),智能体应具备逻辑判断能力,尝试使用备用工具或告知用户稍后再试。
  4. 日志记录:详细记录技能调用的上下文和失败原因,以便开发者进行后续的调试和优化。

6: 未来 Agent Skills 的发展趋势是什么?

6: 未来 Agent Skills 的发展趋势是什么?

A: 未来的 Agent Skills 发展将呈现以下趋势:

  1. 多智能体协作:不再依赖单一全能智能体,而是多个具备不同专业技能的智能体(如一个专门写代码,一个专门做数据分析)协同工作。
  2. 动态技能发现:智能体将能够根据任务需求,自动在网络上寻找、学习并调用它原本不具备的新技能或 API。
  3. 标准化协议:类似于互联网的 TCP/IP,智能体之间交换技能和服务的协议将逐渐标准化,形成“技能市场”或“智能体应用商店”。
  4. 端侧运行:为了隐私和速度,部分 Agent Skills 将直接在用户的本地设备(手机或 PC)上运行,而非完全依赖云端。

思考题

## 挑战与思考题

### 挑战 1: [简单]

问题**: 设计一个 Agent,能够根据用户输入的自然语言查询(例如 “今天比特币的价格”),自动选择并调用正确的 API 工具(如加密货币 API 或天气 API)来获取结果。要求 Agent 能够处理 API 调用失败的情况,并返回友好的错误提示。

提示**: 考虑使用函数调用或工具绑定的方式。你需要定义一组工具的描述,让 LLM 根据用户意图匹配。对于错误处理,可以设计一个反馈循环,让 LLM 在收到错误代码后重新生成回复或告知用户具体原因。


引用

注:文中事实性信息以以上引用为准;观点与推断为 AI Stack 的分析。



站内链接

相关文章