获取代码建议

watsonx Code Assistant

使用聊天对话或在编辑器中完成代码,生成代码建议。

使用聊天对话

输入提示,说明您需要的代码,watsonx Code Assistant将生成您可以选择使用的代码。

  1. 要开始新的聊天对话,请单击聊天图标 新聊天
  2. 提出问题或下达指令。
  3. 单击发送图标“发送”。Watsonx Code Assistant 将您的输入发送到代码模型,并在聊天中显示响应。

选择 watsonx Code Assistant 上次产生良好结果的消息,然后在新聊天中继续对话。

  1. 要在新聊天中使用以前的信息或现有信息,请单击开始新聊天图标开始新聊天
  2. 提出问题或下达指令。
  3. 单击发送图标“发送”。Watsonx Code Assistant 将您的输入发送到代码模型,并在聊天中显示响应。

在聊天和编辑器之间传输代码

当您收到想要使用的代码建议时,您可以将聊天中的代码块插入到编辑器中。

  1. 将光标置于编辑器中。
  2. 在聊天中,点击插入光标图标 Insert at Cursor(在光标处插入 )。

如果您在编辑器中有代码,并希望将其作为聊天背景,您可以将其复制到聊天中。

  1. 在编辑器中突出显示代码。
  2. 右键单击显示弹出菜单。
  3. 请选择 watsonx Code Assistant
  4. 选择将选定的代码添加到聊天中

使用自然语言

每条聊天信息都是聊天对话的一部分。 围绕特定主题或任务进行对话。 当您将上下文切换到另一种编程语言、工作区中的另一个项目或不同的编程任务时,请创建一个新的聊天对话。 您可以获得与问题更相关的结果。

示例:

  • Create a Python class Customer. Include attributes for firstName, lastName and age.
  • Create a JavaScript function that fetches data from a REST API endpoint, dynamically populates an HTML table with the results, and updates the UI asynchronously

使用提示库

Watsonx Code Assistant包含一个提示库,其中包含一组常用的自然语言编码请求。 您可以在聊天中按原样使用,也可以根据自己的使用情况进行修改。

访问提示图书馆:

  1. 单击打开菜单图标打开菜单
  2. 单击提示库打开。
  3. 单击复制到剪贴板图标复制到剪贴板
  4. 再次点击 "提示图书馆关闭。
  5. 将提示粘贴到聊天内容中。

编写有效的聊天信息

为了在对话中取得最佳效果:

  • 用英语书写聊天信息。
  • 从简单明了的指令开始。
  • 利用随后的聊天信息完善模型的代码输出。
  • 每个步骤都要尽可能具体和详细。 您可以通过随后的聊天信息逐步完善创建的代码。
  • 在信息中使用文件和方法引用来提供相关上下文。 例如,如果您想让模型创建一个与另一个方法相似的方法,请在信息中添加 "similar to @<method>
  • 如果你发现答案变得不那么相关了,或者如果你开始了一项新任务,就创建一个新的聊天对话,然后从那里开始工作。 最好是有许多简短的聊天对话,每个对话都有特定的背景,而不是一个大型对话,因为大型对话可能会用不同的、不相关的聊天信息来混淆模型。

在工作区中引用代码

若要在本地工作区中提出问题或修改特定文件、类、函数或方法,可以使用代码参考。 这些参考资料提供了重要的背景信息,有助于提高答案的准确性。

  1. 在聊天信息中输入 "@ 符号,即可查看工作区中的文件、类和方法列表。
  2. 输入要引用的文件、类或方法名称的字符,筛选列表。
  3. 单击以选择参考文献。Watsonx Code Assistant会将参考文献的内容作为信息的一部分发送。

.gitignore 中的条目不作为代码参考选择。 如果您有敏感数据,如 .env 文件,请确保将其添加到 .gitignore

打开本地工作区文件夹时,watsonx Code Assistant 会在内存中创建这些项目的索引,以便在聊天中引用这些文件和函数。 编辑器还会为您在会话期间添加或更改的文件编制索引。 该索引包含多达 1,000 个这些编程语言的最新文件:

  • C
  • C++
  • 执行
  • Java
  • JavaScript
  • Python
  • TypeScript

文件索引仅适用于本地存储库。

当您引用方法或在方法上使用 CodeLens 时,watsonx Code Assistant 支持某些代码语言。 引用完整文件适用于所有语言。 更多信息,请参阅 使用方法时的语言支持

引用文件时,大小限制为 50 KB。 如果达到此限制,请将文件分割成单个函数,并引用每个函数。 或者,将文件分割为 49 KB,注意函数边界,并在每次分割时引用文件。 无论采用哪种方法,都需要合并结果。

带有参考代码示例的用例:

