」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Infusion 文件產生 CLI 工具

Infusion 文件產生 CLI 工具

發佈於2024-11-08
瀏覽:625

Infusion docs generation cli tool

Infusion 是一个开源工具,用于在代码文件中生成文档。它使用OpenAI gpt-4模型来编写注释。这是我的项目,我用 Python 编写的。

GitHub 链接:
https://github.com/SychAndrii/infusion

explainer.js 是一个开源工具,用于解释代码文件中的代码片段。它使用 Groq 模型来编写注释。这是我的队友 @aamfahim 的一个项目,他用 Node.JS 编写的

GitHub 链接:
https://github.com/aamfahim/explainer.js

我目前正在塞内卡理工学院参加一门开源课程,我们的任务是与另一个人合作,审查彼此的代码,并使用 GitHub 问题提出一些改进建议。我将描述这个过程。

沟通方式

两个存储库生成的大多数问题都是通过 Discord 调用使​​用同步通信完成的。之后,我们使用 Discord 消息进行异步交谈,因为使用 bash 脚本简化项目设置对我来说是一个困难的问题,并且每次我需要测试它是否在他的机器上运行时都打电话给我的队友似乎没有必要。在我的机器上使用 Docker 容器和 WSL Linux 子系统进行的测试与在 Al 的系统上进行的测试不同,它突出显示了重要的错误。

审查某人代码的经历

在检查队友的代码时,我没有遇到任何异常情况,因为我有丰富的 Node.JS 开发经验。我喜欢创造问题,然后立即提出解决方案。我们遇到的一个问题是,我们无法找到一种方法让我在我创建的问题上贴上标签,只有 Al 可以做到,这很烦人。

有人审查我的代码的经历

Al 提出了很大的改进空间,特别是在安装我的 CLI 工具方面。当他第一次分叉我的存储库时,最终用户需要手动安装特定版本的 python,这绝对是一项令人沮丧的任务。此外,他还强调了为了方便使用工具而可能进行的其他改进,例如引入 .env 文件,这样您就不必在每次启动该工具时输入 API 密钥。我喜欢从其他人那里获取对我的代码的输入,因为它使我能够成长为一名开发人员,并且它无疑扩展了我对开发生命周期的看法。

审查和测试期间的问题

我们遇到的大部分问题都与我的工具有关,因为 Al 的 CLI 程序是用 Node.JS 编写的,而且我们都有很多使用它的经验。相比之下,我们都不喜欢Python生态系统,所以我们在与它交互时遇到了很多麻烦。在测试 Al 的存储库时,我发现他的 README 中编写的文档具有误导性或难以理解,尤其是模型和 api-key 选项。我们必须经历反复试验的过程,才能确定他的工具接受哪些 API 密钥和模型。在测试我的存储库时,Al 系统上的 python 版本非常过时(2.7),因此他必须手动安装 3.10.6(使用我的工具所需的版本)。然而,即便如此,问题并没有结束。尽管他安装了它,但我的工具使用 pipelinev 创建的虚拟环境仍然无法识别它。此后,我们每次启动工具时都对输入使用该工具所需的 API 密钥感到沮丧。最后,自述文件对安装没有帮助。我们试图遵循它们,但我们不断收到与 PATH 上无法识别的某些脚本相关的错误。就在那时,我决定我们需要某种自动化工具来为您完成所有安装。我的一个想法是对应用程序进行 docker 化,但随后它需要我以某种方式将 Docker 卷映射到为我的工具指定的输出目录和输入文件,这将使一切变得更加复杂。因此,我记得很多包管理器实际上是命令行工具,如果您通过克隆 GitHub 存储库来安装它们,那么您需要通过执行某种 bash 设置脚本来设置它们。这就是我决定实施的想法。最后,我们都无法找到一种方法来为我们提交的问题分配错误或增强等标签。

我提交的问题

https://github.com/aamfahim/explainer.js/issues/13
https://github.com/aamfahim/explainer.js/issues/12
https://github.com/aamfahim/explainer.js/issues/11
https://github.com/aamfahim/explainer.js/issues/10
https://github.com/aamfahim/explainer.js/issues/9

总结我发现的问题,它们主要涵盖了该项目的自述文件中编写的选项实际上不起作用,或者它们的工作方式被误导性描述的情况。

在我的存储库中提交的问题

https://github.com/SychAndrii/infusion/issues/11
https://github.com/SychAndrii/infusion/issues/10
https://github.com/SychAndrii/infusion/issues/9
https://github.com/SychAndrii/infusion/issues/8

