构建创新的AI工具,以革新GitHub发出管理ð¦¾
#javascript #编程 #githubactions #githubhack23

我建造的

我已经开发了一种创新的github动作,该动作通过人工智能的力量增强了GitHub问题。它的主要功能包括查找相关问题,提供有关问题和所有相关评论的简明摘要,产生进度更新,推荐合适的标签等。

类别提交:

维护者的必备品:使开源维护者的生活更加容易。

应用链接

https://github.com/marketplace/actions/clarify-and-improve-issues-with-openai-gpt

屏幕截图

https://github.com/MaurerKrisztian/issue-improver-action-demo/issues/2

Image description

Image description

Image description

描述

可以触发此GitHub操作以收集相关问题数据,对OpenAI GPT模型进行有效的评论/建议。

基本上,它是这样的工作:提示发送到GPT模型,其响应是对问题的评论。提示文本可以包含占位符,例如{{issueTitle}}{{issueBody}}{{allComments}}等。这些占位符被当前问题的实际数据替换,但它们还可以包括其他信息,不仅限于问题本身。

    "summary": {
      "title": "Summary",
      "prompt": "Provide a concise summary of the main points and objectives presented in the issue '{{issueTitle}}' and its content: {{issueBody}}."
    },

关键组件之一是“部分”。每个部分必须至少具有标题和提示参数。在操作工作流程YML中,您可以指定所需的部分。在操作运行期间,使用OpenAI GPT模型处理所选部分的提示。这些提示具有默认值(请参阅src/config/default-config.ts),但是您可以完全自定义它们并创建自己的部分。生成的响应将作为评论添加到该问题中。

内置部分和输入:

输入 必需 默认 info
OpenAi-key n/a OpenAI API键
config-file essue-improver-config.json 配置文件
与添加相关的问题节 false 创建一个相关问题部分。
附加符号 false 创建摘要部分。
附加仪式 false 创建评论摘要
add-Custom section n/a 自定义部分标题/ID逗号分隔字符串。 “*”意味着全部。
添加标签段 false 创建标签建议
模型 'text-davinci-003' OpenAI模型
max-tokens 150 OpenAi max_tokens(响应长度)
调试模式 false 启用调试模式:不要创建评论
  • 相关问题节
    在开放问题之间找到相关问题。有些问题是重复的,而另一些问题相互关联。这些细节对维护者很有用。

  • 标签部分
    该动作将分析问题和所有可用标签,描述和数据,以建议相关标签。

  • 摘要部分
    总结问题文本。

  • 自定义段
    在配置文件,特别是在sections.custom部分下,您可以使用自己的提示创建自定义部分。

  • 评论 - 萨华章
    总结本期本期的所有评论,进行进度报告等。有时,某些GitHub问题可能会以大量的评论而感到不知所措,因此很难理解这种情况。为了解决这个问题,我已经开发了评论摘要功能。

调试模式

如果打开调试模式,它将执行以下操作:解决提示,为您提供更多有关正在发生的事情的详细日志,而不是创建评论。要启用此内容,请将debug-mode输入设置为true

如果您想在没有发表任何问题的情况下测试操作,则打开调试模式很有用。这将使您可以查看日志,并查看如果关闭调试模式,将创建哪些评论。对结果感到满意后,可以关闭调试模式。

行动示例:

当新问题打开时,此操作将触发,
并创建一个评论,包括:相关发行部分,摘要部分,标签部分,自定义部分

name: Improve issues

on:
  issues:
    types: [opened]

jobs:
  gpt-comment:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Create useful comment with AI
        uses: MaurerKrisztian/issue-improver-action@v1
        with:
          openai-key: ${{ secrets.GPT_KEY }}
          max-tokens: 400
          add-related-issues-section: true
          add-summary-section: true
          add-label-section: true
          add-custom-section: "my_custom_section1,my_custom_section2"

评论摘要

下面的YAML代码演示了如何使用“!总结”命令来激活评论摘要,进度报告。

on:
  issue_comment:

jobs:
  comment-summary:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Comment summary
        uses: MaurerKrisztian/issue-improver-action@v1
        if: contains(github.event.comment.body, '!summarize')
        with:
          openai-key: ${{ secrets.GPT_KEY }}
          max-tokens: 400
          add-comment-summary-section: true

自定义部分:

