语言 & 框架
采纳
试验
-
Astro 框架在社区中越来越受欢迎。我们的团队已经使用 Astro 构建了诸如博客和营销网站之类的内容驱动型网站。Astro 是一个多页面应用程序框架,它在服务器上渲染 HTML 并最小化通过网络发送的 JavaScript 。我们认为不错的一点是,尽管 Astro 鼓励仅发送 HTML,但它支持在适当的情况下选择性地使用您选择的前端 JavaScript 框架编写的活动组件。它通过其岛屿架构实现这一点。岛屿是单页内的交互区域,在这里所需的 JavaScript 仅在需要时才被下载。通过这种方式,网站的大部分区域被转换为快速的静态 HTML,而 JavaScript 部分则优化为并行加载。我们的团队既喜欢其页面渲染性能,也喜欢其构建速度。Astro 组件语法是 HTML 的简单扩展,学习曲线相当平缓。
-
Pinia 是一个在Vue.js中使用的存储库和状态管理框架。它使用声明性语法并提供了自己的状态管理 API。与Vuex相比,Pinia 提供了一个更简单的 API,简化了使用流程,提供了组合式 API,并且在与TypeScript一起使用时具有可靠的类型推断支持。Vue.js 团队认可 Pinia 作为 Vuex 的可靠替代品,目前它是 Vue.js 的官方状态管理库。总的来说,我们认为 Pinia 的简单性和易用性是非常不错的。
评估
-
有些移动应用或者游戏非常消耗资源,他们可以在几分钟内导致散热过载。在这种情况下,设备会降低 CPU 和 GPU 的频率以降低温度,但游戏帧率也会随之降低。当散热情况有所改善时,设备的帧率会回升。如此循环往复,软件会变得非常不稳定。Android Adaptability 是一套允许移动程序开发者根据动态的设备性能和散热情况进行调校的新类库集。安卓动态性能框架( ADPF ) 集成了提供设备热量信息的 Thermal API、帮助安卓系统选择 CPU 的最佳运行点以及核心配置的 Hint API。Unity 的自适应性能包也同时支持这两种 API,使用 Unity 进行开发的团队应该会觉得这很有帮助。
-
Crabviz 是一个用于创建调用图的 Visual Studio Code 插件。这些图表是交互式的,这在使用中等规模的代码库(例如微服务)时起到了很大的作用。它们按文件分组显示类型、方法、函数和接口,并显示函数调用关系和接口实现关系。因为 Crabviz 基于语言服务器协议,只要安装了相应的语言服务器,就可以支持任意数量的语言。虽然这也意味着 Crabviz 仅限于静态代码分析,可能不足以满足某些用例。该插件是用 Rust 编写的,可在 Visual Studio Code Marketplace 上获取。
-
Crux 是一个用 Rust 编写的开源跨平台应用开发框架。受到 Elm 架构的启发,Crux 将业务逻辑代码作为核心,UI 层则使用了原生框架(如SwiftUI、Jetpack Compose 以及 React/Vue),或者是基于 WebAssembly 的框架(如 Yew)。通过 Crux,你可以在 Rust 中编写无副作用的行为代码,并在 iOS、Android 和网页中共享。
-
Databricks 最近发布了 Databricks Asset Bundles (DABs) 的 公开预览版,它包含在 Databricks CLI 0.205 及更高版本中,正成为打包 Databricks 资源进行源代码控制、测试和部署的官方推荐方式。DABs 在我们的团队中逐渐取代了 dbx。DABs 支持将工作流、作业和任务的配置以及要在这些任务中执行的代码打包成一个可以部署到多个环境的捆绑包。它附带了常见资产类型的模板,并支持自定义模板。虽然 DABs 包含笔记本模板并支持将它们部署到生产环境,但我们仍然建议不要将 笔记本用于生产环境,而是鼓励有意地编写生产代码,并采用支持此类工作负载的可维护性、弹性和可扩展性的工程实践。
-
LiteLLM 是一个库,通过 OpenAI API 格式 的标准化交互实现与各种大语言模型(LLM)提供商的 API 的无缝集成。它广泛支持各类提供商和模型,并具备一个用于完成、嵌入和图像生成功能的统一界面。LiteLLM 通过将输入转换为匹配每个提供商特定端点要求的方式,简化了集成。在当前环境下,这特别有价值,因为缺乏标准化的 LLM 提供商 API 规范会导致项目中包含多个 LLM。我们的团队已经利用 LiteLLM 在 LLM 应用中更换底层模型,解决了一个重大的集成挑战。然而,需要认识到,它对相同提示的模型有不同响应,这表明仅仅一致的调用方法可能不足以完全优化完成性能。请注意,LiteLLM 还有其他一些特性,如 代理服务器,这些不在本次讨论范围内。
-
我们一如既往地提醒大家,非必要情况下,不要着急对大语言模型进行微调 —— 这将增加显著的成本和专家资源负担。在必须微调的情况下,我们推荐LLaMA-Factory 。它是一个开源的、易于使用的 LLMs 微调和训练框架。支持LLaMA、BLOOM、Mistral、Baichuan、Qwen 和ChatGLM,它使微调等复杂概念相对容易理解。我们的团队成功地使用了LLaMA-Factory 的 LoRA 调优来训练 LLaMA 7B 模型。如果您需要进行微调,这个框架是值得评估的。
-
vLLM 是一个具有高吞吐量和高效内存的大语言模型(LLM)推理和服务引擎,其特别有效的原因在于它可以对传入请求进行连续批处理。它支持几种部署选项,包括使用Ray运行时进行分布式张量并行推理和服务部署,在云中使用SkyPilot、NVIDIA Triton、Docker和LangChain进行部署。我们团队的经验是在本地虚拟机中运行基于 docker 的 vLLM worker,集成了与 OpenAI 兼容的 API 服务器,并在此基础上被一系列应用所利用(包括用于编码辅助以及聊天机器人的 IDE 插件)。团队对此反馈良好。我们的团队利用 vLLM 运行诸如CodeLlama 70B、CodeLlama 7B和Mixtral等模型。引擎的另一个显著特点是其可扩展能力:只需进行一些配置更改,就可以从运行 7B 模型转换为 70B 模型。如果您希望将 LLMs 投入生产,那么 vLLM 值得进一步探索。
-
Voyager 是为 Android 的 Jetpack Compose 构建的导航库。它支持多种导航类型,包括线性、底部表单、标签和嵌套,其屏幕模型与流行框架如 Koin 和 Hilt 集成。在多平台项目中使用 Jetpack Compose 时,Voyager 是实现跨所有支持平台的常见导航模式的优秀选择。近期,Voyager 的开发又重新活跃起来,并在 2023 年 12 月交付了 1.0 版本。
-
wgpu 是一个基于 WebGPU API 的Rust图形库,它以能够高效处理 GPU 上通用图形和计算任务的能力而闻名。wgpu 旨在填补由于淘汰旧的图形标准(如 OpenGL 和 WebGL)而留下的空白。它引入了一种现代的图形开发方法,既适用于本地应用程序,也适用于基于 Web 的项目。它与WebAssembly的集成进一步使得图形和计算应用程序能够在浏览器中运行。wgpu 的出现是一种进步,使高级图形编程对 Web 开发人员更加可访问,应用范围更广泛,从游戏到创建复杂的 Web 动画,将 wgpu 定位为一种令人振奋的技术。
-
Zig 是一种新的编程语言,它与 C 语言有许多共同点,但具有更强的类型系统、更容易的内存分配以及对命名空间的支持等,此外还有许多其他特性。Zig 的目标是提供一个非常简单的语言,具有直接明了的编译过程,最小化副作用,并提供可预测、易于追踪的执行。Zig 还简化了访问 LLVM 的跨平台编译能力。我们的一些开发者发现这个特性非常有价值,他们甚至在不编写 Zig 代码的情况下,也能使用 Zig 作为交叉编译器。我们看到行业中的团队使用 Zig 帮助构建 C/C++ 工具链。对于那些正在考虑或已经使用 C 的应用程序,Zig 是一种值得探索的新颖语言。
暂缓
-
在上一期 Radar 中,我们提到了一些关于 LangChain 出现的批评言论。自那以后,我们愈发对其充满警惕。虽然这个框架为构建大语言模型应用提供了一套强大的功能,但我们发现它使用起来很困难且过于复杂。LangChain 在这个领域早期获得了人气和注意力,这使得它成为了许多人的默认选择。然而,随着 LangChain 试图发展并快速跟进最新变化,开发者越来越难以跟上这些概念和模式的变更。我们还发现其存在 API 设计不一致且冗长的情况。因此,它经常会掩盖底层实际发生的情况,使得开发者难以理解和控制 LLMs 及其周围的各种模式在背后实际是如何工作的。我们将 LangChain 移动到了“暂缓”环,以反映这一点。在我们的许多用例中,我们发现使用更轻量的的专门框架进行实现就足够了。根据用例,你还可以考虑其他框架,如 Semantic Kernel、Haystack 或 LiteLLM。
- 新的
- 移进/移出
- 没有变化
无法找到需要的信息?
每期技术雷达中的条目都在试图反映我们在过去六个月中的技术洞见,或许你所搜索的内容已经在前几期中出现过。由于我们有太多想要谈论的内容,有时候不得不剔除一些长期没有发生变化的条目。技术雷达来自于我们的主观经验,而非全面的市场分析,所以你可能会找不到自己最在意的技术条目。
无法找到需要的信息?
每期技术雷达中的条目都在试图反映我们在过去六个月中的技术洞见,或许你所搜索的内容已经在前几期中出现过。由于我们有太多想要谈论的内容,有时候不得不剔除一些长期没有发生变化的条目。技术雷达来自于我们的主观经验,而非全面的市场分析,所以你可能会找不到自己最在意的技术条目。