总结一下我的存储库中发现的问题,它们主要与我的工具使用的便利性有关。此外,当您向我的工具提供语法正确的源代码的文件时,存在一个错误,它会将其识别为不包含有效源代码的文件。

我设法解决的问题

我解决了所有问题。所有这些问题都花了不到 30 分钟的时间来修复,但有一个问题,我花了 2-3 个小时才修复:
https://github.com/SychAndrii/infusion/issues/8

这看起来很奇怪,因为自述文件的增强应该很容易实现,但是 Al 的第一个建议要求我完全重新制作我的工具的安装过程,这需要我引入 2 个安装脚本 - 一个用于 bash 和一个用于 Powershell。我大部分时间无法解决的问题是,即使这些安装脚本正确安装了所需版本的python,但该版本的python并没有传递到虚拟环境,您需要在使用我的工具之前进入虚拟环境。最终,我解决了这个问题。

我学到了什么

我确实提高了我的 README 技能。我提供示例用法的方式让最终用户感到非常困惑。此外,我终于使用 bash 和 powershell 语言自己做了一些事情,不是为了学校作业,不是因为这是一项要求,而是因为我想简化与我的工具交互的过程。最后,我决定面对我绝对无法忍受的语言——那就是Python。使用它对我来说绝对不是一件愉快的事,但我认为如果你今天想找到工作,能够使用它是至关重要的,尤其是在人工智能趋势方面。