所有部分提示都是完全可自定义的。
要创建自定义部分 /提示,只需创建一个JSON文件(位置是config-file输入),然后根据需要修改提示和部分标题。这将使默认配置(请参阅:src/config/default-config.ts)。

此外,您可以在配置文件中的sections.custom数组中添加新的自定义部分。

示例配置:

{
  "sections": {
    "custom": [
      {
        "title": "Joke",
        "prompt": "Make a joke about this: {{issueTitle}}"
      },
      {
        "title": "Poem",
        "prompt": "Write a short poem about this: {{issueTitle}}"
      }
    ],
    "relatedIssues": {
      "title": "Related Issues",
      "prompt": "From the list of open issues: {{openIssues}}, identify the most relevant ones related to '{{issueTitle}}' and provide a brief description of their similarities. Just the very simmilar related issues to '{{issueTitle}}' shoud be included in the answer, if none is very similar, andwer with 'none',"
    },
    "summary": {
      "title": "Summary",
      "prompt": "Provide a concise summary of the main points and objectives presented in the issue '{{issueTitle}}' and its content: {{issueBody}}."
    },
    "commentSummary": {
      "title": "Comment summary",
      "prompt": "Review the comments in {{issueComments}} for the issue '{{issueTitle}}' and its content: {{issueBody}}. Extract the key takeaways, notable updates, and any consensus reached, and provide a concise summary of the discussion."
    },
    "labelSuggestion": {
      "title": "Label Suggestion",
      "prompt": "Analyze the issue '{{issueTitle}}' and its content: {{issueBody}}, and suggest appropriate labels from the available labels {{allLabels}} that accurately represent the topic, scope, and complexity of the issue. The response shoud only include a label and why its suitable."
    }
  }
}

可用占位符:

名称 描述
{{issueTitle}} 问题标题
{{issueBody}} 问题主体
{{issueComments}} 所有问题评论
{{issueAuthor}} 发行创建者
{{allLabels}} 存储库中的所有可用标签
{{openIssues}} 存储库中的所有开放问题

为了优化github动作时间的使用情况,占位符的解决方案被缓存,只有在必要时解决。这有助于避免不必要的浪费有价值的GitHub行动资源。

如果您需要其他占位持有人,请打开问题或发送pr。

我已经设置了具有配置操作的演示存储库。随意探索并通过访问以下链接来尝试一下:https://github.com/MaurerKrisztian/issue-improver-action-demo

链接到源代码

https://github.com/MaurerKrisztian/issue-improver-action

允许许可证

什么

背景(是什么让您决定构建这个特定的应用程序?是什么启发了您?)

我创建此特定应用程序的灵感源于对AI可以帮助我们完成任务和简化过程的方式的好奇心。我想探索人工智能在提高生产率和效率方面的潜力。

我已经注意到,许多开源项目的维护人员和很多问题。有些问题是重复的,而另一些问题相互关联,有些问题有很多评论,并且很难跟上它。这些细节对维护者很有用。在AI的帮助下,此行动将尝试解决Thies。

我是如何构建它的(您是如何利用GitHub Action或Github代码?

这是我的第一个自定义GitHub动作,我学到了很多有关它的工作方式的知识。我发现GitHub动作是自动执行许多任务的非常有用的工具。我的项目同时使用了GitHub API和OpenAI API。

测试自定义的github动作可能很难。与常规代码不同,Github上需要某些事情才能正确工作。这使得难以检查一切是否正常,尤其是当您只能依靠GitHub内的日志进行调试时。值得庆幸的是,我在一些挣扎之后发现了一个名为act的工具。此工具使您可以在本地运行GitHub操作,这使得测试变得更加容易,更快。这是用于开发github动作的真正改变游戏规则。

我还使用了项目存储库中的GitHub操作来构建打字稿代码并将其推到“最新”分支。因为我不想将node_modules和Dist保留在主分支中。我还发布了一个版本和测试工作流程。

发展过程充满了学习和挑战。它使我对GitHub行动,AI及其提高生产率和效率的潜力有了更深入的了解。

其他资源/信息

我收到了Kris的宝贵改进建议,谢谢!

未来计划:

  • 添加更多占位符
  • 添加对更多OpenAI模型的支持
  • 通过将其分成多个块来添加对冗长上下文的支持
  • 实验其他用例以扩展应用程序范围
  • 不断改进提示以增强用户体验