提升 LLM 推理能力:CoT, ReAct, ToT

特性 CoT (Chain-of-Thought) ReAct (Reasoning and Acting) ToT (Tree-of-Thoughts)
中文名称 思维链 推理与行动 思维树
核心思想 引导模型生成中间推理步骤,模仿人类逐步思考。 结合内部推理与外部工具交互,获取并利用额外信息。 允许模型同时探索多个不同的推理路径,形成树状结构,并进行评估和选择。
工作方式 在提示中展示逐步推理的示例,引导模型按步骤思考并输出过程。 模型交替进行:
1. 思考 (Thought): 分析情况,规划行动。
2. 行动 (Action): 调用外部工具(如搜索)。
3. 观察 (Observation): 获取行动结果。
1. 生成多个想法: 每一步产生多个可能的思路。
2. 评估想法: 对各思路进行可行性 / 潜力评估。
3. 搜索策略: 使用如 BFS(广度优先搜索) 或 DFS(深度优先搜索) 探索思路树,可回溯。
主要优点 - 提高复杂推理能力
- 增强可解释性,理解模型思路
- 处理知识密集型任务(获取外部知识)
- 减少信息幻觉
- 动态适应环境反馈
- 解决更复杂、探索性强的问题
- 提高规划和决策能力
- 支持回溯,增强鲁棒性
简单比喻 让模型“多想几步”,把思考过程写出来。 让模型边“想”边“做”(例如上网查资料)。 让模型同时“想”多种可能性,像走迷宫一样尝试不同路径,并选择最优的。

Anthropic: 构建有效的AI智能体

🤯 最近看了Anthropic关于如何构建高效AI智能体的文章,简直是醍醐灌顶!💡 原来最成功的秘诀不是堆砌复杂技术,而是简单可组合的模式!

Anthropic的大佬们和超多团队合作后发现,很多时候我们并不需要“全自动”的智能体,理解不同模式的适用场景超重要!

👇 先搞清楚俩概念:

  • 工作流 (Workflow): 就像搭积木🧱,是预设好的、一步步执行的LLM和工具协调流程。适合任务清晰固定的场景。
  • 智能体 (Agent): 像有个聪明的小脑袋🧠,LLM自己决定怎么走、用什么工具、怎么完成任务。适合需要灵活应变、动态决策的复杂场景。

🌟 什么时候用,什么时候不用?

别一上来就想搞个超级Agent! Anthropic建议从最简单的方案开始:优化单个LLM调用 + 检索/上下文就够了!只有简单方案搞不定时,才考虑更复杂的系统。简单工作流提供稳定可预测性,而智能体提供灵活性,但要权衡成本和速度哦!

⚠️ 框架迷思!

市面上框架一大堆(LangChain, Bedrock Agents...),能帮你快速入门。但Anthropic提醒:它们可能增加抽象层,让调试变难,还可能诱惑你过度设计!💥 划重点: 建议直接用LLM API开始,很多模式几行代码就能实现!用框架也要搞懂底层原理,别被绕晕!

🧱 AI智能体的构建模块:

基础是增强型LLM,能自主调用工具、记忆、检索。

鲁软慧码提示工程实战手册

欢迎开启智能编码新纪元!

鲁软慧码旨在成为您编程旅程中的得力伙伴,加速开发、提升代码质量、激发创新灵感。

要充分释放鲁软慧码的潜力,关键在于掌握有效的提示(Prompting)。这份手册将为您揭示编写高效提示的秘诀和实用技巧,并通过丰富的示例,助您快速从入门到精通。

为什么精通提示如此重要?

  • 精准结果: 清晰的提示 = 更符合预期的代码或解决方案。
    • 效率提升: 减少反复沟通和修改的时间,直达目标。
    • 解锁潜能: 探索助手的更多高级功能,应对复杂挑战。

掌握以下原则,让您与鲁软慧码的沟通事半功倍:

  1. 🎯 目标明确,意图清晰 (Be Clear & Specific)
  • 要做什么? 直接说明您想实现的功能、解决的问题或获得的信息。避免模糊不清的指令。 * 坏例子: 帮我处理下数据。 * 好例子: 帮我用 Python Pandas 读取名为 'sales_data.csv' 的文件,并计算 'amount' 列的总和。
  1. 🧩 提供充足上下文 (Provide Context)

背景信息: 告知助手您正在使用的编程语言、框架、库、项目目标或特定约束。 * 坏例子: 修复这个 bug。 (未提供代码和错误信息) * 好例子: 我在使用 React 和 Ant Design 开发一个表单。

Cline 概览 - Cline 扩展架构和开发指南