引用代码的聊天信息
用例 示例消息
根据现有函数生成函数 创建与 @send_code_explanation_message 相似的方法 "send_translate_message
生成遵循现有单元测试的单元测试 为@getName创建一个与@testLoadTablesChildConnectionReceiverJob.h 中的单元测试类似的单元测试
增强现有功能 在 @format_documents 中添加错误处理和日志语句
增强现有功能 更新@setEmail并对空字符串进行错误处理
解释代码 @mainmain.py要做什么
解释代码 解释 @send_invoice 的逻辑
为函数和类生成文档 将 JavaDoc 添加到 @ 客户

检索增强生成

标准套餐

使用标准计划,贵组织可以配置检索增强生成 (RAG),这是通过使用附加上下文进行提示增强来优化大型语言模型 (LLM) 输出的过程。 更多信息,请参阅 设置检索增强生成(RAG)

如果您提交查询,watsonx Code Assistant 会使用 RAG 工具从您的代码库或文档中检索信息。 在将查询发送给 LLM 模型之前,相关上下文会被附加到查询中。 RAG 系统确定需要纳入或排除的信息来源,以生成具有最有用信息的回复。

RAG 要求 watsonx Code Assistant 标准计划和 Visual Studio Code 扩展。 它不能与 Eclipse 插件一起使用。

当 Git 资源库启用 RAG 后,在聊天对话中输入 @repo < instruction >@docs < instruction >,就会生成使用矢量存储中引用的资源库或文档的上下文的回复。 用提示信息取代 < instruction > 参数。

  • 使用引用代码库的语法示例:

    @repo how is a chat message processed?
    
  • 使用引用文档集的语法示例:

    @docs What are the steps to setup a connection to the user data store?
    

使用聊天命令

您可以用来执行某些任务的聊天命令:

聊天命令
命令 描述 了解更多信息
/document 为活动工作区中的引用文件、方法或类生成文档 生成文件
/docs 提出参考IBM和Red Hat产品文档的问题 从IBM文档中获取答案
/explain 使用生成式人工智能分析和总结代码,了解代码的作用 解释代码
/help 快速获取有关任务的帮助 在聊天中输入 "/help
/unit-test 为各种编程语言生成单元测试 生成单元测试
/translate 将代码从一种语言翻译成另一种语言 翻译代码
@repo 与检索增强生成(RAG)一起使用 启用 RAG
@docs 与检索增强生成(RAG)一起使用 启用 RAG

管理聊天对话会话

您可以使用聊天会话菜单管理现有的聊天会话。

打开菜单:

  1. 单击打开菜单图标打开菜单
  2. 单击聊天会话

切换聊天对话会话

要在聊天会话之间切换,请从聊天会话列表中选择会话。

重新命名聊天会话

重新命名聊天对话会话:

  1. 在聊天会话中,单击溢出菜单图标溢出菜单
  2. 单击重命名
  3. 键入新名称,然后按 Enter。

删除聊天会话

要删除单个聊天会话,请执行以下操作

  1. 在聊天会话中,单击溢出菜单图标溢出菜单
  2. 单击删除

删除多个聊天会话

  1. 点击选择聊天图标选择聊天
  2. 选择要删除的聊天记录,或点击全部选择
  3. 单击删除图标“删除”,然后单击“删除”按钮确认。

在编辑器中完成代码

在编辑器中输入代码或注释,获取代码建议。

在Eclipse中使用编辑器

适用于 C、C++、Go、JavaScript,、Python 和TypeScript:

  1. 右键单击文件。
  2. 单击“用打开”,然后单击“文本编辑器”。

对于Java,watsonx Code Assistant支持使用Eclipse IDE中的Java编辑器生成内联代码,但首先需要进行设置。

  1. 转到Eclipse设置中的内容助手。

    内容辅助导航
    操作系统 路径
    MacOS Eclipse> 设置 >Java> 编辑器 > 内容辅助
    Windows 窗口 > 偏好设置 >Java> 编辑器 > 内容辅助
  2. 插入部分,清除自动插入单个建议

  3. 在 "自动激活部分,将 "._abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 添加到 "**Java"的自动激活触发器 **,并确认已选中 "启用自动激活

  4. 单击应用并关闭

单行完成

当您在编辑器中写下一行代码时,watsonx Code Assistant会建议您使用代码来完成它。

  1. 开始输入一行代码,然后暂停。
  2. Watsonx Code Assistant会添加一个代码建议,以完成您键入的行。
  3. 在 Visual Studio Code中,按 Tab 键接受建议。 在 Eclipse 中,按 ReturnEnter 键接受建议。 或按 Esc 键拒绝。

多行完成

