🤖 使用 Next Js、GPT 4 和 Vercel AI SDK 构建 AI 聊天机器人的超级简单方法

随着自然语言处理(NLP)模型的改进和变得更容易访问,人工智能聊天机器人正变得越来越流行和强大。但是,从头开始构建聊天机器人可能具有挑战性且耗时,尤其是在您想要创建支持流式文本响应的丰富交互式用户界面时。

幸运的是,有一个新工具可以帮助您在几分钟内创建AI聊天机器人:Vercel AI SDK。Vercel AI SDK是一个开源库,可帮助您在JavaScript和TypeScript中构建对话,流式处理和聊天用户界面。它支持 React/Next.js、Svelte/SvelteKit,即将支持 Nuxt/Vue。

Vercel AI SDK还集成了流行的开源和云LLM(大型语言模型),如OpenAI,Hugging Face和LangChain。这意味着您可以利用 GPT-4 等最先进的 NLP 模型的强大功能为您的用户生成逼真且引人入胜的聊天响应。

在这里,我们将学习如何使用 Next Js、GPT 4 和 Vercel AI SDK 创建一个简单的 AI 聊天机器人。

Next Level AI 开发:深入了解 Vercel AI SDK

各位AI粉丝大家好!今天,我想与您分享人工智能驱动的Web开发领域的一个令人兴奋的发展。我一直在探索Vercel AI SDK,这是一个开源库,在技术界掀起了波澜。这个强大的工具集允许开发人员轻松构建边缘就绪的 AI 驱动的流媒体文本和聊天 Web 应用程序,我很高兴与您分享我的发现。

Deno KV

我对Deno KV很感兴趣,它将自己描述为“全球应用程序的全局数据库”。它是Deno应用程序的K/V存储,它捆绑了某种全球分布式/复制数据库服务。

代码示例如下所示:

const kv = await Deno.openKv();

等等,这看起来像是核心语言功能?他们是否将自己的专有托管云数据库作为其核心语言的一部分提供客户端?

它们不是 - 至少不是在Deno的开源实现中。我挖了进去,我想我明白他们在做什么。

Java vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较Java的本机HTTP服务器和Rust的Hyper HTTP服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

Rust 是一种生成机器代码的编译语言,而 Java 也是一种生成在 JVM 内部运行的字节代码的编译语言。这种比较可能不太公平。无论如何,让我们运行测试并检查结果。

Go vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较 Go 的原生 HTTP 服务器和 Rust 的 Hyper HTTP 服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

比较是公平的,因为两者都是生成机器代码的编译语言。让我们运行测试并检查结果。

Deno vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较 Deno 的原生 HTTP 服务器和 Rust 的 Hyper HTTP 服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

这种比较很有趣,因为 Deno 本身是用 Rust 编写的。这种比较可能没有多大意义,因为 Rust 应该很容易胜过 Deno。主要区别在于Deno使用不同的HTTP服务器,称为flash。让我们运行测试并检查结果。

Bun vs Rust: Hello World HTTP 服务器性能测试

在本文中,我将比较 Bun 的原生 HTTP 服务器和 Rust 的 Hyper HTTP 服务器。根据我的研究,我发现 Hyper 是 Rust 方面最受欢迎的服务器选择。如果有更好和流行的替代品,请告诉我。

这种比较可能没有多大意义,因为 Rust 应该很容易胜过像 Bun 这样的解释运行时。让我们运行测试并检查结果。

在 Rust 中使用 C 库

今天,我想深入探讨我们在尝试用 Rust 重写 IoT Python 代码时遇到的一个困难:特别是 FFI,或“外部函数接口”——允许 Rust 与其他语言交互的位。一年前,当我尝试编写 Rust 代码以与 C 库集成时,现有的文档和指南经常给出相互矛盾的建议,我不得不自己磕磕绊绊地完成这个过程。本指南旨在帮助未来的 Rustaceans 完成将 C 库移植到 Rust 的过程,并使读者熟悉我们在执行相同操作时遇到的最常见问题。

在本指南中,我们将讨论如何使用 bindgen 将 C 库函数公开给 Rust。我们还将讨论此自动工具集的局限性,以及如何检查您的工作。公平警告:正确实施 FFI 是 Rust 困难模式。如果你是 Rust 的新手,请不要从这里开始。通读这本书,写一些练习代码,然后在你完全熟悉借阅检查器后再回来。

Rust FFI 和 bindgen:在 Rust 中集成 C 代码

我越听说在不同的渠道采用嵌入式 Rust,似乎有一个反复出现的主题。主题是似乎有些人认为 Rust 的采用将逐渐发生。这意味着许多项目完全从头开始采用 Rust 的可能性可能较小。相反,一些项目会将新的 Rust 代码集成到现有的 C 或 C++ 代码库中,或者将现有的 C 或 C++ 库集成到 Rust 项目中。因此,对于有兴趣进入嵌入式的人来说,获得做这些事情的能力将是有益的。

;Echo Shell 注入

这是一篇关于 shell 注入的介绍性文章,shell 注入是一个安全漏洞,允许攻击者在用户的计算机上执行任意代码。这是一个经过充分研究的问题,并且有简单有效的解决方案。以这样一种方式设计库 API 相对容易,以保护应用程序开发人员免受 shell 注入的风险。

