Chain Of Draft

Chain Of Draft

🚀 链式草稿 (CoD) MCP 服务器

本项目实现了链式草稿(Chain of Draft, CoD)推理方法,此方法能让大语言模型(LLM)生成简洁且信息丰富的中间推理步骤,在解决任务时显著降低令牌使用量,为相关任务的处理带来了新的优化方案。

🚀 快速开始

本MCP服务器实现了论文《链式草稿:通过写作减少思考》中所描述的链式草稿(CoD)推理方法。CoD是一种新颖的方法,允许LLM生成简洁但信息丰富的中间推理步骤,解决任务时显著降低令牌使用量。

✨ 主要特性

  • AnalyticsService:跟踪不同领域和推理方法的性能指标。
  • ComplexityEstimator:分析问题以确定合适的单词限制。
  • ExampleDatabase:管理和检索示例,并将CoT示例转换为CoD格式。
  • FormatEnforcer:确保推理步骤符合单词限制。
  • ReasoningSelector:根据问题特征和历史性能智能选择CoD或CoT。

📦 安装指南

Python 实现

  1. 环境配置

    • 下载并安装Python 3.8及以上版本。
    • 安装所需的依赖项,例如anthropic, dotenv等。
  2. 代码实现

from client import ChainOfDraftClient

# 创建客户端
cod_client = ChainOfDraftClient()

# 直接使用
result = await cod_client.solve_with_reasoning(
problem="求解:247 + 394 = ?",
domain="数学"
)

print(f"答案:{result['final_answer']}")
print(f"推理步骤:{result['reasoning_steps']}")
print(f"使用的令牌数:{result['token_count']}")

JavaScript 实现

  1. 环境配置

    • 下载并安装Node.js 14及以上版本。
    • 安装所需的依赖项,例如@anthropic-ai/sdk, dotenv等。
  2. 代码实现

import { Anthropic } from "@anthropic-ai/sdk";
import dotenv from "dotenv";

// 加载环境变量
dotenv.config();

// 创建Anthropic客户端
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});

// 导入链式草稿客户端
import chainOfDraftClient from './lib/chain-of-draft-client.js';

// 使用客户端
async function solveMathProblem() {
const result = await chainOfDraftClient.solveWithReasoning({
problem: "求解:247 + 394 = ?",
domain: "数学",
max_words_per_step: 5
});

console.log(`答案:${result.final_answer}`);
console.log(`推理步骤:${result.reasoning_steps}`);
console.log(`使用的令牌数:${result.token_count}`);
}

solveMathProblem();

💻 使用示例

基础用法

Python 实现

from client import ChainOfDraftClient

# 创建客户端
cod_client = ChainOfDraftClient()

# 直接使用
result = await cod_client.solve_with_reasoning(
problem="求解:247 + 394 = ?",
domain="数学"
)

print(f"答案:{result['final_answer']}")
print(f"推理步骤:{result['reasoning_steps']}")
print(f"使用的令牌数:{result['token_count']}")

JavaScript 实现

import { Anthropic } from "@anthropic-ai/sdk";
import dotenv from "dotenv";

// 加载环境变量
dotenv.config();

// 创建Anthropic客户端
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});

// 导入链式草稿客户端
import chainOfDraftClient from './lib/chain-of-draft-client.js';

// 使用客户端
async function solveMathProblem() {
const result = await chainOfDraftClient.solveWithReasoning({
problem: "求解:247 + 394 = ?",
domain: "数学",
max_words_per_step: 5
});

console.log(`答案:${result.final_answer}`);
console.log(`推理步骤:${result.reasoning_steps}`);
console.log(`使用的令牌数:${result.token_count}`);
}

solveMathProblem();

🔧 技术细节

Python 实现

  1. AnalyticsService:跟踪性能指标,跨越不同领域和推理方法。
  2. ComplexityEstimator:分析问题以确定适当的单词限制。
  3. FormatEnforcer:确保推理步骤符合单词限制。
  4. ReasoningSelector:根据问题特征和历史性能自动选择CoD或CoT。

JavaScript 实现

  1. analyticsDb:内存数据库,用于跟踪性能指标。
  2. complexityEstimator:分析问题以确定复杂性和适当的单词限制。
  3. formatEnforcer:确保推理步骤符合单词限制。
  4. reasoningSelector:根据问题特征和历史性能自动选择CoD或CoT。

两种实现遵循相同的核心原则,并提供相同的MCP工具,使得它们在大多数用例中可以互换使用。

📄 许可证

本项目采用MIT许可证,你可以自由地使用、修改和分发代码。

🤝 贡献指南

欢迎贡献!请参考CONTRIBUTING.md了解如何为该项目做出贡献。

🐞 问题报告

在使用过程中遇到问题?请提交到GitHub Issues,我们会尽快解决。

📚 参考资料

  • 0 关注
  • 0 收藏,31 浏览
  • system 提出于 2025-10-02 05:54

相似服务问题

相关AI产品