tensor_stream

GitHub
506 16 简单 1 次阅读 3个月前MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

TensorStream 是一个专为 Ruby 开发者打造的开源机器学习框架,旨在让 Ruby 社区也能轻松构建和运行复杂的机器学习模型。它从零开始重新实现了 TensorFlow 的核心功能,解决了以往 Ruby 在深度学习领域缺乏原生、高效工具支持的痛点,让用户无需依赖 Python 环境或复杂的 Docker 配置即可开展工作。

该工具特别适合熟悉 Ruby 语言的软件工程师、数据科学家以及希望将 AI 模型直接集成到现有 Ruby 应用中的开发者。其核心亮点在于独特的“混合部署”架构:支持纯 Ruby 和 OpenCL 两种后端。用户可以利用 OpenCL 后端调用 GPU 进行高效的模型训练,随后将训练好的模型无缝切换至纯 Ruby 后端,在任何能运行 Ruby 的设备(包括 JRuby、TruffleRuby 等环境)上轻松部署推理,真正实现了“一次定义,随处运行”。

TensorStream 高度兼容 TensorFlow 的操作逻辑,支持自动微分和自定义算子扩展,语法简洁直观。无论是进行线性回归实验,还是处理需要硬件加速的深度学习任务,TensorStream 都能提供灵活且高效的解决方案,是 Ruby 生态中连接算法研究与工程落地的有力桥梁。

使用场景

一家专注于电商数据分析的初创团队,希望利用现有的 Ruby on Rails 技术栈快速构建商品销量预测模型,以避免引入复杂的 Python 环境。

没有 tensor_stream 时

  • 技术栈割裂:数据预处理和业务逻辑用 Ruby 编写,但训练模型必须调用 Python 的 TensorFlow,导致系统架构复杂,需维护两套运行环境。
  • 部署门槛高:生产环境部署困难,服务器必须安装 Python、clang 及各类深度学习依赖库,甚至需要配置 Docker 容器来隔离环境。
  • 硬件加速受限:纯 Ruby 实现计算速度极慢,无法利用 GPU 进行加速,而配置跨语言调用的 GPU 资源不仅开发成本高且稳定性差。
  • 迭代效率低:算法工程师与后端开发人员协作困难,模型从实验到上线的周期长,难以响应快速变化的业务需求。

使用 tensor_stream 后

  • 原生无缝集成:直接在 Ruby 代码中定义数据流图和神经网络层,无需切换语言或进程,实现了从数据清洗到模型训练的端到端开发。
  • 极简部署体验:仅需通过 Gemfile 安装即可运行,彻底摆脱了对 Python、Docker 或复杂编译环境的依赖,模型可随 Rails 应用轻松部署至任意支持 Ruby 的服务器。
  • 灵活硬件加速:开发阶段利用 OpenCL 后端在 GPU 上高效训练模型,上线后自动切换至纯 Ruby 后端进行推理,既保证了训练速度又确保了部署的通用性。
  • 研发效能提升:团队成员无需学习新语言,利用熟悉的 Ruby 语法即可完成深度学习任务,大幅缩短了从原型验证到产品落地的时间。

tensor_stream 让 Ruby 开发者能在不跳出舒适区的前提下,原生享受深度学习带来的算力红利,真正实现了“一次编写,随处运行”。

运行环境要求

操作系统
  • 未说明
GPU
  • 非必需
  • 若需深度学习或图像处理加速,需支持 OpenCL 的设备(如 Intel GPU/CPU, NVIDIA GPU, AMD GPU)
  • 纯 Ruby 实现仅使用 CPU 且速度较慢
内存

未说明

依赖
notes该工具是基于 Ruby 的机器学习框架,无需 Python、Docker 或 Clang。OpenCL 加速功能仅在 MRI Ruby 实现上受支持,且需系统正确安装 OpenCL 驱动。对于标量运算,OpenCL 可能比纯 Ruby 实现更慢;它主要适用于大张量运算。
python不需要 (基于 Ruby)
ruby (MRI, JRuby, TruffleRuby)
tensor_stream-opencl (可选,用于 GPU 加速)
tensor_stream hero image

快速开始

Gem VersionGem VersionCircleCI 加入聊天 https://gitter.im/tensor_stream/Lobby

TensorStream

TensorStream 是一个面向 Ruby 的开源机器学习框架,旨在让机器学习模型的构建和在不同硬件(如 GPU 和 CPU)上的运行变得更加简单。它深度借鉴了 TensorFlow 的设计理念,目标是能够轻松移植其高层库和模型示例。因此,TensorStream 也基于数据流图,通过定义计算及其之间的数据流动来实现预期的输出。