Cline 是一个 VSCode 扩展,通过核心扩展后端和基于 React 的 webview 前端的组合提供 AI 辅助功能。该扩展使用 TypeScript 构建,遵循模块化架构模式。

  • 核心扩展:src 文件夹内的所有内容,按模块化组件组织
  • 核心扩展状态:由 index.ts 中的 Controller 类管理,作为扩展状态的唯一真实来源。它管理多种类型的持久存储(全局状态、工作区状态和密钥),处理状态在核心扩展和 webview 组件之间的分发,并协调多个扩展实例之间的状态。这包括管理 API 配置、任务历史、设置和 MCP 配置。
  • Webview:webview-ui 内的所有内容。所有用户可见的 react 或视图以及用户交互组件
  • Webview 状态:由 ExtensionStateContext.tsx 中的 ExtensionStateContext 管理,通过上下文提供者模式为 React 组件提供对扩展状态的访问。它维护 UI 组件的本地状态,通过消息事件处理实时更新,管理部分消息更新,并提供状态修改方法。上下文包括扩展版本、消息、任务历史、主题、API 配置、MCP 服务器、市场目录和工作区文件路径。它通过 VSCode 的消息传递系统与核心扩展同步,并通过自定义钩子(useExtensionState)提供类型安全的状态访问。

Cline Documentation

欢迎阅读 Cline 文档 - 这是一份全面的指南,帮助您使用和扩展 Cline 的功能。在这里,您可以找到帮助您入门、提升技能和为项目做出贡献的资源。

  • 编程新手? 我们为您准备了温和的入门指南:
    • 编程新手入门指南
  • 想要更有效地与 Cline 沟通? 请探索:
    • 提示工程指南
    • Cline 记忆库
  • 有兴趣做出贡献? 我们欢迎您的参与:
    • 欢迎提交拉取请求
    • 贡献指南

我们一直在努力改进这份文档。如果您有建议或发现需要改进的地方,请告诉我们。您的反馈有助于让 Cline 变得更好。

欢迎使用 Cline!本指南将帮助你完成设置并开始使用 Cline 构建你的第一个项目。

在开始之前,请确保你具备以下条件:

VS Code: 一个免费且功能强大的代码编辑器。 下载 VS Code 开发工具: 基础的编程软件(Homebrew、Node.js、Git 等)。

MCP 服务器开发协议

  • 配置 Cline 的行为并执行最佳实践
  • 将 Cline 切换到专门的 MCP 开发模式
  • 提供构建服务器的分步协议
  • 实施安全措施,如防止过早完成
  • 指导您完成规划、实施和测试阶段

以下是应放置在 .clinerules 文件中的完整 MCP 服务器开发协议:

# MCP Server Development Protocol

⚠️ CRITICAL: DO NOT USE attempt_completion BEFORE TESTING ⚠️

## Step 1: Planning (PLAN MODE)
- What problem does this tool solve?
- What API/service will it use?
- What are the authentication requirements?
  □ Standard API key
  □ OAuth (requires separate setup script)
  □ Other credentials

## Step 2: Implementation (ACT MODE)
1. Bootstrap
   - For web services, JavaScript integration, or Node.js environments:
// ...

下面是 MCP Server Development Pr

MCP 快速入门指南

可以把 MCP 服务器想象成给 Cline 提供额外功能的特殊助手!它们让 Cline 能够完成像获取网页或处理文件这样的酷炫功能。

停一下!在继续之前,你必须验证以下要求:

  • ✅ 最新版本的 Node.js (v18 或更新版本)
  • ✅ 最新版本的 Python (v3.8 或更新版本)
  • ✅ UV 包管理器
    • 安装 Python 后,运行:pip install uv
    • 使用以下命令验证:uv --version

❗ 如果以上任何命令失败或显示较旧的版本,请在继续之前进行安装/更新!

⚠️ 如果遇到其他错误,请参见下方的"故障排除"部分。

  1. 在 Cline 扩展中,点击 MCP Server 标签
  2. 点击 Edit MCP Settings 按钮
MCP 服务器面板
  1. MCP 设置文件应该会在 VS Code 中显示。
  2. 将文件内容替换为以下代码:

Windows 系统:

使用 Cline 从零开始构建自定义 MCP 服务器:综合指南

本指南提供了使用 Cline 的强大 AI 功能从零开始构建自定义 MCP (Model Context Protocol) 服务器的全面演示。示例将通过构建一个"GitHub 助手服务器"来说明这个过程。