我写这篇文章有两个原因。首先,今年我在三个不同的库中指出了这个问题。看来,尽管这个问题得到了很好的研究,但它并不为人所知,所以只是重复一些事情可能会有所帮助。其次,我最近报告了一个关于VS Code API的相关问题,我想将这篇文章用作GitHub的扩展评论:-)

<3 Deno

Deno是一个相对较新的JavaScript运行时。我发现非常有趣和美观,符合最近支配软件进化的“越差即好”规律的趋势。这篇文章解释了原因。

构建大型 Rust 项目: pacakges, crates 和 modules

好的判断力是经验的结果,经验是错误判断的结果。

Mark Twain.

IC 公司的 Rust 代码库从 2019 年 6 月的空存储库增长到 2022 年初的近 350,000 行代码。这种快速增长告诉我,对于相对较小的项目来说,运作良好的决策可能会随着时间的推移开始拖累项目。本文评估了 Rust 代码组织选项,并提出了有效使用它们的方法。

使用 Go Module Proxy

我们严重依赖大型Go monorepo 进行后端开发,它提供了代码可重用性和可发现性等优势。然而,随着我们的不断发展,管理大型 monorepo 带来了一系列独特的挑战。

例如,使用 Go 命令(如 go get 和) go list 在获取驻留在大型多模块存储库中的 Go 模块时可能会非常慢。这种缓慢状态会影响开发人员的工作效率,给我们的持续集成 (CI) 系统带来负担,并使我们的版本控制系统主机 (VCS) GitLab 不堪重负。

在这篇博文中,我们将了解 Go模块代理 Athens 如何帮助改善我们使用大型 Go monorepo 工程师的开发人员体验。

For 可以做更多的事情

Elixir 有一个 for 的特殊形式,称为“列表推导式 (list comprehension)”,大多数人对它的全部能力并不完全理解。它可以做的不仅仅是一个简单的 for 循环,实际上它有点像 Enum 和 Stream 模块聚在一起并且有一个宏。我想让你知道这件事!

使用 GitHub Actions 部署跨平台 Rust 二进制文件

如果您准备发布你的第一个版本 Rust 项目,您可能希望将一些包含预构建二进制文件(适用于 macOS、Linux 和 Windows)的资产上传到您的 GitHub 发布页面。这是使您的项目广泛可用的最早步骤之一,并且在设置其他安装方法(如Homebrew)时将有很大帮助。但是,弄清楚交叉编译并不容易,尤其是在通过 GitHub Actions 进行交叉编译时。

何时使用Rust,何时使用Go

一开始,Go和Rust之间就有明显的区别。Go更专注于构建Web API和小型服务,这些服务可以无限扩展,特别是在 Goroutines 的强大功能下。Rust也可以实现后者,但从开发人员体验的角度来看,事情要困难得多。

Rust可以很好地处理大量数据和其他CPU密集型操作,例如执行算法。这是Rust对Go最大的优势;要求高性能的项目通常更适合Rust。

在本教程中,我们将比较Go和Rust,评估每种编程语言的性能、并发性、内存管理和整体开发人员体验。我们还将介绍这些元素的概述,以帮助您为您的项目选择正确的语言。

使用 Oak 和 Deno KV 构建 CRUD API 服务

Deno KV是最早内置在运行时中的数据库之一。这意味着您无需执行任何额外的步骤,例如预配数据库或复制和粘贴 API 密钥即可构建有状态应用程序。要打开与数据存储的连接,只需编写:

const kv = await Deno.openKv();

除了作为具有简单和灵活 API 的键值存储之外,它还是一个具有原子事务、一致性控制和极高性能的适用于生产环境的数据库。

通过这个介绍性教程,您将学习如何使用 Deno KV 构建用 Oak 编写的简单有状态 CRUD API 服务。我们将介绍:

  • 二级索引
  • 原子事务
  • 列表和分页

在我们开始之前,Deno KV 目前在 Deno 1.33 及更高版本中通过 --unstable 标志使用。如果您有兴趣在Deno Deploy上使用Deno KV,请加入候补名单,因为它仍处于封闭测试阶段。

请按照下面操作或查看源代码。

2023 年 Java 程序员路线图

软件开发是IT领域中最有价值的职业之一。

Java是最受欢迎的编程语言之一。

如果 Java 平台呼唤您,并且您想沉浸在 Spring、Jakarta EE、Maven、Jenkins 和 Android 开发的世界中,这里是开发人员可以遵循的 2023 年 Java 路线图。

CommonJS 正在损害 JavaScript

JavaScript,无可争议的Web开发之王,正在被破坏——不是被竞争对手的语言或革命性的新技术所破坏,而是被它自己过去的包袱所破坏。这个阴险的破坏者就是CommonJS,一个我们已经容忍了太久的古董模块系统。

改进 Rust 编译时间以实现内存安全

Rust 编译时间经常被视为需要改进的领域,包括在年度社区调查中。缓慢的编译时间可能会成为其被采用的障碍,因此改进编译时间有助于扩大 Rust 语言的影响。这也是我们的目标之一:提高更多内存安全软件的潜力,特别是在互联网基础设施的最关键部分(例如网络、TLS、DNS、操作系统内核等)。