TensorStream 设计为支持多种后端,包括纯 Ruby 实现和 OpenCL 实现。这些实现可以协同工作:你可以在具有 GPU 的 OpenCL 后端上进行训练,然后将训练好的模型部署到任何可以运行 Ruby 的环境中,使用纯 Ruby 后端执行推理。TensorStream 已经在大多数 Ruby 实现上进行了测试,例如 MRI、JRuby 和 TruffleRuby。

目标与特性

  • 易于使用 - 提升模型的可读性
  • 复刻了 TensorFlow 中常用的大部分低层操作(tf.add、tf.constant、tf.placeholder、tf.matmul、tf.sin 等)
  • 支持基于形式导数的自动微分
  • 可扩展 - 使用自定义的运算符求值器(目前支持 OpenCL 和纯 Ruby)
  • 广泛兼容 - 可在大多数 Ruby 实现上运行,并在支持 OpenCL 的硬件上实现加速

兼容性

TensorStream 默认提供了纯 Ruby 和 OpenCL 两种实现。纯 Ruby 实现已知可在大多数 Ruby 实现上运行,包括 TruffleRuby、JRuby 以及启用了 JIT 的 MRI 版本(Ruby 2.6.0)。

OpenCL 仅支持 MRI 版本的 Ruby。可以通过添加 OpenCL 求值器 gem 来启用(请确保系统已正确安装 OpenCL 驱动程序):

gem 'tensor_stream-opencl'

然后(无需 Bundler):

require 'tensor_stream/opencl'

对于深度学习和图像处理任务,OpenCL 几乎是必需的,因为即使使用最新版本的 Ruby 并启用 JIT 加速,Ruby 实现的速度仍然太慢。

TensorStream 使用的 OpenCL 内核位于 tensor_stream/lib/evaluator/opencl/kernels。这些内核不特定于任何设备,应能在任何支持 OpenCL 的设备上运行,包括 Intel 的 GPU 和 CPU,以及 NVIDIA 和 AMD 的 GPU。

安装

安装非常简单,无需折腾 Docker、Python、Clang 等工具,MRI 和 JRuby 均可开箱即用。

将以下行添加到你的应用 Gemfile 中:

gem 'tensor_stream'

然后执行:

$ bundle

或者直接安装:

$ gem install tensor_stream

使用

使用方式类似于 TensorFlow,只是采用了 Ruby 语法。此外,还对语法进行了优化,使其尽可能简洁。

线性回归示例:

require 'tensor_stream'

tf = TensorStream

learning_rate = 0.01
training_epochs = 1000
display_step = 50

train_x = [3.3, 4.4, 5.5, 6.71, 6.93, 4.168, 9.779, 6.182, 7.59, 2.167,
           7.042, 10.791, 5.313, 7.997, 5.654, 9.27, 3.1]

train_y = [1.7, 2.76, 2.09, 3.19, 1.694, 1.573, 3.366, 2.596, 2.53, 1.221,
           2.827, 3.465, 1.65, 2.904, 2.42, 2.94, 1.3]

n_samples = train_x.size

x_value = Float.placeholder
y_value = Float.placeholder

# 设置模型权重
weight = rand.t.var name: "weight"

bias = rand.t.var name: "bias"

# 构建线性模型
pred = x_value * weight + bias

# 均方误差
cost = ((pred - y_value)**2).reduce / (2 * n_samples)

# 其他优化器 --
#
# optimizer = TensorStream::Train::MomentumOptimizer.new(learning_rate, momentum, use_nesterov: true).minimize(cost)
# optimizer = TensorStream::Train::AdamOptimizer.new(learning_rate).minimize(cost)
# optimizer = TensorStream::Train::AdadeltaOptimizer.new(1.0).minimize(cost)
# optimizer = TensorStream::Train::AdagradOptimizer.new(0.01).minimize(cost)
# optimizer = TensorStream::Train::RMSPropOptimizer.new(0.01, centered: true).minimize(cost)
optimizer = TensorStream::Train::GradientDescentOptimizer.new(learning_rate).minimize(cost)

# 初始化变量(即为其设置默认值)
init = tf.global_variables_initializer

tf.session do |sess|
  start_time = Time.now
  sess.run(init)

  (0..training_epochs).each do |epoch|
    train_x.zip(train_y).each do |x, y|
      sess.run(optimizer, feed_dict: { x_value => x, y_value => y })
    end

    if (epoch + 1) % display_step == 0
      c = sess.run(cost, feed_dict: { x_value => train_x, y_value => train_y })
      puts("Epoch:", '%04d' % (epoch + 1), "cost=", c, \
           "W=", sess.run(weight), "b=", sess.run(bias))
    end
  end

  puts "Optimization Finished!"
  training_cost = sess.run(cost, feed_dict: { x_value => train_x, y_value => train_y })
  puts "Training cost=", training_cost, "W=", sess.run(weight), "b=", sess.run(bias), '\n'
  puts "time elapsed ", Time.now.to_i - start_time.to_i
