Supercharge your tools with AI-powered features inside many JetBrains products
在上一篇文章中,我们了解了如何构建具有列表、读取、写入和编辑能力的基本编码智能体。今天,我们将深入探讨如何通过在 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 子智能体可以在保持甚至提升…