版本聲明 本文轉載於:https://dev.to/sych_andrii/infusion-docs-generation-cli-tool-ipg?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何在 PHP 中從子網域中提取網域?
    如何在 PHP 中從子網域中提取網域?
    在PHP 中從子域中提取域名在當代Web 開發中,必須解析和檢索域名,甚至是從子域中解析和檢索網域名稱。一個簡單的範例可能包括諸如“here.example.com”或“example.org”之類的網域。為了滿足這一需求,我們提出了一個全面的 PHP 函數,旨在從任何給定的輸入中提取根域名。 結合...
    程式設計 發佈於2024-11-08
  • 如何在多執行緒程式設計中連接向量以獲得最佳效率?
    如何在多執行緒程式設計中連接向量以獲得最佳效率?
    連結向量:深入分析在多執行緒程式設計中,合併結果是一個常見的挑戰。這通常涉及將多個向量組合成單一綜合向量。讓我們探索連接向量以獲得最大效率的最佳方法。 最佳連接方法為了高效的向量連接,最佳實踐是利用保留和插入方法:AB.reserve(A.size() B.size()); // Preallo...
    程式設計 發佈於2024-11-08
  • 如何優化FastAPI以實現高效的JSON資料回傳?
    如何優化FastAPI以實現高效的JSON資料回傳?
    FastAPI 傳回大型 JSON 資料的最佳化透過 FastAPI 傳回大量 JSON 資料集可能是一項耗時的任務。為了解決這個瓶頸,我們探索提高效能的替代方法。 識別瓶頸:使用 json.dumps 將 Parquet 檔案解析為 JSON 的初始方法( ) 和 json.loads() 效率低...
    程式設計 發佈於2024-11-08
  • React:狀態 X 派生狀態
    React:狀態 X 派生狀態
    什麼是派生狀態?考慮文字的一種狀態,然後考慮大寫文字的另一種狀態。 匯出狀態 function Foo() { const [text, setText] = useState('hello, za warudo!'); const [uppercaseText, ...
    程式設計 發佈於2024-11-08
  • 如何使用自訂使用者類型將 PostgreSQL JSON 欄位對應到 Hibernate 實體?
    如何使用自訂使用者類型將 PostgreSQL JSON 欄位對應到 Hibernate 實體?
    將 PostgreSQL JSON 欄位對應到 Hibernate 實體使用 PostgreSQL 資料庫時,常常會遇到以 JSON 格式儲存資料的資料列。為了使用 Hibernate 有效地將這些欄位對應到 Java 實體,選擇適當的資料類型至關重要。 在這種情況下,目前的問題圍繞著將 Postg...
    程式設計 發佈於2024-11-08
  • 確保整個團隊的 Node.js 版本一致
    確保整個團隊的 Node.js 版本一致
    .nvmrc 和 package.json 綜合指南 在現今動態的開發環境中,跨不同專案管理多個 Node.js 版本通常是一項複雜且容易出錯的任務。 Node.js 版本不一致可能會導致許多問題,從意外行為到應用程式完全失敗。 利用 .nvmrc 檔案進行版本控制 在專案中保持一...
    程式設計 發佈於2024-11-08
  • 何時在 JavaScript Promise 中使用 Promise.reject 與 Throw?
    何時在 JavaScript Promise 中使用 Promise.reject 與 Throw?
    JavaScript Promise:Reject 與Throw 之謎使用JavaScript Promise 時,開發人員經常面臨一個困境:他們是否應該使用Promise . reject 或者只是拋出一個錯誤?雖然這兩種方法具有相似的目的,但關於它們的差異和潛在優勢仍然存在混淆。 探索相似之處最...
    程式設計 發佈於2024-11-08
  • 建立 Chrome 擴充功能:快速概述
    建立 Chrome 擴充功能:快速概述
    模组——修改? 如果您喜欢游戏,您就会知道没有什么比玩模组游戏更好的了。这是您最喜欢的游戏,但具有额外的功能、功能和乐趣。现在,想象一下为您的网络浏览体验带来同样的兴奋。这正是浏览器扩展的作用——它们就像浏览器的模组,以您从未想过的方式增强浏览器的功能。 通过 Chrome 扩展程序,您可以调整浏览...
    程式設計 發佈於2024-11-08
  • 如何使用 CSS 設定表格列寬?
    如何使用 CSS 設定表格列寬?
    設定表格列寬表格通常用於呈現表格數據,但調整列寬對於確保可讀性和正確性至關重要結盟。在本文中,我們將探討如何使用 CSS 設定表格列的寬度。 使用 CSS 寬度屬性的方法表格列的寬度可以使用 col 元素的 width 屬性進行設定。寬度值可以以像素為單位指定(例如 width: 200px;),也...
    程式設計 發佈於2024-11-08
  • 如何從 Python 中的巢狀函數存取非局部變數?
    如何從 Python 中的巢狀函數存取非局部變數?
    存取嵌套函數作用域中的非局部變數在Python 中,嵌套函數作用域提供對封閉作用域的訪問。但是,嘗試修改巢狀函數內封閉範圍內的變數可能會導致 UnboundLocalError。 要解決此問題,您有多種選擇:1。使用 'nonlocal' 關鍵字 (Python 3 ):對於 Pyt...
    程式設計 發佈於2024-11-08
  • 使用 CSS 將漸層應用於文字。
    使用 CSS 將漸層應用於文字。
    文字漸變 現在你可以在很多地方看到像文字漸變這樣的好技巧......但是呢?你有沒有想過它們是如何製作的?今天就讓我來教你。 .text-gradient { background: linear-gradient(-25deg, #5662f6 0%, #7fffd4 10...
    程式設計 發佈於2024-11-08
  • 如何在Python中執行自訂區間舍入?
    如何在Python中執行自訂區間舍入?
    Python 中捨入為自訂間隔在 Python 中,內建 round() 函數通常用於對數值進行舍入。然而,它採用以 10 為基數的捨入方案,這可能並不總是適合特定要求。例如,如果您想將數字四捨五入到最接近的 5 倍數,則標準 round() 函數不合適。 要解決此問題,可以建立自訂函數,將數值四捨...
    程式設計 發佈於2024-11-08
  • 項目 注意字串連接效能
    項目 注意字串連接效能
    1。使用運算子 ( ) 連接字串: 使用運算子連接字串對於少量連接來說很方便,但由於字串的不變性,在大規模操作時會出現效能問題。 每次建立新字串時,都會複製所有先前字串的內容,從而導致大型連接的時間成二次方。 不正確的例子(與 重複連接): public String criaFatura(Li...
    程式設計 發佈於2024-11-08
  • 如何解決 Wamp 伺服器中的橘色圖示問題:識別服務故障並對其進行故障排除
    如何解決 Wamp 伺服器中的橘色圖示問題:識別服務故障並對其進行故障排除
    解決Wamp Server 中頑固的橙色圖標解決Wamp Server 中頑固的橙色圖標在Web 開發領域,WampServer 圖標旁邊出現橙色圖標可以成為令人沮喪的橙色路障。此持久性圖示通常表示啟動 Apache 或 MySQL 服務失敗,使您陷入開發困境。 識別罪魁禍首:Apache 或 My...
    程式設計 發佈於2024-11-08
  • 網路基礎知識
    網路基礎知識
    In the world of system design, networks are the glue that binds different components together. Whether you're building a web application, a distribute...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3