end

你可以在 spec/tensor_stream/operation_spec.rb 中查看支持的操作列表以及各种示例和测试用例。当然,这些内容只是 TensorFlow 能力的一小部分,欢迎提交 PR 添加所需的操作和测试用例。

其他可用的示例也可以在 tensor_stream/samples 中找到。

用于开发且仍在调试中的示例则位于 test_samples 目录下。

Python 到 Ruby 指南

并非所有操作都可用。可用的操作定义在 lib/tensor_stream/ops.rb 中,对应的梯度则位于 lib/tensor_stream/math_gradients。

命名规范和命名参数方面也有一些差异:

变量与常量

为了更方便参考 Python 示例,建议将 TensorStream 的命名空间设为 “tf”。

在开头:

tf = TensorStream # 推荐使用 tf,因为网络上的大多数示例模型都使用这个命名空间
ts = TensorStream # 如果你只打算使用 TensorStream 的特定功能,可以使用 ts,以便其他开发者了解你的意图

注意命名参数和可选参数的区别:

Python

w = ts.Variable(0, name='weights')
w = ts.Variable(0, 'weights')

Ruby

w = ts.variable(0, name: 'weights')
c = ts.constant(1.0)

# 使用常量初始化时的简洁写法
w = 0.t.var name: 'weights'
c = 1.0.t

对 Integer、Array 和 Float 类型调用 .t 方法会将其转换为张量。

形状

Python

x = tf.placeholder(tf.float32, shape=(1024, 1024))
x = tf.placeholder(tf.float32, shape=(None, 1024))

Ruby 支持使用符号来指定数据类型,nil 可以用于表示 None

Ruby

x = ts.placeholder(:float32, shape: [1024, 1024])
x = ts.placeholder(:float32, shape: [nil, 1024])

# 另一种更简洁的方式
x = Float.placeholder shape: [1024, 1024]
y = Float.placeholder shape: [nil, 1024]

为了调试,每个操作或张量都支持 to_math 方法。

X = ts.placeholder("float")
Y = ts.placeholder("float")
W = ts.variable(rand, name: "weight")
b = ts.variable(rand, name: "bias")
pred = X * W + b
cost = ts.reduce_sum(ts.pow(pred - Y, 2)) / ( 2 * 10)
cost.to_math # "(reduce_sum(|((((Placeholder: * weight) + bias) - Placeholder_2:)^2)|) / 20.0)"

还可以设置断点,块会在计算过程中被评估。

a = ts.constant([2,2])
b = ts.constant([3,3])

f = ts.matmul(a, b).breakpoint! { |tensor, a, b, result_value| binding.pry }

ts.session.run(f)

OpenCL

要使用 OpenCL 支持,请确保您的硬件已正确安装所需的 OpenCL 驱动程序。此外,目前 OpenCL 仅支持 Ruby MRI。

要使用,只需在项目中包含以下 gem:

gem 'tensor_stream-opencl'

要使用 OpenCL 求解器而不是 Ruby 求解器,只需将其引入即可(如果使用 Rails,它应该会自动加载)。

require 'tensor_stream/opencl'

添加 OpenCL 求解器后,TensorStream 将会显示额外的可用设备。

ts.list_local_devices
# ["job:localhost/ts:ruby:cpu", "job:localhost/ts:opencl:apple:0", "job:localhost/ts:opencl:apple:1"]

这里我们看到 1 个 “ruby” CPU 设备和 2 个 OpenCL “apple” 设备(Intel CPU、Intel Iris GPU)。

默认情况下,TensorStream 会根据给定的求解器为每个张量操作选择最佳的执行位置。

require 'tensor_stream/opencl'

# 设置会话使用 OpenCL 求解器
sess = ts.session

sess.run(....) # 执行一些操作

您也可以手动使用 ts.device 来放置操作,例如:

ts = TensorStream
# 创建一个图,并将其放置在第一个 OpenCL CPU 设备上

a, b = ts.device('/cpu:0') do
  a = ts.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape: [2, 3], name: 'a')
  b = ts.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape: [3, 2], name: 'b')
  [a, b]
end

c = ts.device('/device:GPU:0') do
  ts.matmul(a, b)
end

# 创建一个启用 log_device_placement 的会话。
sess = ts.session(log_device_placement: true)
# 运行该操作。
print(sess.run(c))

# a : apple:0
# b : apple:0
# a_1 : apple:0
# b_1 : apple:0
# matmul:0 : apple:1
# [[22.0, 28.0], [49.0, 64.0]] => nil

即使加载了 OpenCL 求解器,如果您想强制使用 Ruby 求解器,可以这样做:

ts.device('/ts:ruby:cpu') do
    # 在这里放置操作
