译者 | 李睿
审校 | 重楼
在不断发展的软件开发环境中,与代码库进行对话式交互可以改变游戏规则。
想象一下,有一个工具可以理解你的代码,可以回答你的问题,提供见解,甚至帮助你调试问题——所有这些都是通过自然语言查询实现的。本文将引导你完成创建对话式人工智能的过程,该过程允许使用Chainlit、Qdrant和OpenAI与你的代码进行对话。
对话式人工智能对代码库的好处
- 简化代码审查:快速审查特定的代码模块并了解其场景,而无需花费更多的时间挖掘文件。
- 高效调试:询问代码中潜在的问题,并获得有针对性的响应,这有助于减少故障排除所花费的时间。
- 增强学习: 新的团队成员可以了解代码中不同组件的工作原理,而无需向现有的代码专家学习。
- 改进文档:使用人工智能进行总结有助于生成复杂代码的解释,从而更容易增强文档。
以下介绍是如何做到这一点的。
为交互准备代码库
第一步是确保代码库已经准备好进行交互。这可以通过将代码向量化并将其存储在向量数据库中来实现,从而有效地对其进行审查。
Python
现在了解上述代码值得注意的方面。
- 加载代码文件并将其分块为可管理的部分。
- 分块是一个非常重要的环节。块的大小不应过小,以至于你想要了解的函数或模块可以在多个块中使用;也不应该太大,以至于多个函数或模块被压缩到一个块中;这两种情况都会降低检索质量。
- 使用OpenAI的text- embeddings -ada-002模型为每个块生成嵌入。
- 在Qdrant中处理和存储嵌入以增强检索。
- 向代码块中添加元数据将有助于检索特定的组件,并使代码对话功能更加强大。
- 为简单起见,使用了一个文件夹路径,其中放置了用于构建这个对话模块的两个代码文件。这个设置可以进一步扩展,以便指向GitHub上的URL。
- 使用2个Python文件,即ragwithknowledgegraph.py和ragwithoutknowledgegraph.py用于生成代码块的嵌入向量,并将其存储在矢量数据库中,可以通过聊天界面对其进行提问。
构建对话界面
现在将设置一个Chainlit界面,该界面接受用户输入,查询Qdrant,并返回关于代码的场景相关信息。
Python
上述代码的重要方面包括:
- 初始化Chainlit并配置其与OpenAI和Qdrant交互。
- 为输入生成查询向量,以帮助从Qdrant检索相关代码片段。
- 定义一个提示模板,将从Qdrant检索到的场景与用户的问题结合起来。
- 将场景和问题提供给OpenAI的语言模型,并将生成的答案返回给用户。
- 需要注意的是,为了更好地理解,简化了一些实现。
聊天界面的输出
以下了解当要求总结其中一个代码文件时聊天界面生成的输出。如上所述,将2个Python文件加载到vector db,并要求概述其中一个脚本。
这两个脚本中,一个使用了知识图谱来实现一个简单的RAG(检索增强生成)用例,而另一个则没有使用。大型语言模型(LLM)以自然语言的方式很好地完成了对脚本的概述。
下一步骤
- 通过整合额外的元数据来识别代码的各个方面,从而改进检索。
- 将聊天界面集成到GitHub URL中,并导入可用于提问的代码库。
- 通过询问具体和广泛的问题来测试应用程序,以了解应用程序对场景的理解程度。
- 工程师使用各种不同的提示进行提示和测试检索。
结论
创建一个能够理解你的代码库的对话式人工智能,将在开发过程中解锁一个新的效率和洞察力水平。无论是在简化代码审查、加速调试,还是增强团队协作,这种方法都提供了巨大的价值。通过这种简单的方法,可以改变与代码交互的方式。
原文标题:Chat With Your Code: Conversational AI That Understands Your Codebase,作者:Prince Bose,Tharakarama Reddy Yernapalli Sreenivasulu,Pavan Vemuri
链接:https://dzone.com/articles/conversational-ai-that-understands-your-codebase。