Supercharge your tools with AI-powered features inside many JetBrains products
构建智能体很奇妙。你不是在编写执行任务的代码, 而是在编写让 LLM 有能力执行任务的代码,LLM 决定该做什么。 什么是智能体? 智能体就是一个 LLM,它会循环调用你的函数,直至确定任务已完成。 这种转变需要一些时间来适应。你赋予智能体读取文件的能力,智能体决定要读取的文件和读取时间。你可能预计智能体会最先读取主文件, 但智能体却先读取三个测试文件,以了解相关模式。你没有告诉智能体这样做, 但它就是这样做了。 那么,你应该赋予智能体哪些能力呢? 赋予智能体的能力过多,它将无法做出正确选择。赋予智能体的能力过少,它将无法完成任务。找到平衡点意味着不断尝试,观察哪里出了问题,然后再进行调整…
在上一篇文章中,我们了解了如何构建具有列表、读取、写入和编辑能力的基本编码智能体。今天,我们将深入探讨如何通过在 Koog 框架内创建附加工具来扩展智能体的能力。我们将以构建 ExecuteShellCommandTool 为例,教会智能体运行代码,并形成实际工程所依赖的反馈回路:运行代码、观察失败,并根据实际输出改进代码。 尽管 LLM 通常擅长避免语法错误,但在处理集成问题时仍存在困难。例如,它们有可能会调用不存在的方法、遗漏导入,或仅部分实现接口。编译和运行代码的传统方式会立即暴露这些问题。但有了少量的额外提示,我们可以促使 LLM 运行小规模测试来验证此类行为。 那么,我们如何构建这类…
本系列的前几篇文章: 使用 Kotlin 构建 AI 智能体 – 第 1 部分:极简编码智能体 使用 Kotlin 构建 AI 智能体 – 第 2 部分:深入探讨工具 读完两篇文章,我们知道,我们的编码智能体已经能做很多事情了。它可以探索项目、读写代码、执行 shell 命令和运行测试。我们在上一篇文章中添加了一个完成定义 (DoD),使其拥有所需的反馈循环,现在,智能体会进行迭代,直至所有测试都通过,而不是由它自己决定何时完成。 我们应该庆祝一下,对吧? 是,也不是。 随着智能体能力越来越强,调试变得更具挑战性。每个工具都会增加难度。DoD 循环增加了更多的调用和 token。可能需要…
本系列的前几篇文章: 使用 Kotlin 构建 AI 智能体 – 第 1 部分:极简编码智能体 使用 Kotlin 构建 AI 智能体 – 第 2 部分:深入探讨工具 使用 Kotlin 构建 AI 智能体 – 第 3 部分:密切观察 在上一篇文章中,我们了解了如何设置跟踪,这给我们提出了两个新问题:根据此工具提供的信息,我们应该进行哪些尝试? 我们可以利用智能体的观察结果改进智能体的哪些部分? 我们最初的想法是试验子智能体,或者更具体地说,使用 find 子智能体。这将让我们有机会了解,Koog 如何使实现子智能体等常见模式变得更加容易。我们的假设是,find 子智能体可以在保持甚至提升…
每位开发者都深知这样一种权衡: 你可以走捷径,解燃眉之急却给未来埋雷;也可以选慢路,耗时费力但能赢得长久的稳健。 随着 AI 智能体(AI Agents)在实际工作流中的普及,这一困境愈发明显。唯快不破的诱惑固然很大,但如果缺乏信任支撑,这种“快”往往得不偿失——不仅省不了时间,反而要花更多精力去收拾烂摊子。 核心问题不在于智能体跑得有多快,而在于它们干活靠不靠谱。只有当“信任”与“速度”形成合力,生产力才会真正爆发。而在这一公式中,信任是不可或缺的起点。 AI 智能体:超越自动化,成为真正的“队友” AI 智能体不只是软件,它们是将目标转化为行动的协作伙伴。 它们之所以超越了简单的自动化脚本…
如果您曾尝试过构建由多个 AI 智能体组成的系统,很可能会遇到难题。 一开始很简单:您有一个智能体负责撰写博文,另一个智能体负责校对博文,或许还有第三个智能体负责建议或生成图像。 单独来看,它们都很高效。 但要让它们协同工作呢? 往往这个时候就会开始出现问题。 每个智能体都有自己的一套“语言”:一个使用不同的 API 接口,另一个有自己的消息格式,而且它们可能都有特定的身份验证要求。 要让它们彼此通信,就意味着需要为每一个连接编写自定义的集成代码。 结果,您无法专注于让各个智能体变得更智能、更快速或更有用,而是被困在为它们搭建沟通桥梁上。 A2A 的作用:跨智能体通信层 这就是 Agent2A…
Koog 是 JetBrains 的开源框架,用于在 Kotlin 中构建 AI 智能体,有一天我测试了以它为基础构建的智能体。 我给智能体投喂了一个来自 SWE-bench-Verified 的任务,这是一个真实世界 GitHub 问题,测试 AI 是否真的能够编写代码。 前 100 条消息看起来一切顺利。 智能体系统地浏览代码库、识别 bug、编写测试用例,并尝试修正问题。 但随着对话的深入,它遇到一个根本性限制:上下文窗口。 每个 LLM 都有上下文大小上限(可以同时处理的文本总量)。 当智能体的对话历史记录接近上限时,你需要想办法压缩。 单纯截断旧消息会丢失关键信息,粗略的总结往往又会…
我们为 Kotlin 社区带来了一些好消息! 在今年的 KotlinConf 上,我们将推出 Koog,这是一个创新型开源智能体框架,可以帮助开发者使用现代 Kotlin DSL 在 JVM 生态系统中构建 AI 智能体。 我们设计 Koog 是为了向开发者提供创建智能、自主代理所需的工具,并让他们能够像使用 Kotlin 一样轻松高效地进行日常开发。 这是将 Kotlin 打造成一流 AI 语言的重要里程碑,我们非常期待社区构建的成果。 尝试 Koog 我们为什么要为 Kotlin 构建智能体框架 起初,我们都对聊天助手和 LLM 的潜力感到震惊。 但随着这些模型的发展,它们的能力显然远远超…
如果您一直在跟随我们的历程,您可能已经阅读过我们最近的博文完成不可完成的补全任务:JetBrains IDE 中 AI 补全的现状。 在那篇文章中,您可能还记得这张很酷的代码补全图表。 4 月份出现了些有趣的变化:我们的接受率有所上升,显式取消率(explicit cancel rate)有所下降。 在这篇博文中,我们将分析为什么以及如何在不重新训练生成模型的情况下获得这样的结果。 不能只依靠 LLM 提供代码建议的 LLM 是 AI 代码补全的核心,但不是全部。 幕后有很多事在发生,特别是在插件方面,例如决定: 何时显示建议。 建议应该是单行还是多行。 建议应该显示还是隐藏 – 例如…
Kotlin 开发者现在可以通过新推出的 JetBrains AI Assistant 插件(Beta版)在 Android Studio 中提升工作流程。 该插件提供 AI 驱动的编码辅助功能,包括代码建议、AI智能解释、重构建议、提交信息生成等——所有功能都集成在 Android Studio 中。依托 JetBrains 及第三方的大型语言模型(LLMs)1支持,它能帮助您更快地编写更优质的代码。 如何开始使用 要启用 AI Assistant,需使用 Android Studio Meerkat 2024.3.1 版本,进入插件市场搜索JetBrains AI…
AI 模型发展迅猛,DeepSeek-R1 作为 OpenAI 的强劲竞争对手正在引起轰动。 但是,这些模型有多了解 Kotlin? 它们能否生成可靠的代码、解释棘手的概念和帮助调试? JetBrains Research 使用 KotlinHumanEval 和针对 Kotlin 相关问题设计的新基准测试了最新的 AI 模型,包括 DeepSeek-R1、OpenAI o1 和 OpenAI o3-mini。 我们考察了它们的整体表现,根据结果进行了排名,并研究了 DeepSeek 对实际 Kotlin 问题的回答,让您更清楚地了解这些模型能做什么和不能做什么。 AI 模型 Kotlin 基…
自 JetBrains IDE 2024.3 版本起,AI Assistant 不仅可以访问您项目中的上下文,还可以访问 IDE 自身技术文档。当您在使用 WebStorm、IntelliJ IDEA 或 PyCharm 时遇到操作难题,AI Assistant 将即刻启动交互式引导,为你提供帮助。 功能引导 - 如何使用该功能? 只要您使用 AI Assistant,该功能便开箱即用。当您提出一个与 IDE 相关的问题时,AI Assistant 将自动进行搜索。但如果您希望 AI Assistant 的搜索限定在官方文档范围,请使用 /docs 命令: 如果在…
提交此表单,即表示我同意 JetBrains s.r.o. ("JetBrains") 使用我的姓名、电子邮件地址和位置数据向我发送简报和商业通讯,并为此目的而处理我的个人数据。我同意 JetBrains 根据 JetBrains 隐私政策为此目的使用第三方服务处理上述数据。我了解我可以在我的个人资料中随时撤回此同意。此外,每封电子邮件中也都包含退订链接。
谢谢!