end

需要注意的是,OpenCL 求解器在处理大型张量时会带来速度提升,而对于只涉及标量的操作(如线性回归示例),实际上可能会更慢。

samples/nearest_neighbor.rb 包含一个使用 OpenCL 的示例。

OpenCL 支持作为独立项目维护在以下地址:

https://github.com/jedld/tensor_stream-opencl

从 TensorFlow 导出和导入模型

目前支持解析和导出 pbtext 文件的实验性功能:

导出

a = ts.constant([1.0, 1.0])
b = ts.constant([1.5, 1.5])
f = a + b

File.write('my_model.pbtext', f.graph.as_graph_def)

导入(实验性)

请注意,并非所有 TensorFlow 操作都受支持;如果某些操作尚未支持,将会显示警告。

  pbtext = File.read(File.join('linear_regression.pbtxt'))

  # 从 pbtext 文件创建图
  graph = TensorStream::Graph.parse_from_string(pbtext)

  # 通过名称引用图中的张量,例如有一个名为 out 的张量
  tensor = graph.get_tensor_by_name("out")

  # 将图设为默认图并在此基础上进行操作
  graph.as_default do
    sess = ts.session
    expect(tr(sess.run(tensor))).to eq([[1.0, 1.0], [1.0, 1.0]])
  end

可视化

TensorStream 目前还不支持 TensorBoard,但包含了一个 GraphML 生成器:

tf = TensorStream
a = tf.constant(1.0)
b = tf.constant(2.0)
result = a + b
sess = tf.session
sess.run(result)

File.write('gradients.graphml', TensorStream::Graphml.new.get_string(result)) # 只转储图
File.write('gradients.graphml', TensorStream::Graphml.new.get_string(result, sess)) # 同时转储会话中的值

生成的 GraphML 文件设计用于与 yED 配合使用。加载图后,将布局更改为“流程图”以获得最佳效果。

导出到 TensorFlow

目前仍处于 Alpha 阶段,但 TensorStream 支持 TensorFlow 的 as_graph_def 序列化方法:

tf = TensorStream
a = tf.constant(1.0)
b = tf.constant(2.0)
result = a + b
File.write("model.pbtext", result.graph.as_graph_def)

性能说明

与其他 Ruby 库相比,性能尚未进行比较。然而,值得注意的是,TruffleRuby 和 Ruby 2.6.0 在性能上明显优于之前的 Ruby 版本(< 2.6)。

使用 AMD(R) Ryzen(TM) 3 1300X CPU,在运行 samples/linear_regression.rb 样本时,TensorStream 1.0.0 的基准测试结果如下:

Ruby 2.5

$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
$ ruby samples/linear_regression.rb
296 秒,3000 次迭代

Ruby 2.6.0

$ ruby -v
ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux]
$ ruby samples/linear_regression.rb
232 秒,10000 次迭代

ruby --jit samples/linear_regression.rb
222 秒,10000 次迭代

Truffleruby

$ ruby -v
truffleruby 1.0.0-rc10,类似 ruby 2.4.4,GraalVM CE Native [x86_64-linux]
246 秒,10000 次迭代

JRuby

$ ruby -v
jruby 9.2.0.0 (2.5.0) 2018-05-24 81156a8 OpenJDK 64-Bit Server VM 25.191-b12 on 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12 +jit [linux-x86_64]
205 秒,10000 次迭代

对于基于图像的大型网络训练,OpenCL 求解器是唯一可行的选择。

路线图

  • 文档
  • 完整的低级操作支持
  • SciRuby 求解器
  • OpenCL 求解器
  • TensorFlow savemodel 兼容性

问题

  • 这是一个早期预览版本,许多功能仍未完善。
  • 性能尚不理想,至少在 OpenCL 和/或 SciRuby 后端完成之前是如此。
  • 不过,如果您确实需要某个操作的支持,请随时提交包含相应失败测试的拉取请求(参见 spec/operation_spec.rb)。

开发

检出仓库后,运行 bin/setup 安装依赖。然后,运行 rake spec 来执行测试。你还可以运行 bin/console 启动一个交互式提示符,以便进行实验。

要将此 gem 安装到本地机器上,请运行 bundle exec rake install。要发布新版本,先更新 version.rb 中的版本号,然后运行 bundle exec rake release,它会为该版本创建一个 Git 标签,推送 Git 提交和标签,并将 .gem 文件发布到 rubygems.org

贡献

欢迎在 GitHub 上通过 https://github.com/[USERNAME]/tensor_stream 提交 bug 报告和拉取请求。本项目旨在成为一个安全、友好的协作空间,贡献者应遵守 Contributor Covenant 行为准则。

许可证

该 gem 以开源形式提供,遵循 MIT 许可证 的条款。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.3k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架