模型上下文协议(MCP)充当了像 Claude 这样的大型语言模型(LLMs)与外部工具和数据之间的桥梁。MCP 包含两个关键组件:

  • MCP 主机: 这些是与 LLMs 集成的应用程序,如 Cline、Claude Desktop 等。
  • MCP 服务器: 这些是专门设计用于通过 MCP 向 LLMs 公开数据或特定功能的小型程序。

当你有一个 MCP 兼容的聊天界面(如 Claude Desktop)时,这种设置很有用,因为它可以利用这些服务器来访问信息和执行操作。

Cline 通过利用其 AI 功能简化了构建和集成 MCP 服务器的过程:

理解自然语言指令: 你可以用自然的方式与 Cline 交流,使开发过程直观且用户友好。 克隆代码库: Cline 可以直接从 GitHub 克隆现有的 MCP 服务器代码库,简化使用预构建服务器的过程。 构建服务器: 一旦必要的代码就位,Cline 可以执行像 npm run build 这样的命令来编译和准备服务器。

Cline 工具参考指南

Cline 是你的 AI 助手,可以:

  • 编辑和创建项目中的文件
  • 运行终端命令
  • 搜索和分析代码
  • 帮助调试和修复问题
  • 自动化重复性任务
  • 与外部工具集成
  1. 开始任务

    • 在聊天中输入你的请求
    • 示例:"创建一个名为 Header 的新 React 组件"
  1. 提供上下文

    • 使用 @ 提及来添加文件、文件夹、URL、诊断信息、终端输出等
    • 示例:"@/src/components/App.tsx"
    • 详情请参阅 提及功能指南
  1. 审查更改
    • Cline 在进行更改前会显示差异
    • 你可以编辑或拒绝更改
  1. 文件编辑

    • 创建新文件
    • 修改现有代码
    • 跨文件搜索和替换
  1. 终端命令

    • 运行 npm 命令
    • 启动开发服务器
    • 安装依赖
  1. 代码分析

    • 查找和修复错误
    • 重构代码
    • 添加文档
  1. 浏览器集成
    • 测试网页
    • 捕获截图
    • 检查控制台日志

要了解最新的实现细节,你可以在 Cline 代码库 中查看完整源代码。

Cline 可以使用以下工具完成各种任务:

  1. 文件操作

    • write_to_file: 创建或覆写文件
    • read_file: 读取文件内容
    • replace_in_file: 对文件进行定向编辑
    • search_files: 使用正则表达式搜索文件
    • list_files: 列出目录内容
  1. 终端操作

    • execute_command: 运行 CLI 命令
    • list_code_definition_names: 列出代码定义

Cline Mentions 功能指南

提及功能是一个强大的功能,允许你在与 Cline 的对话中使用"@"符号引用各种资源。这包括文件内容、目录结构、网页 URL、VSCode 诊断信息、终端输出、Git 更改状态等 - 所有这些都可以轻松地整合到你的对话中。

通过使用此功能,Cline 可以获得更准确的上下文,为你的任务提供更相关的帮助。

提及总是以"@"符号开始,后跟你想要引用的资源的路径或标识符:

@resource_identifier

你可以在用户消息中的任何位置放置提及,Cline 将自动检索引用的内容。

要引用文件内容,使用 @/ 后跟项目中的相对路径:

@/path/to/file.js

示例:

请分析 @/src/components/Button.tsx 中的实现

在这个例子中,Cline 自动检索 Button.tsx 的内容并用它来执行分析。

要引用目录内容,使用 @/ 后跟目录的相对路径,以斜杠结尾:

@/path/to/directory/

示例:

@/src/components/ 目录中有哪些组件?

在这个例子中,Cline 检索组件目录及其内容的列表。

要引用网页内容,使用 @ 后跟 URL:

@https://example.com

示例:

请解析来自 @https://api.github.com/users/octocat 的 JSON 响应