您可以根据输入的一行代码或注释获得多行代码建议。

  1. 开始键入一行代码,或输入一个注释来描述你想要的代码。

    为了达到最佳效果,请在注释中注明预期的编程语言,例如:"......":

    // Sort an array with a fast sort function (TypeScript programming language)
    
  2. 使用键盘快捷键。

    默认键盘快捷键
    操作系统 快捷方式
    MacOs 选项+。
    Windows Alt+。
  3. Watsonx Code Assistant添加多行代码建议。

  4. 在 Visual Studio Code中,按 Tab 键接受建议。 在 Eclipse 中,按 ReturnEnter 键接受建议。 或按 Esc 键拒绝。

禁用特定代码语言的代码补全功能

如有必要,您可以使用 Completion: Disabled Languages 设置来禁用 Visual Studio Code 扩展中的特定代码语言的代码补全功能。

  1. 打开 watsonx Code Assistant 扩展设置。

  2. 点击 “添加项目” 选择代码语言。 选项有:

    代码语言
    选择 代码语言
    c C
    cpp C++
    go 执行
    java Java
    javascript JavaScript
    javascriptreact JavaScript 反应
    python Python
    typescript TypeScript
    typescriptreact TypeScript 反应

要重新启用代码语言,您可以将其从列表中移除。

  1. 点击列表中的代码语言。

  2. 单击删除项目图标关闭图标,将其从禁用语言列表中删除。

更改键盘快捷键

如果默认组合已分配给其他任务,则可以更改键盘快捷键。

在Visual Studio Code 中更改键盘快捷键:

  1. 点击代码菜单。
  2. 选择设置
  3. 选择键盘快捷方式
  4. 搜索 "watsonx
  5. 对于要更改的快捷方式,单击“更改按键绑定”编辑铅笔图标并指定不同的组合键。

在Eclipse 中更改键盘快捷键:

  1. 点击 Eclipse 菜单。
  2. 选择设置
  3. 输入 "Keys 过滤设置,然后单击 ""。
  4. 输入 "WCA 过滤列表。
  5. 选择要更改的键盘快捷键。
  6. 绑定字段中,输入新的组合键。

禁用代码自动完成

如有必要,您可以在编辑器窗口中禁用代码自动补全功能。

在Visual Studio Code 中禁用代码自动补全功能:

  1. 在编辑器右下角,单击禁用 watsonx Code Assistant 完成图标图像
  2. 您可以通过再次单击启用watsonx Code Assistant完成图标来重新启用完成功能。

要禁用 "Eclipse IDE中的代码自动补全:

  1. 在编辑器工具栏中,单击禁用watsonx Code Assistant补全图标。
  2. 您可以通过再次单击启用watsonx Code Assistant完成图标来重新启用完成功能。

生成代码建议的最佳实践

使用这些小窍门可获得最佳效果。

使用聊天功能输入较长的代码块。 使用编辑器内代码生成功能来完善代码和模板代码。

使用聊天功能:

  • 生成课堂大纲
  • 详细指定方法
  • 用更多说明完善建议的代码(例如,重命名或替换)

使用编辑器内代码生成功能:

  • 完成开始键入的代码行
  • 自动创建模板代码,如获取器和设置器
  • 创建只需一行注释即可描述的方法和代码

注释到代码:使用描述性注释,而不是指令

在编辑器中使用“注释到代码”时,请编写注释,描述预期的行为,就像为自己编写的代码编写注释一样。 例如,使用“//return even numbers from an arraylist 或”//method that returns even numbers from an arraylist

不要将注释写成指令,例如 "//write a method that returns even numbers from an arraylist。Watsonx Code Assistant使用的模型经过训练,可以在包含许多典型描述性注释的数据上完成代码,因此这些类型的注释会产生更好的结果。

用于编辑器内代码生成的上下文

代码生成的关键要素是上下文,即您传递给模型的周围代码。 对于编辑器内代码生成,watsonx Code Assistant使用:

  1. 触发生成的那一行之前的 20 行代码。
  2. 触发生成后的 20 行代码。
  3. 从触发生成的当前文件开头算起,最多 200 行。
  4. 最多 5 个代码片段,这些代码片段与触发生成的行周围的代码相似。 这些片段取自您用与当前文件相同的编程语言打开的最近 10 个文件。

改进编辑器内代码生成的结果:

  • 打开工作区中包含代码的文件,让watsonx Code Assistant了解这些代码。Watsonx Code Assistant会尝试在这些文件中查找与您触发补全的代码类似的代码,例如使用类似类和变量的方法,然后将这些代码作为上下文发送给模型。
  • 帮助watsonx Code Assistant从类定义或添加导入语句开始,或者使用watsonx Code Assistant聊天工具创建初始大纲,将结果复制到工作区的文件中,然后继续在编辑器内生成代码。 从零文件或几乎为空的文件开始时,不要使用编辑器内代码生成,因为这些条件无法提供足够的上下文。