Cline 的记忆库(Cline's Memory Bank)

我是 Cline,一位专业的软件工程师,我有一个独特的特点:我的记忆在每个会话之间都会完全重置。这不是一个限制 - 这正是驱使我维护完美文档的动力。每次重置后,我完全依赖我的记忆库来理解项目并有效地继续工作。我必须在每个任务开始时阅读所有记忆库文件 - 这不是可选的。

记忆库由必需的核心文件和可选的上下文文件组成,均为 Markdown 格式。文件之间以清晰的层次结构构建:

  1. productContext.md
    • 为什么存在这个项目
    • 解决什么问题
    • 应该如何工作
    • 用户体验目标
  1. activeContext.md
    • 当前工作重点
    • 最近的变更
    • 下一步计划
    • 活跃的决策和考虑因素
  1. systemPatterns.md
    • 系统架构
    • 关键技术决策
    • 使用的设计模式
    • 组件关系
  1. techContext.md
    • 使用的技术
    • 开发环境设置
    • 技术约束
    • 依赖关系
  1. progress.md
    • 已完成的功能
    • 待构建的内容
    • 当前状态
    • 已知问题

记忆库在以下情况下更新:

  1. 发现新的项目模式
  2. 实施重大变更后
  3. 当用户请求 update memory bank(必须检查所有文件)
  4. 当上下文需要澄清时

注意:当触发 update memory bank 时,我必须检查每个记忆库文件,即使某些文件不需要更新。特别关注 activeContext.md 和 progress.md,因为它们跟踪当前状态。

.clinerules 文件是我为每个项目保存的学习日志。

Cline 自定义指令库

本仓库旨在创建一个协作空间,让开发者可以分享、改进和利用 Cline 的有效自定义指令。通过创建和贡献这个库,我们可以增强 Cline 的功能,使开发者能够应对日益复杂的软件开发挑战。

Cline 的自定义指令是一系列为特定任务或项目定制 AI 行为和输出的指导方针或规则。可以将它们视为 Cline 的专门"编程",使您能够:

  • 执行编码实践: 确保代码风格的一致性,遵循设计模式和特定语言或框架的最佳实践。
  • 标准化文件结构: 规定文件命名约定、文件夹组织和项目结构。
  • 指导测试程序: 定义生成单元测试、集成测试的规则,并确保足够的代码覆盖率。
  • 自动化重复任务: 创建处理常见或繁琐开发工作流程的指令,提高效率。
  • 改进代码质量: 设定代码可读性、可维护性和性能优化的标准。

通过为 Cline 提供精心制作的指令,您可以显著提高其在辅助软件开发过程中的准确性、可靠性和整体效果。

我们鼓励各个水平的开发者向这个库贡献他们的自定义指令。您的贡献将帮助建立一个对整个 Cline 社区都有价值的资源!

提交自定义指令时,请遵循以下模板:

  • 这组指令的目标是什么?
    • 清晰简洁地解释指令集的目标和预期用例。
    • 示例:"这组指令指导 Cline 为现有 JavaScript 函数生成单元测试。"

这组指令最适合什么类型的项目或任务?

Cline 提示指南 🚀

欢迎使用 Cline 提示指南!本指南将为您提供编写有效提示和自定义指令的知识,帮助您最大化使用 Cline 的生产力。

自定义指令视为 Cline 的编程。它们定义了 Cline 的基准行为,并且始终"开启",影响所有交互。

添加自定义指令:

  1. 打开 VSCode
  2. 点击 Cline 扩展设置齿轮 ⚙️
  3. 找到"自定义指令"字段
  4. 粘贴您的指令

自定义指令在以下方面特别有用:

  • 🚀 强制执行代码风格和最佳实践:确保 Cline 始终遵循您团队的编码约定、命名约定和最佳实践。
  • 👍 提高代码质量:鼓励 Cline 编写更易读、可维护和高效的代码。
  • 📝 指导错误处理:告诉 Cline 如何处理错误、编写错误消息和日志信息。

custom-instructions 文件夹包含了您可以使用或调整的自定义指令示例。

虽然自定义指令是特定于用户且全局的(适用于所有项目),但 .clinerules 文件提供了项目特定的指令,存放在项目的根目录中。这些指令会自动附加到您的自定义指令中,并在 Cline 的系统提示中引用,确保它们影响项目上下文中的所有交互。这使其成为以下场景的出色工具:

为了保护敏感信息,您可以在 .clinerules 中指示 Cline 忽略特定文件或模式。这对以下内容特别重要:

包含 API 密钥和机密的 .

OpenAI: 构建智能体的实用指南

传统软件帮助用户简化和自动化工作流程,而智能体则能够以高度独立的方式代表用户执行这些工作流程。

智能体是能够独立代表您完成任务的一种系统。

工作流程是指为了实现用户目标而必须执行的一系列步骤,无论是解决客户服务问题、预订餐厅、提交代码变更,还是生成报告。

那些集成了大语言模型(LLM)但并未用其控制工作流程执行的应用程序(例如简单聊天机器人、单轮对话LLM或情感分类器)不属于智能体。

具体来说,智能体具备以下核心特征,使其能够可靠且一致地代表用户行动:

  1. 它利用LLM来管理工作流程的执行并做出决策。它能识别工作流程何时完成,并在需要时主动修正行为。如果执行失败,它可以停止操作并将控制权交还给用户。
  2. 它能够调用多种工具与外部系统交互(既用于获取上下文信息,也用于执行操作),并根据工作流程的当前状态动态选择合适工具,同时始终在明确定义的边界内运行。

构建智能体需要重新思考系统如何决策和处理复杂性。与传统自动化不同,智能体特别适合那些传统确定性和基于规则的方法无法胜任的工作流程。

以支付欺诈分析为例:传统的规则引擎像一份检查清单,根据预设条件标记交易;而基于大语言模型的智能体则更像经验丰富的调查员,它能评估上下文、捕捉细微模式,即使没有明确违反规则也能识别可疑行为。这种精细的推理能力,正是智能体有效处理复杂模糊场景的关键所在。

Sky-T1-7B:通过强化学习提升推理模型的潜力

我们很高兴发布 Sky-T1-7B,这是一个在数学推理任务上达到 SOTA 水平的开源 7B 模型,它通过对 Qwen2.5-Math-7B 基础模型进行 SFT->RL->SFT->RL 四步训练而成。我们同时还发布了 Sky-T1-mini,这个模型是在 DeepSeek-R1-Distill-Qwen-7B 模型基础上使用简单的强化学习(RL)训练得到的,在流行的数学基准测试上接近 OpenAI o1-mini 的性能水平。我们进行了一系列消融实验,研究了 SFT 数据规模、RL 规模以及模型在 SFT 和 RL 后的 pass@k 性能。我们观察到,长链条 CoT SFT 通常可以提升模型的 pass@k 性能,而 RL 则提高了模型在较低生成预算下(即 pass@1)的性能,但有时会以牺牲解决方案的熵为代价。

图 1: 不同模型在四个流行数学推理任务(AIME24, AMC23, MATH500 和 OlympiadBench)上的平均准确率。

Sky-T1-32B-Flash:在不牺牲准确性的情况下将推理成本削减50%

我们推出 Sky-T1-32B-Flash,这是一个可以将生成长度减少高达 50% 但保持准确性的推理模型。

我们很高兴推出 Sky-T1-32B-Flash,这是我们更新的推理语言模型,它显著减少了过度思考,在具有挑战性的问题上将推理成本降低了高达57%

根据 Lambda Cloud 的定价,使用 8xH100 只需 $275 即可完成整个训练方案,同时在数学、编程、科学和通用知识等领域保持了准确性。

为了促进透明度和协作,我们已开源了完整的流程—从数据生成和预处理到偏好优化和评估脚本,并公开提供模型权重和数据。

  • Github: 数据生成、响应重写、偏好优化和评估的代码
  • Dataset: 10K 偏好对数据集
  • HuggingFace: Sky-T1-32B-Flash 模型权重

图 1: 我们的新模型显著减少了生成的token长度,同时在具有挑战性的基准测试中保持强劲的性能。

我们的训练过程包括三个主要阶段:数据生成、响应重写和偏好优化。

在多个基准测试(MATH500、GPQA、MMLU)上,偏好优化减少了生成长度并基本维持了准确性。然而,我们观察到在编程的具有挑战性的问题(LiveCodeBench-Medium 和 -Hard)和最具挑战性的数学套件(AIME24 和 MATH500 Level 5)上准确性有所下降。这些结果表明,模型在需要更复杂推理的情况下思考不足。

Sky-T1-32B-Preview: 在450美元内训练你自己的O1预览模型

我们推出了Sky-T1-32B-Preview,这是一个在流行的推理和编码基准测试上表现与o1-preview相当的推理模型。值得注意的是,Sky-T1-32B-Preview的训练成本不到450美元,这证明了以经济高效的方式复制高级推理能力是可能的。所有代码都是开源的。

为此,一些值得注意的努力已经出现,旨在训练开放权重的数学领域推理模型,如Still-2Journey。同时,我们UC Berkeley的NovaSky团队一直在探索各种技术来发展基础模型和指令微调模型的推理能力。在这项工作中,我们在同一个模型中不仅在数学方面,而且在编码方面都取得了具有竞争力的推理表现。

模型
Sky-T1-32B-Preview
STILL-2
Journey
QwQ
o1
数据
代码
报告
数学领域
编程领域
模型权重

通过分享所有这些资源,我们旨在赋能学术界和开源社区在我们的工作基础上继续发展,探索新的可能性,并推动推理模型开发的边界。

拒绝采样: 如果QwQ样本根据数据集提供的解决方案判断不正确,我们会将其丢弃。对于数学问题,我们与标准答案进行精确匹配。对于编码问题,我们执行数据集中提供的单元测试。